发明内容
有鉴于此,本申请实施例提供一种芯片、计算设备及数据存储方法,能够提高数据的安全性。
第一方面,本申请实施例提供一种芯片,包括处理器核心、安全处理器和非易失性存储器;其中,所述安全处理器与所述处理器核心连接,所述非易失性存储器与所述安全处理器连接;所述安全处理器,用于将待存储数据写入所述非易失性存储器,或者从所述非易失性存储器中读取存储数据。
根据本申请实施例的一种可实现方式,所述非易失性存储器包括加解密引擎和第一数据存储区;其中,所述第一数据存储区为读写存储区;所述加解密引擎,用于对所述安全处理器待存储的第一数据进行加密后,存储至所述第一数据存储区,或者对所述第一数据存储区中存储的加密数据解密后发送给所述安全处理器。
根据本申请实施例的一种可实现方式,所述非易失性存储器还包括第二数据存储区;其中,所述第二数据存储区为只写存储区;所述加解密引擎,还用于对所述安全处理器待存储的第二数据进行加密后,存储至所述第二数据存储区;其中所述第二数据的安全等级高于所述第一数据的安全等级。
根据本申请实施例的一种可实现方式,所述非易失性存储器还包括第一认证码存储区;所述第一认证码存储区,用于存储写入所述第一数据存储区的第一数据的消息认证码;和/或,用于存储写入所述第二数据存储区的第二数据的消息认证码;其中,所述第一数据的消息认证码基于加密后的第一数据和消息认证码密钥计算得到;所述第二数据的消息认证码基于加密后的第二数据和消息认证码密钥计算得到。
根据本申请实施例的一种可实现方式,所述非易失性存储器还包括第二认证码存储区;所述第二认证码存储区,用于存储所述第一认证码存储区中存储的所述消息认证码的根消息认证码。
根据本申请实施例的一种可实现方式,还包括协处理器,所述协处理器分别与所述安全处理器和所述非易失性存储器连接;所述协处理器向所述非易失性存储器发送数据获取请求,所述数据获取请求中携带有要获取数据的存储地址;所述非易失性存储器基于所述存储地址从所述第一数据存储区或第二数据存储区中获取相应数据,并将所述数据通过所述加解密引擎解密后发送给所述协处理器;或者,所述协处理器将待存储数据向所述非易失性存储器发送,所述非易失性存储器通过所述加解密引擎,对所述待存储数据加密后,存入所述第一数据存储区和/或第二数据存储区。
根据本申请实施例的一种可实现方式,所述非易失性存储器还包括安全防护单元,用于对所述芯片内部的目标物理运行参数进行检测,并在所述目标物理运行参数超出预设范围阈值时,停止所述安全处理器的运行。
第二方面,本申请实施例提供一种计算设备,所述计算设备包括芯片和外部非易失性存储器,所述外部非易失性存储器位于所述芯片外部且与所述芯片连接;其中,所述芯片为本申请实施例任一可实现方式中所述的芯片;其中,所述外部非易失性存储器包括外部数据存储区和第三认证码存储区;所述第三认证码存储区,用于存储所述安全处理器写入所述外部数据存储区的数据的消息认证码。
根据本申请实施例的一种可实现方式,所述外部非易失性存储器还包括计数区,所述计数区用于存储所述安全处理器在所述外部数据存储区写入数据的写入次数。
第三方面,本申请实施例提供一种数据存储方法,应用于芯片,所述芯片包括处理器核心、安全处理器和非易失性存储器;所述安全处理器与所述处理器核心连接,所述非易失性存储器与所述安全处理器连接;所述方法包括:所述安全处理器,将待存储数据写入所述非易失性存储器,或者从所述非易失性存储器中读取存储数据。
根据本申请实施例的一种可实现方式,所述安全处理器,将待存储数据写入所述非易失性存储器,包括:所述安全处理器将待存储的第一数据发送给所述非易失性存储器,所述非易失性存储器将所述第一数据加密后写入所述非易失性存储器中的第一数据存储区;其中,所述第一数据存储区为读写存储区;所述安全处理器,从所述非易失性存储器中读取存储数据,包括:所述安全处理器,从所述非易失性存储器中读取经过解密后的存储数据。
根据本申请实施例的一种可实现方式,所述方法还包括:对所述安全处理器待存储的第二数据进行加密后,存储至所述非易失性存储器中的第二数据存储区;其中所述第二数据的安全等级高于所述第一数据的安全等级。
根据本申请实施例的一种可实现方式,所述方法还包括:根据所述安全处理器预先生成的消息认证码密钥,对加密后的第一数据,采用预定算法计算所述第一数据的消息认证码,并将所述第一数据的消息认证码存储在所述非易失性存储器中的第一认证码存储区;和/或,根据所述安全处理器预先生成的消息认证码密钥,对加密后的第二数据,采用预定算法计算所述第二数据的消息认证码,并将所述第二数据的消息认证码存储在所述非易失性存储器中的第一认证码存储区。
根据本申请实施例的一种可实现方式,所述芯片还包括协处理器;所述方法还包括:接收安全处理器或协处理器发出的第一数据读取请求;基于所述第一数据读取请求,读取所述第一数据;根据所述消息认证码密钥及所述第一数据,采用预定算法,计算所述第一数据的当前消息认证码;将所述当前消息认证码与所述第一数据的消息认证码进行对比;若两者一致,则将所述第一数据发送给所述安全处理器或协处理器;或者,接收协处理器发出的第二数据读取请求;基于所述第二数据读取请求,读取所述第二数据;根据所述消息认证码密钥及所述第二数据,采用预定算法,计算所述第二数据的当前消息认证码;将所述当前消息认证码与所述第二数据的消息认证码进行对比;若两者一致,则将所述第二数据发送给所述协处理器。
根据本申请实施例的一种可实现方式,所述方法还包括:根据所述安全处理器预先生成的消息认证码密钥,以及所述第一数据的消息认证码、所述第二数据的消息认证码,采用预定算法计算所述第一数据的消息认证码及所述第二数据的消息认证码的根消息认证码。
根据本申请实施例的一种可实现方式,所述芯片还包括协处理器;在采用预定算法计算所述第一数据的消息认证码及所述第二数据的消息认证码的根消息认证码之后,所述方法还包括:接收安全处理器或协处理器发出的第一数据读取请求;读取所述第一数据的消息认证码及所述第二数据的消息认证码;根据所述消息认证码密钥及所述第一数据的消息认证码及所述第二数据的消息认证码,采用预定算法,计算所述第一数据的消息认证码及所述第二数据的消息认证码的当前根消息认证码;将所述当前根消息认证码与所述根消息认证码进行对比;若两者一致,则基于所述第一数据读取请求,读取所述第一数据;根据所述消息认证码密钥及所述第一数据,采用预定算法,计算所述第一数据的当前消息认证码;将所述当前消息认证码与所述第一数据的消息认证码进行对比;若两者一致,则将所述第一数据发送给所述安全处理器或协处理器;或者,接收协处理器发出的第二数据读取请求;读取所述第一数据的消息认证码及所述第二数据的消息认证码;根据所述消息认证码密钥及所述第一数据的消息认证码及所述第二数据的消息认证码,采用预定算法,计算所述第一数据的消息认证码及所述第二数据的消息认证码的当前根消息认证码;将所述当前根消息认证码与所述根消息认证码进行对比;若两者一致,基于所述第二数据读取请求,读取所述第二数据;根据所述消息认证码密钥及所述第二数据,采用预定算法,计算所述第二数据的当前消息认证码;将所述当前消息认证码与所述第二数据的消息认证码进行对比;若两者一致,则将所述第二数据发送给所述协处理器。
根据本申请实施例的一种可实现方式,所述芯片还包括协处理器;所述方法还包括:所述协处理器向所述非易失性存储器发送数据获取请求,所述数据获取请求中携带有要获取数据的存储地址;所述非易失性存储器基于所述存储地址从所述第一数据存储区或第二数据存储区中获取相应数据,并将所述数据通过所述非易失性存储器中的加解密引擎解密后发送给所述协处理器;或者,所述协处理器将待存储数据向所述非易失性存储器发送,所述非易失性存储器通过所述非易失性存储器中的加解密引擎,对所述待存储数据加密后,存入所述第一数据存储区和/或第二数据存储区。
根据本申请实施例的一种可实现方式,所述非易失性存储器还包括安全防护单元;所述方法还包括:所述安全防护单元对所述芯片内部的目标物理运行参数进行检测,并在所述目标物理运行参数超出预设范围阈值时,停止所述安全处理器的运行。
根据本申请实施例的一种可实现方式,所述芯片外部连接有外部非易失性存储器;其中,在所述安全处理器将待存储的第一数据写入所述非易失性存储器之后,所述方法还包括:根据所述安全处理器预先生成的消息认证码密钥,对所述外部非易失性存储器的数据存储区中预先存储的加密后的第三数据,采用预定算法,计算所述第三数据的消息认证码,并将所述第三数据的消息认证码存储在所述外部非易失性存储器中的第三认证码存储区。
根据本申请实施例的一种可实现方式,在将所述第三数据的消息认证码存储在所述外部非易失性存储器中的第三认证码存储区之后,所述方法还包括:接收安全处理器或协处理器发出的第三数据读取请求;基于所述第三数据读取请求,读取所述第三数据;根据所述消息认证码密钥及所述第三数据,采用预定算法,计算所述第三数据的当前消息认证码;将所述当前消息认证码与所述第三数据的消息认证码进行对比;若两者一致,则将所述第三数据发送给所述安全处理器或协处理器。
根据本申请实施例的一种可实现方式,在所述安全处理器将待存储的第三数据写入所述外部非易失性存储器之后,所述方法还包括:累加计算在所述外部非易失性存储器中写入数据的写入次数,并保存所述写入次数。
本申请实施例提供一种芯片,在芯片内部为安全处理器设置专用非易失性存储器,以用于存储安全处理器写入的数据或者需要读取的数据。这样一来,由于非易失性存储器直接与安全处理器连接,安全处理器向非易失性存储器中写入数据或者从非易失性存储器中读取数据时,无需通过公用的总线,降低了数据被非法窃取的风险,并且由于非易失性存储器处于芯片内部,相比于外部非易失性存储器,降低了外部设备非法读取数据的风险,因而提高了数据的安全性。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
第一方面,本申请实施例提供一种芯片,能够提高数据的安全性。
如图1所示,本申请实施例提供的芯片1,可以包括:处理器核心11、安全处理器12和非易失性存储器13;其中,安全处理器12与处理器核心11连接,非易失性存储器13与安全处理器12连接;安全处理器12,用于将待存储数据写入非易失性存储器13,或者从非易失性存储器13中读取存储数据。
在本申请实施例中,处理器核心11用于完成所有的计算、接受/存储命令、处理数据等,是芯片1的信号处理核心。安全处理器12是一种旨在帮助芯片1实现安全存储的处理器。
易失性存储器需要持续供电才能保留数据,易失性存储器也可以具体分为静态易失性存储器以及动态易失性存储器。其中,静态易失性存储器只要保持通电,不需要刷新电路即能保存它内部存储的数据;而动态易失性存储器每隔一段时间,要刷新充电一次,否则内部的数据即会消失。因此静态易失性存储器具有较高的性能,功耗较小。
而非易失性存储器即使在断电后也能保留存储的信息。非易失性存储器主要是用来存放固定数据、固件程序等一般不需要经常改动的数据。因此,本申请实施例中的非易失性存储器13可用于长期保存数据,而静态易失性存储器14只能用于暂时保存数据。
本申请实施例中的非易失性存储器13具体可以为EEPROM(ElectricallyErasable Programmable Read-Only Memory,电可擦编程只读存储器)、MRAM(Magneto-Resistive Random Access Memory,磁阻式随机存取存储器)、FLASH(闪存)、FRAM(Ferroelectric RAM,铁电存储器)等种类。
在一个例子中,安全处理器12可以通过控制总线15以及数据总线16与处理器核心11电连接,在另一个例子中,安全处理器12也可以通过通信方式与控制总线15相连接;此外,在一个例子中,安全处理器12可以通过线路与非易失性存储器13电连接,在另一个例子中,安全处理器12也可以通过通信方式与非易失性存储器13相连接,以便于安全处理器12通过专有连接线向非易失性存储器13中存取数据。
本申请实施例提供一种芯片,在芯片内部为安全处理器设置有专用非易失性存储器,以用于存储安全处理器写入的数据或者需要读取的数据。这样一来,由于非易失性存储器直接与安全处理器连接,安全处理器向非易失性存储器中写入数据或者从非易失性存储器中读取数据时,无需通过公用总线,降低了数据被非法窃取的风险,并且由于非易失性存储器处于芯片内部,相比于外部非易失性存储器,降低了外部设备非法读取数据的风险,因而提高了数据的安全性。
可选的,在本申请的一个实施例中,如图2所示,非易失性存储器13可以包括加解密引擎131和第一数据存储区132;其中,第一数据存储区132为读写存储区;加解密引擎131,用于对安全处理器12待存储的第一数据进行加密后,存储至第一数据存储区132,或者对第一数据存储区132中存储的加密数据解密后发送给安全处理器12。
在本申请实施例中,第一数据可以为需要存储的任意适于存储的数据,本申请实施例对此不作限定。
第一数据存储区132可以为读写存储区,既可以方便地向第一数据存储区132中写入数据,也可以直接从第一数据存储区132中读取数据,相比于只写存储区类型,采用读写存储区对数据进行存储时,虽然便于对数据进行读写操作,但是并不利于对数据进行保密。相应的,可以采用第一数据存储区132存储安全等级较低的数据,也即本申请实施例中第一数据可以为安全等级较低的数据。
为了进一步提高数据的安全性,在将第一数据存储至非易失性存储器13中的读写存储区132中之前,可以先对第一数据进行加密,例如,在安全处理器12将第一数据写入读写存储区时,安全处理器12可以首先根据自身的硬件标识采用第一私有算法生成密钥A(即图2中示出的加密密钥),其中,第一私有算法可以为任一预先约定的加密算法,私有加密算法的私有性可以保证密钥A的保密性。进而可以将密钥A传输给加解密引擎131,加解密引擎131可以利用密钥A对第一数据进行加密,并将加密数据存储至读写存储区中。这样一来,经过前述的加密过程,第一数据以加密形式写入至读写存储区中,即使加密数据被窃取,也不会被解密,从而进一步提高了向非易失性存储器13写入数据过程的安全性。
类似的,当安全处理器12利用加解密引擎131存储区中读取加密存储数据时,安全处理器12可以根据自身硬件标识以及第一私有算法生成密钥B,并利用密钥B对加密数据进行解密,获得解密数据。可以理解的是,由于安全处理器12在向读写存储区中写入数据生成的密钥A,与安全处理器12从读写存储区中读取数据时所利用的安全处理器12的硬件标识以及第一私有算法是完全一致的,因此密钥A和密钥B是相同的,这样就保证了可以利用安全处理器12生成的加密密钥B,对从读写存储区中读取的加密数据进行解密。这就使得在读取加密数据过程中,即使加密数据被窃取,也不会被解密,从而进一步提高了从非易失性存储器13中读取数据过程的安全性。
由此可见,在安全处理器12向读写存储区中写入数据以及读取数据的过程中,数据都是以加密数据的形式存在的,相比于非加密的明文数据,能够显著提高数据的安全性。
非易失性存储器13除了包括第一数据存储区132之外,在本申请的一个实施例中,非易失性存储器13还可以包括第二数据存储区133;其中,第二数据存储区133为只写存储区;加解密引擎131,还用于对安全处理器12待存储的第二数据进行加密后,存储至第二数据存储区133;其中所述第二数据的安全等级高于所述第一数据的安全等级。
其中,第一数据存储区132可以为读写存储器,第二数据存储区133可以为只写存储区,只写存储区中的数据只有协处理器具有获取权限,其他部分(包括处理器核心以及安全处理器)均不具有获取权限,因此第二存储器133中存储的数据比第一数据存储器132中存储的数据更难被窃取,因此也更加安全。相应的,可以通过加解密引擎131将安全等级较高的数据(如各种密钥数据,以及其他高度机密数据)进行加密后存储至只写存储区中,以进一步提高这些数据的存储安全性。
可选的,在本申请的一个实施例中,如图2所示,非易失性存储器13还可以包括第一认证码存储区134;第一认证码存储区134,用于存储写入第一数据存储区132的第一数据的消息认证码(Message Authentication Code,MAC),消息验证码也可以称为MAC值;和/或,用于存储写入第二数据存储区133的第二数据的MAC值;其中,第一数据的MAC值基于加密后的第一数据和MAC密钥计算得到;第二数据的MAC值基于加密后的第二数据和MAC密钥计算得到。
其中,消息认证码主要作用有两方面:第一,进行消息认证,证明消息的真实性,如消息确实来源于所声称的发送方;第二,保护消息数据的完整性,拥有密钥的接收方可发现对消息内容的任何篡改。
具体而言,可以从消息摘要(消息的哈希值)说起,消息摘要可以做到防止需要传输的信息被恶意篡改。例如,我们从互联网上下载一个文件,有的网站会提供该文件的摘要值,我们只要将下载下来的文件用同样的摘要算法计算出消息摘要值,然后与接收到的消息摘要值进行比对,即可判别下载的文件是否被篡改过。因此,消息摘要可以帮助我们判别传输消息的消息完整性。
然而有些情况,我们不仅需要保证传输消息的消息完整性,还需要确认消息发送者的身份。例如一个转账消息,消息不仅需要不被篡改,还需要确认消息发送者是否是合法的。这时候仅仅依靠消息摘要就做不到了,采用消息认证码即可实现对消息完整性进行确认,并对消息发送者的身份进行验证。
简而言之,可以将消息认证码看做是引入了密钥的消息摘要算法,使用消息认证码的具体过程是:假设通信双方A和B共享密钥MAC_Key(即MAC密钥),A用消息认证码算法根据MAC_Key和消息M计算出消息认证码X,具体方法可以为,利用MAC_Key采用消息认证码算法(具体可以为国密SM3算法)计算出消息认证码X,然后将消息认证码X和消息M一起发送给B,B接收到消息认证码X和消息M后,利用M和MAC_Key计算出新的消息认证码X*,若X*和X相等则验证成功,证明消息未被篡改且消息发送者为A。
在本申请实施例中,在将第一数据写入至读写存储区之后,还可以计算第一数据的MAC值,并将该MAC值存储至第一认证码存储区134中,这样可以根据第一数据的MAC值,对第一数据的消息完整性以及第一数据的发送者身份进行验证,从而能够进一步提高存储的第一数据的安全性。同理,还可以在第一认证码存储区134中存储写入至第二数据存储器区133的第二数据的MAC值,用以对第二数据的消息完整性以及第二数据的发送者身份进行验证,从而能够进一步提高存储的第二数据的安全性。
可选的,在本申请的一个实施例中,如图2所示,非易失性存储器13还可以包括第二认证码存储区135;第二认证码存储区135,用于存储第一认证码存储区134中存储的所述MAC值的根MAC值。
在本申请实施例中,为了便于对第一认证码存储区134中存储的所有MAC值进行验证(消息完整性验证以及发送方身份验证),可以对第一认证码存储区134中存储的所有MAC值的根MAC值进行计算,并将根MAC值写入到第二认证码存储区135,从而可以及时发现MAC值被篡改以及发送方身份不合法的情况,因此可以提高第一认证码存储区134中MAC值的安全性,进而提高了第一数据存储区和第二数据存储区中存储数据的安全性。
在首次使用非易失性存储器13时,可以由安全处理器12对其进行初始化处理。具体的,安全处理器12可以向非易失性存储器13中写入全部为0的初始数据。进而,由非易失性存储器13的加解密引擎131在第一数据存储区(或者第二数据存储区)写入加密后的初始化数据,并计算对应的MAC值,写入第一认证码存储区(MAC区),然后对MAC区中所有MAC值计算根MAC,写入第二认证码存储区(根MAC区),从而完成对非易失性存储器13的初始化处理,清除非易失性存储器13中存储的原有数据。在初始化过程之后,可以执行向非易失性存储器13中存储数据的操作。
可选的,在本申请的一个实施例中,如图2以及图3所示,芯片1中还可以包括协处理器17,协处理器17分别与安全处理器12和非易失性存储器13连接;协处理器17向非易失性存储器13发送数据获取请求,所述数据获取请求中携带有要获取数据的存储地址;非易失性存储器13基于所述存储地址从第一数据存储区132或第二数据存储区133中获取相应数据,并将所述数据通过加解密引擎131解密后发送给协处理器17;或者,协处理器17将待存储数据向非易失性存储器13发送,非易失性存储器13通过加解密引擎131,对所述待存储数据加密后,存入所述第一数据存储区132和/或第二数据存储区133。
在本申请实施例中,芯片1中还设置有协处理器17,在一个例子中,协处理器17可以分别与安全处理器12以及非易失性存储器13通过线路电连接,在另一个例子中,协处理器17可以分别与安全处理器12以及非易失性存储器13以通信方式相连接,第二数据存储区133(只写存储区)中的数据只有协处理器17才具有获取权限。在读取只写存储区中存储的数据时,安全处理器12直接将数据的存储地址发送给协处理器17,协处理器17在接收到数据存储地址之后,可以向非易失性存储器13发出携带数据存储地址的数据获取请求,非易失性存储器13在接收到上述请求之后,可以根据数据存储地址读取相应数据,并将读取到数据发送给协处理器17,这样协处理器17即可获得只写存储区中存储的数据。
类似的,协处理器17在将数据存储至第一数据存储区132和/或第二数据存储区133之中时,可以将待存储数据向非易失性存储器13发送,非易失性存储器13通过加解密引擎131,对待存储数据加密后,可以将加密数据存入第一数据存储区132和/或第二数据存储区133之中。
可选的,在本申请的一个实施例中,如图2所示,非易失性存储器13还可以包括安全防护单元136,用于对芯片1内部的目标物理运行参数进行检测,并在所述目标物理运行参数超出预设范围阈值时,停止安全处理器12的运行。
在本申请实施例中,可以在非易失性存储器13中设置安全防护单元136,其可以对芯片1的物理运行的电压、温度、频率等目标物理参数进行检测,当芯片1遭受物理攻击时,安全防护单元136可以向芯片1中设置的电源管理模块发送相关指令,以使得电源管理模块切断对安全处理器12的供电,停止安全处理器12的运行。同时,安全防护单元136还可以对非易失存储区13中的敏感数据进行清除,避免了敏感数据被窃取,从而提高了芯片存储数据的安全性。
第二方面,本申请实施例提供一种计算设备,能够提高数据的安全性。
如图4以及图5所示,本申请实施例提供的计算设备,可以包括芯片1和外部非易失性存储器2,外部非易失性存储器2位于芯片1外部且与芯片1连接;其中,芯片1为前述任一本申请实施例中所述的芯片1;外部非易失性存储器2可以包括外部数据存储区21和第三认证码存储区22;第三认证码存储区22,用于存储安全处理器12写入外部数据存储区21的数据的MAC值。
在本申请实施例中,有关芯片1的内容可以参见前述实施例中的描述,在此不再赘述。此外需要说明的是,图5中的ENC_KEY_EXT为用于对写入外部数据存储区21的数据进行加密的加密密钥,HW_id为安全处理器12的硬件标识,且ENC_KEY_EXT是安全处理器12根据HW_id生成的。另外,图5中的MAC_KEY_EXT可以为安全处理器生成的MAC密钥,用于生成写入第三认证码存储区中的数据的消息认证码,MAC_KEY_EXT同样是安全处理器12根据HW_id生成的。
在一个例子中,外部非易失性存储器2可以与芯片1通过线路电连接,在另一个例子中,两者也可以通过通信方式相连接。芯片1可以将待存储的数据写入到外部数据存储区21中,之后还可以将上述数据的MAC值至写入到第三认证码存储区22中,以便于对写入外部数据存储区21的数据进行消息完整性验证以及对数据发送方身份进行验证,进而可以及时发现数据被篡改以及数据发送方的身份不合法的情况,从而提高了外部数据的安全性。
可以理解的是,在本申请实施例中,还可以将待存储数据存储至静态易失性存储器14以及动态易失性存储器3中,并对存储的数据进行读取操作。
可选的,在本申请的一个实施例中,如图5所示,外部非易失性存储器2还可以包括计数区23,计数区23用于存储安全处理器12在外部数据存储区21写入数据的写入次数。
在本申请实施例中,当安全处理器12向外部非易失性存储器2写入数据时,可以首先从计数器23中读取计数值,并将计数值与需要写入的数据一起写入到外部非易失性存储器2,外部非易失性存储器2将接收到的计数值与计数区的计数值相对比,如果一致,则将上述数据写入到外部非易失性存储器2中的外部数据存储区21中,并将计数值进行加一操作,以实现对外部非易失性存储器2中写入数据的写入次数进行累加计算。这样,就可以防止安全处理器12将旧数据回滚写入到外部数据存储区21中,确保了存储数据的正确性。
此外,为了防止外部非易失性存储器被恶意替换并进而对数据进行窃取,可以将安全处理器12的标识与外部非易失性存储器2之间建立绑定关系,这样在安全处理器12向外部非易失性存储器2写入或者读取数据时,可以相互对对方的标识进行验证,在验证通过之后,再进行数据的写入或者读取操作,从而进一步提高了存取数据过程的安全性。
第三方面,本申请实施例提供一种数据存储方法,应用于芯片,所述芯片可以包括处理器核心、安全处理器和非易失性存储器;所述安全处理器与所述处理器核心连接,所述非易失性存储器与所述安全处理器连接;本申请实施例提供的数据存储方法可以包括:所述安全处理器,将待存储数据写入所述非易失性存储器,或者从所述非易失性存储器中读取存储数据。
本申请实施例中的芯片的相关内容可以参照前述实施例中的描述,在此不再赘述。
在一个例子中,安全处理器可以与非易失性存储器通过线路电连接,在另一个例子中,两者可以通过通信方式相连接,以便于安全处理器从非易失性存储器中存取数据。这样,由于在芯片内部为安全处理器设置有专用非易失性存储器,以用于存储安全处理器写入的数据或者需要读取的数据。非易失性存储器直接与安全处理器连接,安全处理器向非易失性存储器中写入数据或者从非易失性存储器中读取数据时,无需通过公用总线,降低了数据被非法窃取的风险,并且由于非易失性存储器处于芯片内部,相比于外部非易失性存储器,降低了外部设备非法读取数据的风险,因而提高了数据的安全性。
可选的,在本申请的一个实施例中,如步骤S11所示,所述安全处理器,将待存储数据写入所述非易失性存储器,可以包括:所述安全处理器将待存储的第一数据发送给所述非易失性存储器,所述非易失性存储器将所述待存储的第一数据加密后写入所述非易失性存储器中的第一数据存储区;其中,所述第一数据存储区为读写存储区;所述安全处理器,从所述非易失性存储器中读取存储数据,可以包括:所述安全处理器,从所述非易失性存储器中读取经过解密后的存储数据。
在本申请实施例中,待存储的第一数据可以为需要存储的任意适于存储的数据,本申请实施例对此不作限定。
第一数据存储区可以为读写存储区,既可以方便地向第一数据存储区中写入数据,也可以直接从第一数据存储区中读取数据,相比于只写存储区类型,采用读写存储区对数据进行存储时,虽然便于对数据进行读写操作,但是并不利于对数据进行保密。相应的,可以采用第一数据存储区存储安全等级较低的数据,也即本申请实施例中待存储数据可以为安全等级较低的数据。
为了进一步提高数据的安全性,在将数据存储至非易失性存储器中的读写存储区中之前,可以先对上述数据进行加密,例如,在安全处理器将数据写入读写存储区时,安全处理器可以首先根据自身的硬件标识采用第一私有算法生成密钥A,其中,第一私有算法可以为任一预先约定的加密算法,私有加密算法的私有性可以保证密钥A的保密性。进而可以利用密钥A对待存储数据进行加密,并将加密数据存储至读写存储区中。这样一来,经过前述的加密过程,待存储数据以加密形式写入至读写存储区中,即使加密数据被窃取,也不会被解密,从而进一步提高了向非易失性存储器写入数据过程的安全性。
类似的,当安全处理器从读写存储区中读取加密存储数据时,安全处理器可以根据自身硬件标识以及第一私有算法生成密钥B,并利用密钥B对加密数据进行解密,获得解密数据。可以理解的是,由于安全处理器在向读写存储区中写入数据生成的密钥A,与安全处理器从读写存储区中读取数据时所利用的安全处理器的硬件标识以及第一私有算法是完全一致的,因此密钥A和密钥B是相同的,这样就保证了可以利用安全处理器生成的加密密钥B,对从读写存储区中读取的加密数据进行解密。这就使得在读取加密数据过程中,即使加密数据被窃取,也不会被解密,从而进一步提高了从非易失性存储器中读取数据过程的安全性。
这样一来,在安全处理器向读写存储区中写入数据以及读取数据的过程中,数据都是以加密数据的形式存在的,相比于非加密的明文数据,能够显著提高数据的安全性。
可选的,在本申请的一个实施例中,如图6所示,本申请实施例提供的数据存储方法在上述步骤S11之后还可以包括:步骤S12,对所述安全处理器待存储的第二数据进行加密后,存储至所述非易失性存储器中的第二数据存储区;其中所述第二数据的安全等级高于所述第一数据的安全等级。
在本申请实施例中,第二数据存储区可以为只写存储区,只写存储区中的数据只有协处理器具有获取权限,其他部分(包括处理器核心以及安全处理器)均不具有获取权限,因此第二存储器中存储的数据比第一数据存储器中存储的数据更难被窃取,因此也更加安全。相应的,可以将安全等级较高的数据(如各种密钥数据以及其他高度机密数据)进行加密之后存储至只写存储区,以进一步提高数据的安全性。
可选的,在本申请的一个实施例中,如图7中所示,本申请实施例提供的数据存储方法在步骤S11和步骤S12之后,还可以包括:
S13,根据所述安全处理器预先生成的MAC密钥,对加密后的第一数据,采用预定算法计算所述第一数据的MAC值,并将所述第一数据的MAC值存储在所述非易失性存储器中的第一认证码存储区;
S14,根据所述安全处理器预先生成的MAC密钥,对加密后的第二数据,采用预定算法计算所述第二数据的MAC值,并将所述第二数据的MAC值存储在所述非易失性存储器中的第一认证码存储区;
此外,本申请实施例还可以不同时包括步骤S13和步骤S14,而是仅包括步骤S13或者步骤S14。
其中,消息认证码的相关内容已经在前述实施例中进行过详细描述,在此不再赘述。
在本申请实施例中,在将加密后第一数据写入至读写存储区之后,还可以根据安全处理器预先生成的MAC密钥以及预设的MAC算法对前述的加密后的第一数据进行计算,获得第一数据的MAC值,并将该MAC值存储至第一认证码存储区中,这样可以根据第一数据的MAC值,对第一数据的消息完整性以及第一数据的发送者身份进行验证,从而能够进一步提高存储的第一数据的安全性。同理,还可以在第一认证码存储区中存储写入至第二数据存储器区的第二数据的MAC值,用以对第二数据的消息完整性以及第二数据的发送者身份进行验证,从而能够进一步提高存储的第二数据的安全性。
可选的,在本申请的一个实施例中,如图8所示,本申请实施例提供的数据存储方法还可以包括:
S15A,接收安全处理器或协处理器发出的第一数据读取请求;
S16A,基于所述第一数据读取请求,读取所述第一数据;
S17A,根据所述MAC密钥及所述第一数据,采用预定算法,计算所述第一数据的当前MAC值;
S18A,将所述当前MAC值与所述第一数据的MAC值进行对比;
S19A,若两者一致,则将所述第一数据发送给所述安全处理器或协处理器。
其中,安全处理器和协处理器都具有读取读写存储区中数据的权限,而只有协处理器才具有读取只写存储区中数据的权限。
在本申请实施例中,对于存储于读写存储区中的第一数据,非易失性存储器在接收到安全处理器或协处理器发出的第一数据读取请求时,可以从读写存储区中根据请求中携带的存储地址,对第一数据进行读取,并根据安全处理器预先生成的MAC密钥及第一数据,采用预定的MAC算法,计算第一数据的当前MAC值,并将当前MAC值与第一数据在第一认证码存储区中的MAC值进行对比。若两者相一致,则表明第一数据并未被篡改,且发送方身份合法,因此可以将第一数据发送给安全处理器或协处理器,从而实现了对读写存储区中数据的读取操作。
如图9所示,在本申请的另一个实施例中,本申请实施例提供的数据存储方法还可以包括:
S15B,接收协处理器发出的第二数据读取请求;
S16B,基于所述第二数据读取请求,读取所述第二数据;
S17B,根据所述MAC密钥及所述第二数据,采用预定算法,计算所述第二数据的当前MAC值;
S18B,将所述当前MAC值与所述第二数据的MAC值进行对比;
S19B,若两者一致,则将所述第二数据发送给所述协处理器。
与本申请的上一实施例相类似,对于存储于只写存储区中的第二数据,非易失性存储器在接收到协处理器发出的第二数据读取请求时,可以从只写存储区中根据请求中携带的存储地址,并根据存储地址,对第二数据进行读取,进而根据安全处理器预先生成的MAC密钥及第二数据,采用预定的MAC算法,计算第二数据的当前MAC值,并将当前MAC值与第二数据在第一认证码存储区中的MAC值进行对比。若两者相一致,则表明第二数据并未被篡改,且发送方身份合法,因此可以将第二数据发送给协处理器,从而实现了协处理器对读写存储区中数据的读取操作。
可选的,在本申请的一个实施例中,如图7所示,本申请实施例提供的数据存储方法在步骤S14之后还可以包括:根据所述安全处理器预先生成的MAC密钥,以及所述第一数据的MAC值、所述第二数据的MAC值,采用预定算法计算所述第一数据的MAC值及所述第二数据的MAC值的根MAC值。
在本申请实施例中,为了便于对第一认证码存储区中存储的所有MAC值进行验证(消息完整性验证以及发送方身份验证),可以根据安全处理器预先生成的MAC密钥,采用预设的MAC算法(具体可以为哈希算法)对第一认证码存储区中存储的所有MAC值(包括第一数据的MAC值以及第二数据的MAC值)的根MAC值进行计算,并将根MAC值写入到非易失性存储器的第二认证码存储区,从而可以及时发现第一认证码存储区中的MAC值被篡改以及发送方身份不合法的情况,因此可以提高第一认证码存储区中MAC值的安全性,进而提高了第一数据存储区和第二数据存储区中存储数据的安全性。
可选的,在本申请的一个实施例中,所述芯片还可以包括协处理器;在采用预定算法计算所述第一数据的MAC值及所述第二数据的MAC值的根MAC值这一步骤之后,如图10所示,本申请实施例提供的数据存储方法还可以包括:
S31A,接收安全处理器或协处理器发出的第一数据读取请求;
S32A,读取所述第一数据的MAC值及所述第二数据的MAC值;
S33A,根据安全处理器预先生成的MAC密钥及所述第一数据的MAC值及所述第二数据的MAC值,采用预定算法,计算所述第一数据的MAC值及所述第二数据的MAC值的当前根MAC值;
S34A,将所述当前根MAC值与所述根MAC值进行对比;
S35A,若两者一致,则基于所述第一数据读取请求,读取所述第一数据;
S36A,根据所述MAC密钥及所述第一数据,采用预定算法,计算所述第一数据的当前MAC值;
S37A,将所述当前MAC值与所述第一数据的MAC值进行对比;
S38A,若两者一致,则将所述第一数据发送给所述安全处理器或协处理器;
其中,安全处理器和协处理器都具有读取读写存储区中数据的权限,而只有协处理器才具有读取只写存储区中数据的权限。
在本申请实施例中,为了进一步提高数据的安全性,可以首先采用根MAC值对第一认证码存储区中的所有MAC值进行消息完整性验证以及发送方身份验证。然后再利用第一数据的MAC值对第一数据进行消息完整性验证以及发送方身份验证。
具体的,对于存储于读写存储区中的第一数据,非易失性存储器在接收到安全处理器或协处理器发出的第一数据读取请求时,可以从第一认证码存储区读取所有数据的MAC值(包括第一数据的MAC值及第二数据的MAC值),并采用预定的MAC算法,计算上述所有数据的MAC值的当前根MAC值,并将当前根MAC值与第二认证码存储区中的根MAC值进行对比。若两者相一致,则表明第一认证码存储区中的所有数据的MAC值并未被篡改,且发送方身份合法。进一步的,可以利用第一数据的MAC值,对读取的第一数据的消息完整性以及发送方的身份进行验证,且验证过程已经在之前的实施例中进行了详细描述,此处不再赘述。在验证结果符合预期的情况下,可以将第一数据发送给请求方安全处理器或协处理器。如图11所示,在采用预定算法计算所述第一数据的MAC值及所述第二数据的MAC值的根MAC值这一步骤之后,本申请实施例提供的数据存储方法还可以包括:S31B,接收协处理器发出的第二数据读取请求;
S32B,读取所述第一数据的MAC值及所述第二数据的MAC值;
S33B,根据所述MAC密钥及所述第一数据的MAC值及所述第二数据的MAC值,采用预定算法,计算所述第一数据的MAC值及所述第二数据的MAC值的当前根MAC值;
S34B,将所述当前根MAC值与所述根MAC值进行对比;
S35B,若两者一致,基于所述第二数据读取请求,读取所述第二数据;
S36B,根据所述MAC密钥及所述第二数据,采用预定算法,计算所述第二数据的当前MAC值;
S37B,将所述当前MAC值与所述第二数据的MAC值进行对比;
S38B,若两者一致,则将所述第二数据发送给所述协处理器。
在本申请实施例中,为了进一步提高数据的安全性,可以首先采用根MAC值对第一认证码存储区中的所有MAC值进行消息完整性验证以及发送方身份验证。然后再利用第二数据的MAC值对第二数据进行消息完整性验证以及发送方身份验证。
具体的,对于存储于只写存储区中的第二数据,非易失性存储器在接收到协处理器发出的第二数据读取请求时,可以从第一认证码存储区读取所有数据的MAC值(包括第一数据的MAC值及第二数据的MAC值),并采用预定的MAC算法,计算上述所有数据的MAC值的当前根MAC值,并将当前根MAC值与第二认证码存储区中的根MAC值进行对比。若两者相一致,则表明第一认证码存储区中的所有数据的MAC值并未被篡改,且发送方身份合法。进一步的,可以利用第二数据的MAC值,对读取的第二数据的消息完整性以及发送方的身份进行验证,且验证过程已经在之前的实施例中进行了详细描述,此处不再赘述。在验证结果符合预期的情况下,可以将第二数据发送给请求方协处理器。可选的,在本申请的一个实施例中,所述芯片还可以包括协处理器;本申请实施例提供的数据存储方法还可以包括:所述协处理器向所述非易失性存储器发送数据获取请求,所述数据获取请求中携带有要获取数据的存储地址;所述非易失性存储器基于所述存储地址从所述第一数据存储区或第二数据存储区中获取相应数据,并将所述数据通过所述非易失性存储器中的加解密引擎解密后发送给所述协处理器;或者,所述协处理器将待存储数据向所述非易失性存储器发送,所述非易失性存储器通过所述加解密引擎,对所述待存储数据加密后,存入所述第一数据存储区和/或第二数据存储区。
在本申请实施例中,芯片中还可以包括用于加解密功能的协处理器,协处理器既可以从非易失性存储器读取数据,也可以向非易失性存储器的读写存储区或者只写存储区写入数据。具体的,当协处理器从非易失性存储器读取数据时,可以首先向非易失性存储器发送携带数据存储地址数据获取请求(协处理是从安全处理器获得数据存储地址的),非易失性存储器根据数据获取请求中携带的数据存储地址,读取相应的数据并将其发送至加解密引擎,加解密引擎对读取的数据进行解密操作,然后将解密后的数据发送给协处理器。当协处理器向非易失性存储器写入数据时,可以将数据向非易失性存储器发送,非易失性存储器通过加解密引擎对数据进行加密,进而将加密数据存储至读写存储区或者只写存储区。
可选的,在本申请的一个实施例中,所述非易失性存储器还可以包括安全防护单元;本申请实施例提供的数据存储方法还可以包括:所述安全防护单元对所述芯片内部的目标物理运行参数进行检测,并在所述目标物理运行参数超出预设范围阈值时,停止所述安全处理器的运行。
在本申请实施例中,可以在非易失性存储器中设置安全防护单元,其可以对芯片的物理运行的电压、温度、频率等目标物理参数进行检测,当芯片遭受物理攻击时,安全防护单元可以向芯片中设置的电源管理模块发送相关指令,以使得电源管理模块切断对安全处理器的供电,停止安全处理器的运行。同时,安全防护单元还可以对非易失存储区中的敏感数据进行清除,避免了敏感数据被窃取,从而提高了芯片存储数据的安全性。
可选的,在本申请的一个实施例中,所述芯片外部连接有外部非易失性存储器;其中,在所述安全处理器将待存储数据写入所述非易失性存储器之后,本申请实施例提供的数据存储方法还可以包括:根据所述安全处理器预先生成的MAC密钥,对所述外部非易失性存储器的数据存储区中预先存储的加密后的第三数据,采用预定算法,计算所述第三数据的MAC值,并将所述第三数据的MAC值存储在所述外部非易失性存储器中的第三认证码存储区。
在本申请实施例中,芯片除了在内部设置有用于存储数据的非易失性存储器之外,为了进一步扩展存储容量,芯片还可以与外部非易失性存储器通过线路电连接或者以通信方式相连接。相应的,在安全处理器将数据存储至内部的非易失性存储器之后,还可以向外部非易失性存储器中存储数据,具体实现方式可以为:首先向外部非易失性存储器的数据存储区中写入加密的第三数据,然后根据安全处理器预先生成的MAC密钥,采用预定的MAC算法对加密的第三数据进行处理,从而获得第三数据的MAC值,进而可以将第三数据的MAC值写入外部非易失性存储器中的第三认证码存储区,以便于对写入外部非易失性存储器的第三数据进行消息完整性验证以及发送方身份验证,从而能够进一步提高外部存储的第三数据的安全性。
本领域的技术人员可以理解,本申请实施例中的第三数据可以为任意适于存储的数据,此处重在强调其与前述的第一数据以及第二数据为不同的数据。
可选的,在本申请的一个实施例中,在将所述第三数据的MAC值存储在所述外部非易失性存储器中的第三认证码存储区之后,本申请实施例提供的数据存储方法还可以包括:接收安全处理器或协处理器发出的第三数据读取请求;基于所述第三数据读取请求,读取所述第三数据;根据所述MAC密钥及所述第三数据,采用预定算法,计算所述第三数据的当前MAC值;将所述当前MAC值与所述第三数据的MAC值进行对比;若两者一致,则将所述第三数据发送给所述安全处理器或协处理器。
在本申请实施例中,在将第三数据的MAC值存储于外部非易失性存储器中的第三认证码存储区之后,安全处理器或协处理器可以从外部非易失性存储器中读取第三数据时,利用第三数据的MAC值对第三数据的消息完整性以及发送方身份进行验证。
具体而言,外部非易失性存储器在接收到安全处理器或协处理器发出的第三数据读取请求时,外部非易失性存储器可以根据请求中携带的存储地址,对第三数据进行读取,并根据安全处理器预先生成的MAC密钥以及第三数据,采用预定的MAC算法,计算第三数据的当前MAC值,并将当前MAC值与第三认证码存储区中的MAC值进行对比。若两者相一致,则表明第三数据并未被篡改,且发送方身份合法,因此可以将第三数据发送给安全处理器或协处理器,从而实现了安全处理器或协处理器从外部非易失性存储器中读取数据的操作。
可选的,在本申请的一个实施例中,在所述安全处理器将待存储的第三数据写入所述外部非易失性存储器之后,本申请实施例提供的数据存储方法还可以包括:累加计算在所述外部非易失性存储器中写入数据的写入次数,并保存所述写入次数。
在本申请实施例中,当安全处理器向外部非易失性存储器写入数据时,可以首先从计数器中读取计数值,并将计数值与需要写入的数据一起写入到外部非易失性存储器,外部非易失性存储器将接收到的计数值与计数区的计数值相对比,如果一致,则将上述数据写入到外部非易失性存储器中的外部数据存储区中,并将计数值进行加一操作,以实现对外部非易失性存储器中写入数据的写入次数进行累加计算。这样,就可以防止安全处理器将旧数据回滚写入到外部数据存储区中,确保了外部存储的数据的正确性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。