一种外部安全内存装置及系统级芯片SOC
技术领域
本发明属于数据加密处理技术领域,具体涉及一种外部安全内存装置及系统级芯片SOC。
背景技术
AMD公司的安全加密虚拟化(security encryption virtual ization)技术通过对虚拟机所使用的物理内存进行加密,而且不同的虚拟机使用不同的密钥,这样可以保证在运行时即使hypervisor(虚拟机管理程序)也不能看到虚拟机的内存。
但是这个方案有如下安全方面的隐患:
SEV是对虚拟机内存页面做加密保护,但是并不能保证数据的完整性。
虚拟机使用的内存由宿主机提供,因此虽然内存内容是被加密的,但是宿主机上的恶意程序能够通过重放攻击,密文冲突攻击等方法修改加密后的数据,由于缺乏保护数据完整性的机制,虚拟机无法知晓,这样黑客就能够达到恶意入侵虚拟机数据的目的。
在计算机系统中,数据是存放在内存中,而内存虽然对用户态程序是专用资源,但是对操作系统而言是公共资源,当操作系统被攻破时,内存的安全性就无法保证了。因此如何保证存放在内存中的数据的安全是一个难题。
发明内容
为了解决SEV技术中数据存储在内存中不安全的技术问题,本发明提供一种外部安全内存装置及系统级芯片SOC。
本发明提供一种外部安全内存装置,所述装置包括:
外部安全内存装置本体;
外部安全内存,其位于所述外部安全内存本体内部,所述外部安全内存通过外部安全内存接口进行初始化,并将处理模块数据存储在其内部。
此外,本发明还提供一种系统级芯片SOC,所述SOC包括:
SOC本体;
如上所述外部安全内存装置,所述外部安全内存装置位于所述SOC本体外部;
其中,所述SOC以及外部安全内存事先通过数字签名相互验证身份以及密钥协商算法协商出密钥;
所述SOC通过总线从所述外部安全内存读取或写入数据,并通过与所述数据对应的密钥将所述数据进行解密或加密。
所述密钥协商算法包括Diffie-Hel lman算法或国密SM2算法。
所述SOC以及外部安全内存均设置有加解密引擎单元,所述加解密引擎单元用于所述SOC以及外部安全内存事先通过数字签名相互验证身份以及密钥协商算法协商出密钥。
在所述传输的数据尾部,还添加了对数据正文的HMAC,SOC和外部安全内存通过对HMAC的校验。
所述SOC和外部安全内存均设置有随机数生成单元,所述随机数生成单元用于产生随机数,并将该随机数混入到密钥中,生成新的密钥,所述SOC使用该密钥进行对数据进行解密或加密。
使用本发明提供的一种外部安全内存装置及系统级芯片SOC克服了SEV技术中数据存储在内存中不安全的技术问题
附图说明
图1为本发明实施例提供的一种外部安全内存装置结构示意图;
图2为本发明实施例提供的一种及系统级芯片SOC结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,本发明实施例提供一种外部安全内存装置,所述装置包括:外部安全内存装置本体以及外部安全内存1。
其中,外部安全内存1位于所述外部安全内存装置本体内部,所述外部安全内存通过外部安全内存接口进行初始化,并将处理模块数据存储在其内部。
对外部安全内存的使用提供以下的接口:
1、初始化安全内存–safe_memory_ini t;
2、分配指定大小的空间–safe_memory_al locate。
在本发明实施例中,在初始化过程中,调用者可以将代码或数据复制到分配到的外部安全内存1中,然后通过数字签名来保证复制到安全内存中的代码或数据是安全的。
当外部安全内存1初始化完毕后,指令或数据一直保存在外部安全内存1的内部,供调用者使用,SOC不提供接口直接修改安全内存中的内容,在外部安全内存1中的代码能够修改安全内存中事先分配好的数据,即使被分配到同一个外部安全内存中的两段不同的代码,由于得到不同的授权,也可能无法相互访问,因此可以认为外部安全内存1是安全和可信任的。
此外,如图2所示,本发明实施例还提供一种系统级芯片SOC,所述SOC包括:
SOC本体,该SOC本体包括一个或多个核21或22;
如上所述外部安全内存装置,所述外部安全内存装置位于所述SOC本体外部;
其中,所述SOC以及外部安全内存23事先通过数字签名相互验证身份以及密钥协商算法协商出密钥;
所述SOC通过总线从所述外部安全内存读取或写入数据,并通过与所述数据对应的密钥将所述数据进行解密或加密。
具体地,如图2所示,所述SOC以及外部安全内存23均设置有加解密引擎单元(crypto engine)4a以及24b,所述加解密引擎单元24a以及24b用于所述SOC以及外部安全内存23事先通过数字签名相互验证身份以及密钥协商算法协商出密钥。
在所述传输的数据尾部,还添加了对数据正文的HMAC,SOC和外部安全内存23通过对HMAC的校验,保护了数据的完整性。
所述SOC和外部安全内存23分别设置有随机数生成单元(random generator)25a以及25b,所述随机数生成单元用于产生随机数,并将该随机数混入到密钥中,生成新的密钥,所述SOC使用该密钥进行对数据进行解密或加密。
外部安全内存在初始化时需要SOC所在芯片事先通过数字签名相互验证身份以及密钥协商算法进行握手,产生共享密钥,此后双方利用共享密钥对传输的数据进行加密和完整性保护。在本发明实施例中,密钥协商算法包括Diffie-Hel lman算法或国密SM2算法。
由于SOC访问外部安全内存23需要通过总线,因此为防止恶意程序通过总线窃取数据,在SOC和外部安全内存之间的数据必须要加密后传输。
由于外部安全内存23在初始化完成后,和SOC建立了共享密钥,此后所有通讯都只能基于这事先约定的共享密钥,而数据传输时是加密的,且经过了完整性保护,所以这时其它没有经过授权的软硬件都无法解密和篡改这数据而不被发现,因此可以认为外部安全内存是安全和可信任的。而无论SOC或者外部安全内存23,在生产这些安全硬件后都需要对硬件进行数字签名,从而在机器启动时双方可以通过对方的证书列表相互验证身份的可靠性。
当SOC读取外部安全内存时1,SOC与外部安全内存23随机数生成单元25a以及25b,随机数生成单元25a以及25b在每次使用后会自动加一,外部安全内存23用共享密钥和随机数生成单元25b产生一个派生密钥将数据加密并发给SOC。SOC收到后,使用相同的随机数生成单元25a和共享密钥产生相同的派生密钥后解密,并使用数据。反之,在SOC向外部安全内存23写数据时也有类似过程。同时,在传输的数据尾部,还添加了对数据正文的完整性保护,比如使用HMAC,接收方通过对HMAC的校验,保护了数据的完整性。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,本发明中SOC数量包括但不限于上述实施例,可以多个SOC访问同一个外部安全内存,或者是一个SOC访问多个外部安全内存。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上该的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。