您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > CPK组合公钥技术之我见
1题目CPK组合公钥技术之我见学院:姓名:学号:时间:1CPK组合公钥技术之我见摘要本文不是一篇全面介绍CPK技术的理论性文档,而是笔者结合实际工作经验,对CPK技术及相应的CPKCOS(ChipOnsystem)实现做的一些经验总结和归纳,想使读者通过阅读本文,能够对CPK技术有一个初步的理解和认识。关键词CPKPKI组合公钥1综述在日益复杂的网络环境及社会环境下,安全问题已经渗透到我们生活的方方面面,大到国家的信息完全,小到我们的个人信息安全,信息泄露无处不在,信息安全已经被越来越多的人所重视。这次跟随孙达志老师学习了《密码学与信息安全》的课程,孙老师的课程,与我目前所从事的职业非常的吻合。我虽然涉足信息安全仅仅一年多的时间,但却是从一个全新的密钥体系CPK(CombinedPublicKey组合公钥)密钥体系开始入手的,这个体系目前发展到了V8.0版本,但由于某些原因,还未真正大规模运用,没有更多的产品,对其了解的人还不是很多,所以我很想从我的角度,结合我实际的工作,对CPK技术做一个介绍,也让更多的人来了解CPK,关注CPK,使用CPK。2CPK技术简介CPK组合公钥提供了将现存的公钥体制变为基于标识的公钥体制的一种通用方法。只有基于标识的公钥体制,才能将密钥生成和密钥分发有机统一起来,大大简化了密钥管理,同时为防止量子计算的穷举攻击提供了可能。基于标识的公钥直接应用于标识鉴别(不依赖任何信任关系或第三方),标识鉴别是网际安全(cybersecurity)的核心技术。标识是一个实体的唯一名称,具有公认性,如一个人的真实姓名、电话号码、银行帐号、IP地址等等,因此标识鉴别,不仅能解决人对人的鉴别,也能解决物对物的鉴别。22.1ECC复合定理ECC(椭圆曲线密码学EllipticCurveCryptography)复合定理是CPK技术得以实现的技术基石,是了解CPK技术体系必须了解的内容。组合公钥体制采用有限域P上的椭圆曲线密码,以(a,b,G,n,p)定义。其中a,b定义三次方程y2≡(x3+ax+b)modp,G为加法群的基点,n是以G为基点的群的阶。令任意小于n的整数r为私钥,则rG=R为对应公钥。ECC复合定理如下:在椭圆曲线密码ECC中,任意多对公、私钥,其私钥之和与公钥之和构成新的公、私钥对。如果,私钥之和为:(r1+r2+…+rm)modn=r则对应公钥之和为:R1+R2+…+Rm=R(点加)那么,r和R刚好形成新的公、私钥对。因为,R=R1+R2+…+Rm=r1G+r2G+…+rmG=(r1+r2+…+rm)G=rG2.2标识密钥计算2.2.1组合矩阵组合矩阵分为私钥矩阵和公钥矩阵。矩阵大小均为一般为32x32,可以根据需要进行设计,但32x32大小的矩阵,足以满足一般企业或用户的需要。私钥矩阵由互不相同的小于n的随机数构成,由密钥管理中心(KMC)保存,用于私钥的生成。矩阵中的元素标记rij,私钥矩阵记skmskm=r1,1r1,2…r1,32r2,1r2,2…r2,32……r32,1r32,2…r32,32公钥矩阵由私钥矩阵派生,即ri,jG=(xi,j,yi,j)=Ri,j。公钥矩阵是公开变量,记PKM3PKM=R1,1R1,2…R1,32R2,1R2,2…R2,32……R32,1R32,2…R32,322.2.2标识到矩阵坐标的映射标识到组合矩阵坐标的映射是通过标识的HASH变换实现的。将HASH输出调整成长度为165比特的映射序列YS,以5比特构成w0,w1,…,w32的字符串,决定列坐标与行坐标。YS=HASH(ID)=w0,w1,w2,…,w32;w0的内容u指示列的起始坐标,以后的列坐标是在前列坐标加1实现。w1-w32依次指示行坐标。注:选取SHA1作为HASH算法,SHA1输出的是160bit,取第一字节的低5bit构成w0,形成165bit的映射序列。2.2.3标识密钥计算标识私钥(isk)的计算在KMC进行。设第i次行坐标用wi表示,列坐标(u+i-1)mod32表示,令标识私钥为isk,那么私钥计算以有限域Fn上的倍数加法实现,实体A的私钥为:iskA=321ir[wi,(u+i-1)32]modn公钥计算以椭圆曲线Ep(a,b)上的倍点加法实现,按照复合定理,对应公钥为:IPKA=321iR[wi,(u+i-1)32](点加)2.2.4小节通过密钥计算过程可以知道,只要有了公钥矩阵,便可以根据标识,计算出公钥信息。公钥矩阵一般只有48K,在5.0及以下版本均为公开信息,用户在使用某一用户的公钥信息时,只要知道按照双方约定,利用对方标识(如姓名、手机号、社保卡号等),就可以4按照公钥计算算法,直接计算出公钥信息,公钥可以在企业的局域网系统中存在,在使用时,无需要接入密钥管理中心。在CPK8.0中,公钥矩阵已经直接集成到CPK设备中,算法也被屏蔽,用户无需关心具体细节,边可以直接利用公钥制作数字信封等操作,使用起来更加安全和方便。2.3CPK技术的发展CPK技术从最初的1.0到现在的8.0,在不断的演化与进步中。主要的改进是对标识到矩阵的映射算法,在不同的版本中也不相同,在最新的CPK8.0中,为了进一步提升系统的安全性,引入了置换表和HKey(映射密钥)。在计算标识的SHA1信息时,实际是将HKey(密密级)一并按某种方式引入到了用户标识中,两者合成后才能生成SHA1信息。在映射序列YS到矩阵标识矩阵的取值运算中,CPK8.0中又引入了置换表的概念,使得密钥的生产在多重因素的控制下,变得更加安全而不易被破解。由于CPK技术的特点,CPK组合公钥矩阵非常小,对于192位ECC曲线,一般仅有32*32*48=48K字节的容量,所以在CPK8.0中,将公钥矩阵也直接存储到CPK设备中,所有签名验证以及创建数字信封等需要使用公钥的地方,都直接在芯片内部进行运算,使的企图通过对公钥进行攻击的方式不再可行了。备注:本节中提到的HKey(映射密钥)、置换表以及公钥矩阵都被加密存储到CPK设备中,常规的技术手段很难分析,即使将芯片拆解,也几乎分析不出任何有意的信息。对公钥矩阵大小计算解释如下:32*32为系统选取32*32个随机数生成私钥矩阵元素nij,对应的公钥矩阵元素也为32*32个。48为192位ECC曲线上一个公钥矩阵元素的字节大小,即192bit/8*2=48字节,所以,对于32*32的192bit的ECC算法,公钥矩阵大小为48K。2.4CPK技术优势CPK相对于传统PKI(PublicKeyInfrastructure)体系来讲,主要是对PKI体系的算法进行了改进与优化,使得PKI系统中庞大的CA认证中心得到了很大的精简。CPK的秘钥管理中心可以非常小,仅使用一台普通的计算机或者一个CPK秘钥管理设备即可实现。这个技术实现得意于公私钥矩阵的设计思想。53CPK在COS中的安全控制3.1简介本章主要结合笔者在COS(ChipOperateSystem)开发过程中,对CPK的实际技术实现做一些分析,其目的主要是从COS的设计、实现角度来进一步保证CPK体系及其设备的安全。3.2COS内部文件控制—数据存储安全控制目前CPK8.0的COS实现,由笔者主持开发,笔者将PC系统中的FAT文件系统的设计思想融入到了CPK体系中,这对CPK信息的存储起到了极大的优化,对CPK体系中的数据访问效率方面也做了很大的提升。在文件安全方面,由于采用了FAT文件系统的思想,所有数据都随机分配到Flash中,没有一个固定的位置,且秘密级文件信息的全部加密存储,加密采用多重加密实现,如上文提到的HKey信息,实际存储形式为ER1(HKey),其中E表示加密算法,采用国密技术的SM1算法实现,该算法尚未公开,属于想对安全的算法。R1为加密秘钥,是16字节的随机数数据,在COS第一次烧写完成时生成,R1不直接存储到Flash上,而是使用用户PIN码再做一次加密运算后进行存储EPIN(R1)。R1的密文数据,也是随机存储到Flash中,无法得到准确的存储位置,用户在使用时,需要输入正确的PIN码,才能将R1解开,R1运行时存储在动态RAM中,通过技术手段获取几乎是不可能的。其他秘密级数据的存储于HKey的存储相同,都是双重加密实现,以最大限度的保证数据信息的安全。3.3数据交互安全控制3.3.1普通数据交互CPK设备(运行COS的实体设备或虚拟COS设备)与使用命令与响应的通信机制,即接口设备发送命令,设备接收并处理后发送响应给终端。这种机制包括两种数据单元――命令应用数据单元与响应应用数据单元。终端与COS设备之间的通讯报文称之为APDU(ApplicationProtocolDataUnit),根据7816/IEC-4的定义。命令应用数据单元包含两部分:固定的四个字节命令头和长度可变的命令体,其内容6参见如下表格:命令头命令体CLAINSP1P2LC数据域LECLA字节指出命令的类型。如下表所述:B7B6B5B4B3B2B1B0定义1安全报文传送0不附加安全报文传送1外部命令0内部命令对于常规的数据报文,所有数据都采用明文方式进行传输,无需加密。3.3.2安全数据交互在孙老师的课程中,也讲到了MAC(消息认证码)认证的内容,在我们的CPK技术体系的COS实现中,便用到了这种机制,即安全报文。这种报文主要应用于对APDU报文传输中的机密数据进行认证和加密传输的过程中,以这种方式,来保证CPK设备数据安全。3.3.2.1MAC计算MAC是使用命令中的所有的元素(包含命令头)产生的。MAC是命令数据域中最后一个数据元,它的长度为4个字节。MAC的计算方法如下:1.终端向设备发出一个GetChallenge(取随机书)命令,设备回送的8字节随机数作为初始值。2.按照顺序将以下数据连接在一起形成数据块:——CLA,INS,P1,P2,Lc+4,Data,LE——在命令的数据域中(如果存在)包含明文或加密的数据3.将该数据块分成8字节为单位的数据块,标号为D1,D2,D3,D4等,最后的数据块有可能是1-8个字节。4.如果最后的数据块长度是8字节的话,则在其后加上16进制数字‘80000000007000000’,转到第五步。如果最后的数据块长度不足8字节的话,则在其后加上16进制数字‘80’,如果达到8字节长度,则转入第五步;否则在其后加入16进制数字‘00’直到长度达到8字节。5.对这些数据块使用相应的密钥进行加密,加密算法采用DES。6.最终得到是从计算结果左侧取得的4字节长度的MAC。用8字节密钥进行DES加密D2异或用8字节密钥进行DES加密D3异或用8字节密钥进行DES加密异或D18字节初始值得到8字节计算结果Figure3-1MAC计算流程3.3.2.2数据加密安全报文中的数据加密是指对报文数据域中的数据进行加密,其加密步骤如下:1.用Ld表示明文数据的长度,在明文数据前加上Ld产生新数据块。2.将(1)中生成的数据块分解成8字节数据块,标号为D1,D2,D3,D4等等。最后一个数据块的长度有可能不足8个字节。3.如果最后(或唯一)的数据块长度等于8字节,转入(4);如果不足8字节,在右边添加16进制数字‘80’。如果长度已达8字节,转入(4);否则,在其右边添加16进制数字‘00’直到长度达到8字节。4.对每个数据块用相应的密钥进行DES加密。5.计算结束后,所有加密后的数据块依照原顺序连接在一起(加密后的D1’,加密后的D2’,等等),并将结果数据块插入到命令数据域中。3.3.2.3数据解密数据解密是将通过线路加密方式输出的响应报文数据域中的数据解密,其解密步骤如8下:1.将响应报文数据域中的数据块分解成8字节长的数据块,标号为D1,D2,D3,D4等等。每个数据块使用如下过程进行解密。2.对数据块D1,D2,D3,D4等分别使用加密相同的密钥进行DES解密,得到解密后的数据块D1’,D2’,D3’,D4’等。3.计算结束后,所有解密后的数据块依照顺序(解密后的D1’,解密后的D2
本文标题:CPK组合公钥技术之我见
链接地址:https://www.777doc.com/doc-2906914 .html