具有硬盘加密功能的芯片组以及主机控制器的制造方法_2

文档序号:9489690阅读:来源:国知局
y2两部分组成。硬盘扇区号i经过加密运算硬件212与密钥DEK_key2结合后,是由模乘组件216与常数aj结合,模乘结果T是经模加组件218与未解密的读取数据C(即「密文」,图1以Data_Encrypted标号)结合,模加结果cc经过解密运算硬件214与密钥DEK_keyl结合后,产生的数据pp将由模加组件220与模乘结果T结合,获得解密的读取数据p(即「明文」,图1以Data标号)。图2B是以XTS-AES解密算法为例说明,但本发明并不限于此,采取其他解密算法也落入本发明欲保护的范围。
[0048]值得注意的是,本发明以硬盘扇区号i与硬盘密钥组合后对写入数据Data进行加密,使得在以数据块(例如扇区)为单位的DMA存取请求中,数据块与数据块之间的加解密不存在相依赖关系,图2A、图2B所描述技术使得不同扇区号的同样数据呈不同加密结果,不易被破解。此外,由于不同扇区号的加密独立,故不同扇区号的未解密数据可独立抽读和解密。
[0049]一种实施方式中,XTS-AES以及XTS-SM4为经由一缓存器位元设定的两种加解密运算选项;XTS-SM4加解密运算的硬件架构与图2A以及图2B类似。XTS-AES加解密技术可通过“efuse”位使能或除能,以符合政策法规。
[0050]此段落讨论硬盘密钥DEK。图3图解一可信赖平台模块(Trusted PlatformModule, TPM) 300,其中包括可信赖平台模块软件302以及硬盘密钥供应硬件304。硬盘密钥供应硬件304即与加解密引擎104连接,供应该加解密引擎104所需的硬盘密钥DEK。可信赖平台模块300可通过统一可扩展固件接口(UEFI)或操作系统(0S)使可信赖平台模块软件302运行,以操作该硬盘密钥供应硬件304产生硬盘密钥DEK。
[0051]此段落讨论硬盘密钥供应硬件304以及加解密引擎104之间的通讯安全。一种实施方式中,加解密引擎104是遵循一密钥交换协议(例如,Diff ie-Hellman密钥交换协议)与该硬盘密钥供应硬件304通讯。图4为硬盘密钥交换协议的流程图。步骤S402,加解密引擎104与硬盘密钥供应硬件304确定一密钥交换密钥(Key Exchange Key,KEK)。步骤S404,硬盘密钥供应硬件304将硬盘密钥DEK以该密钥交换密钥ΚΕΚ加密后,传输给该加解密引擎104。步骤S406,加解密引擎104利用自身计算的密钥交换密钥ΚΕΚ解密出硬盘密钥DEK。加解密引擎104即是以流程所示步骤自硬盘密钥供应硬件304安全获得硬盘密钥DEK。
[0052]硬盘密钥供应硬件304以及加解密引擎104之间的通讯封闭性也可以硬件架构实现。一种实施方式中,加解密引擎104是与硬盘密钥供应硬件304封装在一起。一种实施方式中,加解密引擎104是与硬盘密钥供应硬件304制作在同一芯片上。一种实施方式中,由北桥以及南桥组成的芯片组100是将该储存装置主控制器102、该加解密引擎104、以及该硬盘密钥供应硬件304制作在南桥内。以上封闭的通信环境保证硬盘密钥DEK不会暴露在外部总线或者接口,使得硬盘密钥供应硬件304以及加解密引擎104之间允许以明文(非加密)方式通讯。
[0053]一种实施方式中,该加解密引擎104对该硬盘密钥供应硬件304的硬盘密钥DEK要求是在该硬盘密钥供应硬件304确认使用者设定的辨识条件满足后才由该硬盘密钥供应硬件304受理。密码、智能卡(smart card)、指纹、远程认证(remote attestat1n)、用户身份(user identity)、系统状态(system status)都可作为由使用者设定的辨识条件。辨识条件可由UEFI或OS型式运作的可信赖平台模块软件302作设定。
[0054]—种实施方式中,可信赖平台模块300还利用密钥迀移(key migrat1n)技术对硬盘密钥DEK作加密备份。
[0055]以下特别讨论芯片组100如何对串行高级技术附件(SATA)的储存装置108作加解密。SATA硬盘(对应108)可为机械硬盘(HDD)或固态硬盘(SDD)。芯片组100可设计对SATA硬盘108作全硬盘加密或特定逻辑地址(例如,LBA)的部分硬盘加密,此可由芯片组100经由基本输入输出系统(B1S)设定。加解密引擎104可采用XTS-AES或XTS-SM4等加密算法,以逻辑地址(如,LBA)为调整(tweak,对应第2A图、第2B图的硬盘扇区号i)。硬盘扇区尺寸(sector size)例如为512字节或4K字节。
[0056]图5Α为SATA硬盘写入的流程图。步骤S502,SATA控制器(对应102)解析收到的写入指令(如WRITE DMA EXT),得到包括逻辑地址(如LBA)以及扇区数量(sectorcount)的写入指令信息Cmd_Info,并将其提供给加解密引擎104作加密请求。步骤S504,加解密引擎104向硬盘密钥供应硬件304索取硬盘密钥DEK。步骤S506,硬盘密钥供应硬件304确认用户预先定义条件满足后,供应硬盘密钥DEK。步骤S508,SATA控制器102接收到激活允许(例如,直接内存存取所定义的激活允许DMA Activate Frame Informat1nStructure, DMA Activate FIS)后,将未加密的写入数据Data转发给加解密引擎104 (例如,以数据块DATA FIS为单位转发,一DATA FIS可包括多个扇区,一个DMA指令可包括多个DATA FIS写入),即,加解密引擎104从SATA控制器102接收未加密的写入数据Data (例如,以数据块DATA FIS为单位接收)。步骤S510,加解密引擎104基于硬盘密钥DEK及写入指令信息Cmd_Info将未加密的写入数据Data加密,并将加密后的写入数据Data_Encrypted转发给SATA控制器102 ;加解密引擎104可继续加密下一笔DATA FIS,直至不再从SATA控制器102接收到数据。步骤S512,SATA控制器102将加密后的写入数据Data_Encrypted写入SATA硬盘108。步骤S514,后续的硬盘状况(Status传输)是由SATA控制器102不经加解密引擎104传回上层软件。在一实施例中,SATA控制器102及加解密引擎104会循环执行步骤S508至S514,直至完成该写入指令所指示的所有DATA FIS的加密。
[0057]图5B为SATA硬盘读取的流程图。步骤S522,SATA控制器102解析收到的读取指令,得到包括逻辑地址(如LBA)以及扇区数量(sector count)的读取指令信息Cmd_Info,并将其提供给加解密引擎104作解密请求。步骤S524,加解密引擎104向硬盘密钥供应硬件304索取硬盘密钥DEK。步骤S526,硬盘密钥供应硬件304确认用户预先定义条件满足后,供应硬盘密钥DEK。步骤S528,SATA控制器102将SATA硬盘108的未解密的读取数据Data_Encrypted转发给加解密引擎104 (例如,以所述数据块DATA FIS为单位转发),SP,加解密引擎104从SATA控制器102接收未解密的读取数据Data_Encrypted(例如,以数据块DATA FIS为单位接收)。步骤S530,加解密引擎104基于硬盘密钥DEK及读取指令信息Cmd_Info将未解密的读取数据Data_Encrypted解密,并将解密的读取数据Data转发给SATA控制器102 ;加解密引擎104可继续解密下一笔DATA FIS,直至不再从SATA控制器102接收到数据。步骤S532,SATA控制器102将解密的读取数据Data传回上层软件。步骤S534,后续的硬盘状况(Status传输)是由SATA控制器102不经加解密引擎104传回上层软件。在一实施例中,SATA控制器102及加解密引擎104会循环执行步骤S528至S534,直至完成该读取指令所指示的所有DATA FIS的解密。
[0058]SATA传输还可用于原生指令排序(Native Command Queue, NCQ)的DMA技术。
[0059]图6为采用NCQ DMA的SATA硬盘写入流程图。步骤S602,SATA控制器102解析收到的写入指令(如WRITE FPDMA QUEUED),得到其标签(TAG,使遵循NCQ的多个写入指令或多个读取指令得以区别)、以及包括逻辑地址(如LBA)、与扇区数量与尺寸(sector countand size)的写入指令信息Cmd_Info。步骤S604,SATA硬盘108接收到NCQ指令后,会向主机发出状态信息(Register D2H FIS),以允许还接收下一条NCQ指令。SATA硬盘108也可能切换去处理其他优先权更高、或者先前接收到的NCQ指令。步骤S606,SATA硬盘108在处理以标签(TAG)识别的指令前,对主机发出DMA设定(DMA Setup FIS)以及激活信息(DMAACTIVE FIS)。步骤S608,SATA控制器102自DMA设定信息解析出标签,找出对应的DMA缓冲器(DMA buffer)以及写入指令信息Cmd_Info,并将其提供给加解密引擎104作加密请求。步骤S610,加解密引擎104向硬盘密钥供应硬件304索取硬盘密钥DEK。步骤S612,硬盘密钥供应硬件304确认用户预先定义条件满足后,供应硬盘密钥DEK。步骤S614,SATA控制器102将未加密的写入数据Data转
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1