CPK组合公钥技术之我见.doc_第1页
CPK组合公钥技术之我见.doc_第2页
CPK组合公钥技术之我见.doc_第3页
CPK组合公钥技术之我见.doc_第4页
CPK组合公钥技术之我见.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目 CPK组合公钥技术 之我见 学院: 姓名: 学号: 时间: 13CPK组合公钥技术 之我见摘 要本文不是一篇全面介绍CPK技术的理论性文档,而是笔者结合实际工作经验,对CPK技术及相应的CPK COS(Chip On system)实现做的一些经验总结和归纳,想使读者通过阅读本文,能够对CPK技术有一个初步的理解和认识。关键词CPK PKI 组合公钥1 综述在日益复杂的网络环境及社会环境下,安全问题已经渗透到我们生活的方方面面,大到国家的信息完全,小到我们的个人信息安全,信息泄露无处不在,信息安全已经被越来越多的人所重视。这次跟随孙达志老师学习了密码学与信息安全的课程,孙老师的课程,与我目前所从事的职业非常的吻合。我虽然涉足信息安全仅仅一年多的时间,但却是从一个全新的密钥体系CPK(Combined Public Key组合公钥)密钥体系开始入手的,这个体系目前发展到了V8.0版本,但由于某些原因,还未真正大规模运用,没有更多的产品,对其了解的人还不是很多,所以我很想从我的角度,结合我实际的工作,对CPK技术做一个介绍,也让更多的人来了解CPK,关注CPK,使用CPK。2 CPK技术简介CPK组合公钥提供了将现存的公钥体制变为基于标识的公钥体制的一种通用方法。只有基于标识的公钥体制,才能将密钥生成和密钥分发有机统一起来,大大简化了密钥管理,同时为防止量子计算的穷举攻击提供了可能。基于标识的公钥直接应用于标识鉴别(不依赖任何信任关系或第三方),标识鉴别是网际安全(cyber security)的核心技术。标识是一个实体的唯一名称,具有公认性,如一个人的真实姓名、电话号码、银行帐号、IP地址等等,因此标识鉴别,不仅能解决人对人的鉴别,也能解决物对物的鉴别。2.1 ECC复合定理ECC(椭圆曲线密码学Elliptic Curve Cryptography)复合定理是CPK技术得以实现的技术基石,是了解CPK技术体系必须了解的内容。组合公钥体制采用有限域P上的椭圆曲线密码,以(a,b,G,n,p)定义。其中a,b定义三次方程y2 ( x3 + ax + b) mod p,G为加法群的基点,n是以G为基点的群的阶。令任意小于n的整数r为私钥,则r G=R为对应公钥。ECC复合定理如下:在椭圆曲线密码ECC中,任意多对公、私钥,其私钥之和与公钥之和构成新的公、私钥对。如果,私钥之和为:( r1 + r2 + + rm ) mod n = r则对应公钥之和为: R1 + R2 + + Rm = R (点加)那么,r和R刚好形成新的公、私钥对。因为,R = R1 + R2 + + Rm = r1G + r2G + rmG = (r1 + r2 + rm) G = r G2.2 标识密钥计算2.2.1 组合矩阵组合矩阵分为私钥矩阵和公钥矩阵。矩阵大小均为一般为32x32,可以根据需要进行设计,但32x32大小的矩阵,足以满足一般企业或用户的需要。私钥矩阵由互不相同的小于n的随机数构成,由密钥管理中心(KMC)保存,用于私钥的生成。矩阵中的元素标记rij,私钥矩阵记skm公钥矩阵由私钥矩阵派生,即ri,jG= (xi,j,yi,j) =Ri,j。公钥矩阵是公开变量,记PKM2.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) mod 32表示,令标识私钥为isk,那么私钥计算以有限域Fn上的倍数加法实现,实体A的私钥为:iskA wi, (u+i-1)32 mod n 公钥计算以椭圆曲线Ep(a,b)上的倍点加法实现,按照复合定理,对应公钥为:IPKAwi,(u+i-1)32 (点加)2.2.4 小节通过密钥计算过程可以知道,只要有了公钥矩阵,便可以根据标识,计算出公钥信息。公钥矩阵一般只有48K,在5.0及以下版本均为公开信息,用户在使用某一用户的公钥信息时,只要知道按照双方约定,利用对方标识(如姓名、手机号、社保卡号等),就可以按照公钥计算算法,直接计算出公钥信息,公钥可以在企业的局域网系统中存在,在使用时,无需要接入密钥管理中心。在CPK 8.0中,公钥矩阵已经直接集成到CPK设备中,算法也被屏蔽,用户无需关心具体细节,边可以直接利用公钥制作数字信封等操作,使用起来更加安全和方便。2.3 CPK 技术的发展CPK技术从最初的1.0到现在的8.0,在不断的演化与进步中。主要的改进是对标识到矩阵的映射算法,在不同的版本中也不相同,在最新的CPK 8.0中,为了进一步提升系统的安全性,引入了置换表和HKey(映射密钥)。在计算标识的SHA1信息时,实际是将HKey(密密级)一并按某种方式引入到了用户标识中,两者合成后才能生成SHA1信息。在映射序列YS到矩阵标识矩阵的取值运算中,CPK 8.0中又引入了置换表的概念,使得密钥的生产在多重因素的控制下,变得更加安全而不易被破解。由于CPK技术的特点,CPK组合公钥矩阵非常小,对于192位ECC曲线,一般仅有32*32*48=48K字节的容量,所以在CPK 8.0中,将公钥矩阵也直接存储到CPK设备中,所有签名验证以及创建数字信封等需要使用公钥的地方,都直接在芯片内部进行运算,使的企图通过对公钥进行攻击的方式不再可行了。备注:本节中提到的HKey(映射密钥)、置换表以及公钥矩阵都被加密存储到CPK设备中,常规的技术手段很难分析,即使将芯片拆解,也几乎分析不出任何有意的信息。对公钥矩阵大小计算解释如下:32*32为系统选取32*32个随机数生成私钥矩阵元素nij,对应的公钥矩阵元素也为32*32个。48为192位ECC曲线上一个公钥矩阵元素的字节大小,即192bit/8*2=48字节,所以,对于32*32的192bit的ECC算法,公钥矩阵大小为48K。2.4 CPK技术优势CPK相对于传统PKI(Public Key Infrastructure)体系来讲,主要是对PKI体系的算法进行了改进与优化,使得PKI系统中庞大的CA认证中心得到了很大的精简。CPK的秘钥管理中心可以非常小,仅使用一台普通的计算机或者一个CPK秘钥管理设备即可实现。这个技术实现得意于公私钥矩阵的设计思想。3 CPK在COS中的安全控制3.1 简介本章主要结合笔者在COS(Chip Operate System)开发过程中,对CPK的实际技术实现做一些分析,其目的主要是从COS的设计、实现角度来进一步保证CPK体系及其设备的安全。3.2 COS内部文件控制数据存储安全控制目前CPK 8.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(Application Protocol Data Unit),根据7816/IEC-4的定义。命令应用数据单元包含两部分:固定的四个字节命令头和长度可变的命令体,其内容参见如下表格:命令头命令体CLAINSP1P2LC数据域LECLA 字节指出命令的类型。如下表所述:B7B6B5B4B3B2B1B0定义1安全报文传送0不附加安全报文传送1外部命令0内部命令对于常规的数据报文,所有数据都采用明文方式进行传输,无需加密。3.3.2 安全数据交互在孙老师的课程中,也讲到了MAC(消息认证码)认证的内容,在我们的CPK技术体系的COS实现中,便用到了这种机制,即安全报文。这种报文主要应用于对APDU报文传输中的机密数据进行认证和加密传输的过程中,以这种方式,来保证CPK设备数据安全。3.3.2.1 MAC计算MAC是使用命令中的所有的元素(包含命令头)产生的。MAC 是命令数据域中最后一个数据元,它的长度为4 个字节。MAC 的计算方法如下:1. 终端向设备发出一个Get Challenge (取随机书)命令, 设备回送的8字节随机数作为初始值。2. 按照顺序将以下数据连接在一起形成数据块:CLA,INS,P1,P2,Lc+4,Data,LE在命令的数据域中(如果存在)包含明文或加密的数据3. 将该数据块分成8 字节为单位的数据块,标号为D1,D2,D3,D4 等,最后的数据块有可能是1-8 个字节。4. 如果最后的数据块长度是8字节的话,则在其后加上16 进制数字80 00 00 00 00 00 00 00,转到第五步。如果最后的数据块长度不足8字节的话,则在其后加上16 进制数字80,如果达到8 字节长度,则转入第五步;否则在其后加入16 进制数字00直到长度达到8 字节。5. 对这些数据块使用相应的密钥进行加密,加密算法采用DES。6. 最终得到是从计算结果左侧取得的4 字节长度的MAC。Figure 31 MAC计算流程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 数据解密数据解密是将通过线路加密方式输出的响应报文数据域中的数据解密,其解密步骤如下:1. 将响应报文数据域中的数据块分解成8字节长的数据块,标号为D1,D2,D3,D4 等等。每个数据块使用如下过程进行解密。2. 对数据块D1,D2,D3,D4等分别使用加密相同的密钥进行DES解密,得到解密后的数据块D1,D2,D3,D4等。3. 计算结束后,所有解密后的数据块依照顺序(解密后的D1,解密后的D2,等等)连接在一起。数据块由Ld,明文数据,填充字符组成。因为Ld表示明文数据的长度,因此,它被用来删除填充字符以恢复明文数据。3.4 访问权限控制3.4.1 用户权限COS对特定命令、特定的文件都有着严格的控制。目前用户权限分为三级权限:管理员权限、超级用户权限和普通用户权限。管理员权限只有CPK发行机构可以使用,主要用来做密钥装载,COS升级使用。而超级用户权限和普通用户权限则提供给企业管理员及普通用户使用。三级权限(管理员权限、超级用户权限和普通用户权限),均需要口令认证通过后才能拥有该权限,即通过口令认证后,才能执行相应的命令或操作。为了防止非法访问及蓄意破坏,对于口令认证,设置最大允许次数,当超过最大允许次数时,直接将指定权限或者设备锁定。3.4.2 内部认证内部认证,主要是通讯端(一般为我们会封装出开发包,即SDK),用户直接利用我们的开发包做二次开发,对于某些操作,用户也需要对CPK设备进行认证,防止通讯端将数据发给伪造的CPK设备,造成信息泄露。内部认证过程如下:在设备的外部产生8字节的随机数,执行内部认证命令,数据域为上述方法产生的随机数。设备将命令中的数据域用指定的内部认证密钥加密后送出设备。外部则用自己持有的密钥对随机数解密,并自己持有的数据进行比较,根据比较结果进行相应处理。Figure 32 内部认证控制3.4.3 外部认证外部认证主要是COS对访问它的通讯端进行认证,以防止CPK设备被非法访问。外部认证过程如下:首先执行产生随机数命令,从设备中直接获取8字节的随机数后,在设备外部用已知密钥加密。对设备执行外部认证命令,数据域为用上述方法得到的加密数据。COS将命令中的数据域用指定的外部认证密钥解密,然后与先前产生的随机数进行比较。如果一致,则表示认证通过,置安全状态寄存器为该密钥规定的后续状态值,错误允许计数器恢复成初始值;如果不一致,则认证失败,错误允许计数器值减1,且不改变安全状态寄存器的值。Figure 33外部认证3.5 私钥授权控制3.5.1 私钥存储私钥是指CPK体系中的私钥信息,公钥与之对应。在CPK体系中,称之为私钥,是为了与传统的密钥相区别。私钥有其对应的标识信息(手机号、用户名、邮件地址等),利用CPK私钥矩阵通过某种算法计算而成,而传统的密钥一般不具有对应的标志信息,为一串毫无意义可言的信息。CPK私钥可以由企业自行生产和存储,但对于特定设备,特定私钥如果要进行签名和打开数字信封的操作,则需要向CPK生产厂家申请授权,这也是CPK设备厂家控制CPK设备,收取授权费用的盈利点。私钥信息在COS系统中以文件格式存储,由于采用了FAT文件系统,其在FLASH的存储地址几乎就是随机的,无法通过破解FLASH内容来进行攻击破解,信息以加密方式存储,更增加了系统的安全性,私钥的相关信息在Flash上按如下格式存储:文件偏移存储内容备注0x000x1F使用内部密钥对私钥进行加密内部密钥即rG(r为随机数,COS第一次下载完成后生成),G为ECC曲线上的基点0x200x2F0x200x23签名授权标识0x00无授权控制;0x01只控制截止日期;0x02只控制次数;0x03同时控制日期与次数0x240x27截止日期格式:yyyymmdd的整型数据0x280x2B剩余次数每使用一次,次数减一0x2C0x2F保留0x300x3F0x300x23打开数字信封授权0x00无授权控制;0x01只控制截止日期;0x02只控制次数;0x03同时控制日期与次数0x340x37截止日期格式:yyyymmdd的整型数据0x380x3B剩余次数每使用一次,次数减一0x3C0x3F保留0x400x6F私钥基于rG的数字信封即csk*rG本文仅对表中的授权信息进行描述,其它信息不做讲解。授权信息是需要向CPK生产企业获取的。3.5.2 私钥授权 私钥授权,也体现了CPK实现中COS对其安全性的设计思路,更进一步保护CPK体系中私钥的使用的安全。私钥授权流程图如下所示:1. APP(PC端)向COS发送申请私钥授权命令,COS产生随机数,并根据指定的参数,存储到相应的私钥空间。2. APP根据COS产生的随机和CPK设备的相关信息等一并发给服务器,得到相关的设备、指定私钥的授权数据。注:以上两个动作可以不连续。申请私钥授权命令可以被多次执行,如果随机数未被使用过(未执行过写入授权指令)则不会被COS清除,多次执行会时被直接返回授权流程中,服务器一般为CPK生产企业的授权服务器,签名使用的私钥信息存在储于服务器中,验签使用的公钥信息事先预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论