IC卡加密技术.docx
《IC卡加密技术.docx》由会员分享,可在线阅读,更多相关《IC卡加密技术.docx(28页珍藏版)》请在冰豆网上搜索。
IC卡加密技术
IC卡加密技术
目录
加密技术分类与应用模式
信息传输保护
信息认证与授权
数据加密标准DES与DES算法理论
DES算法第一步、第二步、第三步
DES算法第四步
DES算法第五步
DES算法第六步
DES算法第七步
DES算法密钥计算
DES密码反破译的策略
DES算法实现与DES密码的破解
其它分组密码算法
椭圆曲线密码(ECC)算法简介
加密技术分类与应用模式
加密技术分类
密码学发展至今,产生了很多密码算法。
有的算法已在学术刊物中披露,而更多的却作为军事、商业及贸易等秘密被严加保密。
现代密码可以概括为序列密码、分组密码及公共密钥密码三种类型,同时与密码技术相关联的还有密钥管理和密码分析。
序列密码
序列密码是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。
序列密码由密钥和密码算法两部分构成。
密钥在每次使用之前都要变换,一般存储在密码设备内部或从外部输入密码设备。
密码算法在较长时间内是固定的。
密钥的灵活变换是这一密码算法的活跃因素,而安全保密的关键则在于密码算法的复杂性。
序列密码一般应满足三个方面的要求:
一是足够长的周期;二是较高的复杂性;三是产生的密钥流符合随机检验的要求。
序列密码的优点是运算速度快,密文传输中的错误不会在明文中产生扩散。
其缺点是密钥变换过于频繁,密钥分配较难。
由于序列密码历史悠久,理论完善,目前仍是国际密码应用的主流。
分组密码
分组密码是将明文按一定的位长分组,明文组和密钥组的全部经过加密运算得到密文组。
解密时密文组和密钥组经过解密运算(加密运算的逆运算),还原成明文组。
分组密码的优点是:
密钥可以在一定时间内固定,不必每次变换,因此给密钥配发带来了方便。
但是,由于分组密码存在着密文传输错误在明文中扩散的问题,因此在信道质量较差的情况下无法使用。
DES密码就是1977年由美国国家标准局公布的第一个分组密码。
公共密钥密码
无论是序列密码还是分组密码,其加密和解密密钥均是相同的,因此必须严格保密,且要经安全渠道配发,这在跨越很大的地理位置上应用是一个难以解决的问题。
1976年有人提出了公共密钥密码体制,其原理是加密密钥和解密密钥分离。
这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。
任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。
因此,人们通常也将这种密码体制称为双密钥密码体制或非对称密码体制;与此相对应,将序列密码和分组密码等称为单密钥密码体制或对称密钥密码体制。
公共密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。
它的算法有时也称为公开密钥算法或简称为公钥算法。
1978年有人提出了公共密钥密码的具体实施方案,即RSA方案。
1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势。
目前,国际上在智能IC卡上应用得较多的加密解密算法是DES算法、RSA算法及DSA算法。
下面面向应用重点介绍这三种算法,并对其它有关算法作一简要介绍。
。
密码技术在IC卡上的应用模式
在IC卡特别是智能卡应用方面,信息安全的保密性、完整性及可获取性等都涉及到密码技术。
密码技术在有关IC卡的安全应用主要有信息传输保护、信息认证及信息授权(数字电子签名)等几种主要模式。
目前,随着网络技术的飞速发展,网络应用已深入到社会的各个领域,而INTERNET更是逐步走入千家万户。
在这样一个网络信息平台上,人们迫切希望获得真实、安全、可靠的信息,密码技术和IC卡技术的结合必将成为在这一平台上保护信息安全的重要技术手段。
密码技术和IC卡,特别是智能IC卡技术的结合必将具有十分广阔的应用和发展前景。
信息传输保护
对IC卡处理、传输的信息进行保护是密码应用最重要的方面。
采用密码技术的基本思想是将保护大量的明文信息问题转化为保护少量密钥信息的问题,使得信息保护问题易于解决。
为防止对传输信息的非法截取,采用密码技术对传输信息进行加密保护,使得非法截取的信息成为不可读、不可知具有十分重要性意义。
首先,因为IC卡的应用和计算机密切相关,并且其中有些安全保护概念就来源于此,所以先对计算机网络的传输加密作一简单介绍。
计算机网络中的传输加密,通常分为链路加密和端端加密。
链路加密是对通过每条链路的全部信息进行加密;端端加密是在信息发送的起点加密,在信息接收点解密。
链路加密的优点是全部信息包括信息头都加密,在每条链路上流经的都是密文信息;缺点是信息每经过一个节点就要解密,然后再加密,因此,在信息传输的每一个节点上信息要暴露。
端端加密的优点是信息在每一节点上都不暴露,缺点是信息头不能加密。
为了安全,也有将两种方式结合使用的。
与此相对应,在智能IC卡上也存在着类似的传输信息保护方式,一般有三种方式:
一是认证传输方式(Authentic Transmit Mode);二是加密传输方式(Encipher Transmit Mode);三是混合传输方式(Mixed Transmit Mode)。
认证传输方式
认证传输方式就是将在接口设备(IFD)和IC卡(ICC)之间传输的信息附加上相应的认证信息。
在IFD和ICC之间传输的信息可以简单分为两部分:
一是信息头,主要为传输控制信息,如传输方式等;二是信息主体。
在认证传输方式中,发送端利用相应的加密算法及加密密钥将待传输信息的信息头和信息主体进行加密,得到的密文附加在明文信息尾部传输给接收端。
接收端收到该信息后按发送相反的顺序对接收到的信息进行认证,认证通过则进行相应处理,否则回送相应错误信息。
在具体的智能IC卡应用中,信息发送、接收端则分别为IFD或ICC,采用不同的加密算法则密钥分配、工作顺序也不相同。
以采用DES算法为例,认证传输的前提就是在IFD和ICC之间有一公共密钥,在每次认证传输之前,发送端向接收端请求一中间密钥,发送端根据此中间密钥,利用公共密钥导算出加密密钥,再对传输信息作传输认证。
如果系统设计合理,附加的认证信息除具有认证功能外,不应具有检错甚至纠错功能。
认证传输方式原理见图4-5。
认证传输方式
认证传输方式具有如下特点:
一是传输的信息为明文,不具有保密性;二是附加认证信息可以具有信息认证、检错、纠错等多种功能,但决不是一般的冗余校验。
加密传输方式
加密传输方式就是将信息加密之后再进行传输。
加密之后的信息具有保密性,但不具备检错、纠错等功能。
此外,在一种具体的IC卡应用中可能同时存在几种传输方式,此次传输所使用的传输方式必须在信息头中说明,所以应用加密传输方式时的信息头或部分信息头不能被加密,否则接收端将因无法确认传输方式而不能正确地接收信息。
混合传输方式
混合传输方式就是将认证传输方式和加密传输方式的优点结合起来,对待传输的信息既认证又加密。
一般在具体实施时先对信息进行认证然后再加密,其工作原理见图4-6。
因为这几种信息传输方式主要是以时间及空间换来信息传输安全的,所以在一种IC卡具体应用中,完全可以视不同情况交替使用或根本不使用这几种信息传输方式。
混合传输方式工作原理
信息认证与授权
信息认证的目的是防止信息被篡改、伪造、或信息接收方事后否认。
特别是对于某些开放环境中的信息系统来讲,确保其认证十分重要。
认证技术是现代各种计算机通讯网络、办公自动化、电子资金转帐系统、自动零售服务网络等系统设计中的重要组成部分。
今后,在IC卡应用系统中必将广泛使用。
信息认证主要有以下两种方式。
信息验证
防止信息被篡改,保证信息的完整性,使得有意或无意地篡改了信息后接收者可以发现,其中最简单的为纯认证系统。
采用该认证系统的关键在于防止认证码的破译,必须有良好的认证算法和密钥。
它将信息通过密钥和某一特定算法进行加密后压缩成一个“信息摘要”,附加在信息之后,接收方收到信息和“信息摘要”之后,用相同的密钥和算法对信息进行验证,如果信息被篡改,必然与所附“信息摘要”不符,可以及时发现。
例如,可以利用DES算法作信息验证,如果信息过长,可用Hash算法先对信息进行压缩,再进行验证运算。
为没有防范进行信息验证双方的任何措施,纯认证系统必须建立在双方互相信赖的基础上。
当然,纯认证系统主要是针对来自进行信息验证双方以外因素的有意或无意的破坏、干扰等。
数字电子签名
目前,越来越多的敏感数据和文档使用电子服务设施,如电子邮件、电传等进行信息处理和传输,这也使得电子签名变得特别重要和迫切。
A方要发送一个信息给B方,既要防止B方或第三方伪造,又要防止A方事后因对自己不利而否认,通常采用数字签名的方法解决这一问题。
数字签名必须满足三个条件;
收方应能确认发方的签名,但不能伪造(收方条件);
发方发送签名信息后,不能否认他已签名的信息(发方条件);
公证方能确认收发双方的信息,作出促裁,但不能伪造成这一过程(公证条件)。
为实现数字签名,用上面的纯验证技术还不行,一般用公钥密码方案解决。
用户A设计好公钥密码方案棗如选用RSA算法,设计好加密密钥E、解密密钥D并将有关算法及加密密钥或公布或单独发放给B。
对于信息M,A方用解密密钥D计算D(M),发给B方,B方用A方发放的加密密钥E计算E((D(M)=M,此时,B方掌握了D(M)和M。
因为只有A掌握了解密密钥,其它人包括B都无法伪造,如果A方事后否认,B方可以用D(M)和M诉之于公证人裁决。
反之,B也可以设计自己的签名方案并发放给A。
数字电子签名必须禁止除了原始发送者之外的其他人员再产生此次签名,还必须有一个个人化特性并被每一人校验。
为避免拷贝,不仅不同的文本给以不同的签名,而且同样的文本也必须给以不同的签名,以区别不同的版本,例如,两个据有同样内容的电子公函。
若被签名的文本过长超过了定义的签名串时,可以利用Hash算法对文本进行适当的压缩处理等。
智能IC卡特别适用于改善计算机、信息通讯系统等的安全性。
其中一个最重要的应用就是利用数字签名机制达到文档的合法接收,类似的应用领域还有贸易、金融、办公自动化等。
这种数字电子签名并无保密功能。
若要保密,则需对签名的密文再进行加密。
数据加密标准DES与DES算法理论
数据加密标准DES
美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。
加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点:
提供高质量的数据保护,防止数据XX的泄露和未被察觉的修改;
具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;
实现经济,运行有效,并且适用于多种完全不同的应用。
1977年1月,美国政府颁布:
采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES棗Data Encryption Standard)。
DES算法理论
本世纪五十年代以来,密码学研究领域出现了最具代表性的两大成就。
其中之一就是1971年美国学者塔奇曼 (Tuchman)和麦耶(Meyer)根据信息论创始人香农(Shannon)提出的“多重加密有效性理论”创立的,后于1977年由美国国家标准局颁布的数据加密标准?
/FONT>DES。
DES密码实际上是Lucifer密码的进一步发展。
它是一种采用传统加密方法的区组密码。
它的算法是对称的,既可用于加密又可用于解密。
图4-1是它的算法粗框图。
其具体运算过程有七步。
DES算法第一步、第二步、第三步
DES算法第一步
输入64个二进制位明码文数据区组
T=t1t2…t64
按初始换位表IP进行换位,得到区组B(0):
B(0)=b1(0)b2(0)…b64(0)=t58t50…t7
初始换位表IP
58
50
42
34
26
18
10
2
60
52
44
36
28
20
12
4
62
54
46
38
30
22
14
6
64
56
48
40
32
24
16
8
57
49
41
33
25
17
9
1
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
63
55
47
39
31
23
15
7
DES算法第二步
设B(i)=b1(i)b2(i)…b64(i)是第i+1次迭代的64个二进制位输入区组,将B(i)分为左右两个大小相等的部分,每部分为一个32位二进制的数据块
L(i)=l1(i)l2(i)…l32(i)=b1(i)b2(i)…b32(i)
R(i)=r1(i)r2(i)…r32(i)=b33(i)b34(i)…b64(i)
把R(i)视为由8个4位二进制的块组成
r1(i)r2(i)r3(i)r4(i)
r5(i)r6(i)r7(i)r8(i)
…
r29(i)r30(i)r31(i)r32(i)
通过循环抄录相邻块的相邻块,把它们再扩充为8个6位二进制的块
r32(i)r1(i)r2(i)r3(i)r4(i)r5(i)
r4(i)r5(i)r6(i)r7(i)r8(i)r9(i)
…
r28(i)r29(i)r30(i)r31(i)r32(i)r1(i)
用E(R(i))表示这个变换,称为扩充函数。
扩充函数E
32
1
2
3
4
5
4
5
6
7
8
9
8
9
10
11
12
13
12
13
14
15
16
17
16
17
18
19
20
21
20
21
22
23
24
25
24
25
26
27
28
29
28
29
30
31
32
1
DES算法第三步:
卡型分类
在第i+1次迭代中,用48位二进制的密钥
K(i+1)=k1(i+1)k2(i+1)…k48(i+1)
与E(R(i))按位相加(逻辑异或),得
r32(i)+k1(i+1)r1(i)+k2(i+1)…r5(i)+k6(i+1)
r4(i)+k7(i+1)r5(i)+k8(i+1)…r9(i)+k12(i+1)
....
r28(i)+k48(i+1)r29(i)+k44(i+1)…r1(i)+k48(i+1)
DES算法第四步
第四步:
将以上第j个(1≤j≤6位二进制的块(记为Z=zj1zj2zj3zj4zj5zj6)输入第个j个替代函数Sj(表4-3)。
各替代函数Sj的功能是把6位数变换成4位数,做法是以zj1zj6为行号,zj2zj3zj4zj5为列号,查找Sj,行列交叉处即是要输出的4位数。
表4-3替代函数
替代
函数
(Si)
列
行
↓
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
S1
14
4
13
1
2
15
11
8
3
10
6
12
5
9
0
7
0
1
2
3
0
15
7
4
14
2
13
1
10
6
12
11
9
5
3
8
4
1
14
8
13
6
2
11
15
12
9
7
3
10
5
0
15
12
8
2
4
9
1
7
5
11
3
14
10
0
6
13
S2
15
1
8
14
6
11
3
4
9
7
2
13
12
0
5
10
0
1
2
3
3
13
4
7
15
2
8
15
12
0
1
10
6
9
11
5
0
14
7
11
10
4
13
1
5
8
12
6
9
3
2
15
13
8
10
1
3
15
4
2
11
6
7
12
0
5
14
9
S3
10
0
9
14
6
3
15
5
1
13
12
7
11
4
2
8
0
1
2
3
13
7
0
9
3
4
6
10
2
8
5
14
12
11
15
1
13
6
4
9
8
15
3
0
11
1
2
12
5
10
14
7
1
10
13
0
6
9
8
7
4
15
14
3
11
5
2
12
S4
7
13
14
3
0
6
9
10
1
2
8
5
11
12
4
15
0
1
2
3
13
8
11
5
6
15
0
3
4
7
2
12
1
10
14
9
10
6
9
0
12
11
7
13
15
1
3
14
5
2
8
4
3
15
0
6
10
10
13
8
9
4
5
11
12
7
2
14
S5
2
12
4
1
7
10
11
6
8
5
3
15
13
0
14
9
0
1
2
3
14
11
2
12
4
7
13
1
5
0
15
10
3
9
8
6
4
2
1
11
10
13
7
8
15
9
12
5
6
3
0
14
11
8
12
7
1
14
2
13
6
15
0
9
10
4
5
3
S6
12
1
10
15
9
2
6
8
0
13
3
4
14
7
5
11
0
1
2
3
10
15
4
2
7
12
9
5
6
1
13
14
0
11
3
8
9
14
15
5
2
8
12
3
7
0
4
10
1
13
11
6
4
3
2
12
9
5
15
10
11
14
1
7
6
0
8
13
S7
4
11
2
14
15
0
8
13
3
12
9
7
5
10
6
1
0
1
2
3
13
0
11
7
4
9
1
10
14
3
5
12
2
15
8
6
1
4
11
13
12
3
7
14
10
15
6
8
0
5
9
2
6
11
13
8
1
4
10
7
9
5
0
15
14
2
3
12
S8
13
2
8
4
6
15
11
1
10
9
3
14
5
0
12
7
0
1
2
3
1
15
13
8
10
3
7
4
12
5
6
11
0
14
9
2
7
11
4
1
9
12
14
2
0
6
10
13
15
3
5
8
2
1
14
7
4
10
8
13
15
12
9
0
3
5
6
11
DES算法第五步
八个替代函数Sj(1≤j≤8)的输出拼接为32位二进制数据区组
y1(i)y2(i)…y32(i)
把它作为换位函数P(表4-4)的输入,得到输出
X(i)=x1(i)x2(i)…x32(i) =y16(i)y17(i)…y25(i)
若把第二至第五步的变换记为,(X(i)=f(R(i),K(i+1)) ),则它的计算流程可用图4-2表示。
计算f(R(i),K(i+1))的框图
换位函数P
16
7
20
21
29
12
28
17
1
15
23
26
5
18
31
10
2
8
24
14
32
27
3
9
19
13
30
6
22
11
4
25
DES算法第六步
把L(i)与X(i)按位相加,形成R(i+1),且令R(i)为L(i+1),即得到经第i+1次迭代加密后的输出L(i+1)R(i+1),其中
L(i+1)= R(i)
R(i+1)= L(i)⊕f(R(i),K(i+1)) (2.1)
(i=0,1,2,…,15)
我们可以看出,DES密码体制的每一次迭代都用替代法和换位法和换位法对上一次迭代的输出进行加密变换。
用硬件实现DES算法时,实际上用替代盒实现替代函数Sj(1≤j≤8),用换位盒实现换位函数P。
为了使最后输出的密码文与原始输入的明码文没有明显的函数关系,DES算法采用16次迭代。
在前15次迭代中,式(2.1)中的L(i)表示左32位,R(i)表示右32位。
对最后一次迭代,L(16)表示右32位,R(16)表示左32位,即在最后一次迭代时不再左右交换,以保证加密和解密的对称性。
DES算法第七步
对R(16)L(16)作逆初始换位IP-1,得到密码文。
逆初始换位表IP-1
40
8
48
16
56
24
64
32
39
7
47
15
55
23
63
31
38
6
46
14
54
22
62
30
37
5
45
13
52
21
61
29
36
4
44
12
52
20
60
28
35
3
43
11
51
19
59
27
34
2
42
10
50
18
58
26
33
1
41
9
49
17
57
25
由式(2.1)知
R(i)=L(i+1)
L(i)=R(i+1)⊕f(L(i),K(i+1))
(i=15,14,…,0)
因此解密算法与加密算法相同,仅密钥的使用顺序相反而已。
DES算法密钥计算
在每次迭代中要用到48位的密钥
K(i)=k1(i)k2(i)…k48(i)
(i=15,14,…,0)
它们是根据64位原始密钥
K=k1k2…k64
计算出来的,其中所有8的倍数位k8,k16,…,k64用作奇偶校验位。
图4-3为计算密钥K(i)的流程图。
计算K(i)的流程图
∙第一步:
首先舍