一种密码算法的检测方法技术

技术编号:11490588 阅读:99 留言:0更新日期:2015-05-21 11:37
本发明专利技术涉及一种密码算法的检测方法,该方法通过虚拟化平台获取正在运行密码服务的操作系统的内存映像,根据特定密码算法运行时密钥在内存中的特征,确定该系统运行的密码算法。具体可以使用虚拟化平台的内存快照功能获取所述内存映像。本发明专利技术通过虚拟化实现获取操作系统的内存映像,不用直接对密码算法进行二进制分析或者源代码审查,对运行中操作系统的没有任何影响,可以准确获取运行时的系统内存状态行,能够快速、自动的确定系统运行过程中使用的密码算法。

【技术实现步骤摘要】
一种密码算法的检测方法
本专利技术属于计算机技术、信息安全
,具体涉及一种密码算法的检测方法。
技术介绍
计算机系统通过密码技术保护数据的机密性,因此密码算法的强度对数据安全至关重要。在实际的软件密码算法实现中,密码算法往往以黑盒的方式提供服务,实际运行的算法和标称的算法如果不一致,并不影响实际的使用(只要加解密方使用相同的算法);另一方面,如果要确定系统使用的算法,源代码审查和二进制分析都需要一定的人工参与,而且,软件开发者通过混淆技术,可以进一步加大分析的难度。软件开发者使用不同于标称的密码算法有很多动机,第一,对于有性能需求的场合,开发者实现的标称的算法可能达不到预期;第二,某些资源受限环境下,开发者实现的标称算法对资源的需求超过了可用的限度;第三,标称的密码算法的开发成本远远高于已有算法。如果没有工具来检测软件系统实际运行的密码算法,开发者将很容易使用不合规定的密码算法,对系统安全造成危害。因此,通过自动化的分析方法,确定软件系统实际使用的算法,对密码合规性测试至关重要。内存取证工具通常配合物理内存获取工具,可以检测计算机系统的使用痕迹,这包括获取当时系统的进程列表、KPCR(KernelProcessorControlRegion)结构体等数据。由于每个密码算法在运行时,密钥都有一定特点,因此,通过定制化的内存取证工具,可以分析进程的数据,根据密钥特点,确定系统使用的密钥。获取物理内存的方法有很多,比如Linux提供的Kdump功能可以在系统发生错误时快速切换至另一个精简功能的内核,该内核可以把当时的整个物理内存映像拷贝到磁盘中;利用TrustZone技术,可以在隔离的安全运行环境中,把崩溃的普通操作系统的映像拷贝到非易失存储中;还可以利用冷启动攻击(coldbootattack),利用内存芯片的延迟消失效应,重启系统获取物理内存的内容。以上方法对运行中操作系统的影响都是不可恢复的,并且,或者需要更改操作系统,或者依赖硬件,或者实施难度大。同时,有些方法还可能造成少量的数据丢失。虚拟化技术通过在硬件之上模拟出很多相互独立的虚拟平台,可以最大化利用现有的软硬件资源,让企业对用户桌面和服务器进行统一管理。虚拟机监控器作为资源的管理者,可以在不影响客户虚拟机运行的前提下,访问虚拟机的所有资源,这为获取系统内存映像提供了便利。现在主流虚拟化平台都实现了内存快照功能,可以从虚拟机监控器中直接读取虚拟机的内存,而不需打断虚拟机的运行。
技术实现思路
本专利技术针对密码算法的软件实现,提出一种利用虚拟化技术,快速、自动的确定系统运行过程中使用的密码算法的方法。本专利技术的基本思想是利用虚拟机技术提供的内存快照功能,获取整个系统运行时的内存映像文件,然后使用内存分析工具,根据特定密码算法的密钥的特征,确定系统运行的密码算法。现有的虚拟化平台,包括KVM、XEN、Hyper-V、VMwareESX/ESXi等,都在控制台提供了获取虚拟机内存映像的接口,可以直接把内存内容转储到非易失存储中,根据虚拟机内存的不同,整个过程仅需要数分钟。整个过程对虚拟机的运行影响非常小,更不会打断虚拟机的正常运行(比如不需要不断的重启),这样,就可以连续地获得间隔任意时间的多个内存映像,使得检测的覆盖点更加密集,捕捉完整密钥的机会大大增加,也就是说,在不知道密钥出现的确切的时间点的情况下,也可以以很大的概率得到包含完整密钥数据的内存映像。在拥有系统整个内存映像后,就可以通过查找相关的特征,来判断某种特定类似的密钥是否存在,比如,密钥的一个关键特征在于其随机性,因此,只有随机的内存才有可能是密钥。AES算法是目前广泛使用的一种加密算法,是一个迭代的、对称密钥分组的密码,它使用128、192或256位的密钥,分组长度为128位。在使用中,不直接使用原始的AES密钥,而是需要先根据密钥扩展算法生成轮密钥,128位AES密钥需要生成10轮轮密钥,192和256位密钥则分别需要生成12和14轮轮密钥;AES的加解密算法在一个4*4的矩阵中运作,其初值即明文,加密时,根据密钥长度进行若干轮运算,每轮AES循环包含如下4个步骤(除了最后一轮):1.AddRoundKey:矩阵中的每一个字节都与该次轮密钥做异或运算;2.SubBytes:通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节;3.ShiftRows:将矩阵中的每个横列进行循环式移位。4.MixColumns:为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。最后一个循环中省略MixColumns步骤,而用AddRoundKey代替。从原始16字节AES密钥,推导计算出每轮轮密钥的密钥扩展算法过程如下:1.扩展密钥的前Nk个字就是原始密钥K;2.以后的字W[i]等于它前一个字W[i-1]与前第Nk个字W[i-Nk]的异或,即W[i]=W[i-1]^W[i-Nk];3.但是若i为Nk的倍数,则W[i]=W[i-Nk]^Subword(Rotword(W[i-1]))^Rcon[i/Nk];其中:●位置变换(Rotword):把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];●S盒变换(Subword):对一个4字节进行S盒代替;●变换Rcon:Rcon表示32位比特字[x,00,00,00]。这是一个轮常量。由此可见,对于一个AES密钥,其对应的轮密钥是唯一的。对于AES密钥,可以使用以下步骤确定其是否为AES密钥:a)从内存映像的地址addr=0开始,取出前16/24/32字节,假设它是原始AES密钥。b)按照AES轮密钥计算算法,从原始的AES密钥推导出10/12/14轮的轮密钥。c)在假设的原始AES密钥之后的一定范围内,匹配内存映像的内存和在步骤b)中算出来的轮密钥。如果匹配,则可以确定假设的密钥确实是AES密钥;否则假设的密钥不是AES密钥。d)addr=addr+1,跳到步骤a)继续执行,直到遍历整个内存映像。SM4算法则是国家密钥管理局于2012年3月发布的分组密钥标准,每个分组的明文、密钥、密文都是16字节,通过32次循环的非线性迭代轮函数来实现加密和解密,需要32个4字节作为轮密钥。基本过程是首先把16字节密钥按照4字节一组分成4组,然后根据密钥扩展算法,生成32组4字节轮密钥;再把输入的16字节数据也按照4字节一组分成4组然后进行循环运算(这点和AES算法类似)。和AES类似,从SM4的原始密钥,能够确定性地直接计算得到各轮密钥。因此可以使用以下步骤确定内存映像中是否有SM4密钥:a)从内存映像的地址addr=0开始,取出前16字节,假设它是原始SM4密钥。b)按照SM4轮密钥计算算法,从原始的SM4密钥推导出128字节的轮密钥。c)在假设的原始SM4密钥之后的一定范围内,匹配内存映像的内存和在步骤b)中算出来的轮密钥。如果匹配,则可以确定假设的密钥确实是SM4密钥;否则假设的密钥不是SM4密钥。d)addr=addr+1,跳到步骤a)继续执行,直到遍历整个内存映像。用类似的办法也可以确定内存中是否包含DES密钥。与现有技术相比,本专利技术的优点和有益效果如下:1)本专利技术不用直接对密码算法进行二进制分析或者源代码审查本文档来自技高网
...
一种密码算法的检测方法

【技术保护点】
一种密码算法的检测方法,其特征在于,通过虚拟化平台获取正在运行密码服务的操作系统的内存映像,根据特定密码算法运行时密钥在内存中的特征,确定该系统运行的密码算法。

【技术特征摘要】
1.一种密码算法的检测方法,其特征在于,通过虚拟化平台获取正在运行密码服务的操作系统的内存映像,根据特定密码算法运行时密钥在内存中的特征,确定该系统运行的密码算法;所述特定密码算法的密钥在内存中的特征为轮密钥的特征,即原始密钥和轮密钥有特定的对应关系。2.根据权利要求1所述的方法,其特征在于:使用虚拟化平台的内存快照功能获取所述内存映像。3.根据权利要求1所述的方法,其特征在于:调用密码服务,在其开始服务到结束服务的时间内,设定时间间隔以获得多个内存映像,对每一个内存映像分别进行分析。4.根据权利要求1所述的方法,其特征在于:直接调用虚拟机监控器的快照功能,把内存映像转储到非易失存储中。5.根据权利要求1所述的方法,其特征在于,对于AES密钥,使用以下方法进行确定:a)从内存中取出连续的16/24/32字节,假设它是原始AES密钥;b)按照AES轮密钥计算...

【专利技术属性】
技术研发人员:林璟锵王琼霄管乐蔡权伟高能叶顶锋
申请(专利权)人:中国科学院数据与通信保护研究教育中心
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1