计算机安全技术密码技术
5.1 引 论密码学主要包含两部内容,即 编码学 和 密码分析学 。
编码学是通过编码技术改变被保护信息的形式,使得编码后的信息除了指定接收者外其他人无法理解的一门学问,即加密算法的设计和研究 。
密码分析,是研究如何攻破一个密码系统,恢复被隐藏的信息之本来面目,也就是密码破译技术 。
这两部分内容是矛盾的两方面 。
5.1.1密码系统所谓密码系统应包含 5个要素,明文信息空间,密文信息空间,密钥空间,加密变换 E和解密变换 D。
计算机安全技术密码技术
5.1 引 论明文:加密前的原始信息 。
密文:加密后的信息 。
加密:将明文进行数据变换形成密文的过程 。
解密:将密文进行数据变换恢复成明文的过程 。
密钥:控制加密和解密运算的符号序列 。
密码系统要求,使用方便,而且系统的保密不依赖于对加密算法和脱密算法的保密,而只依赖于密钥的保密 。
因此,当密文和对应的明文被非法截取后,仍不容易确定解密变换 。 其次,从截取的密文中极难确定其对应的明文 。
计算机安全技术密码技术
5.1 引 论
5.1.2密码的功能密码技术应用于:信息的保密,应用于身份的确认,
数据的完整性等诸多领域 。
1,通信中的数据保护密码技术应用于通信线路上信息的保护。一方面,防止传输中的信息被非法窃听导致失密,另一方面,防止信息的内容被恶意攻击者非法地篡改,并且在发生此类事件后能迅速发现。
2,存储信息的保护信息用密码技术加密处理后进行存储,保证只有掌握解密密钥的合法用户才能够存取数据,得到正确的明文,
在许多用户系统中,保护个人秘密,防止文件被破坏 。
计算机安全技术密码技术
5.1 引 论
3,通信双方的身份验证密码技术不仅广泛应用于防止传输中的信息和记录存储的信息不被攻击者非法窃听,浏览和篡改,同时,也可以用于识别通信双方的真实性 。
这种对存取数据和发来电文的对方的合法性进行确证的方法叫,验证,。
4,非否认性密码技术还应用于不可否认性服务 。 它包含对源和目的双方的证明,通常的情况下,不可否认服务是一种数字签名服务 。
除此之外,密码技术还广泛地应用于计算机网络安全领域的其它方面 。
计算机安全技术密码技术
5.1 引 论
5.1.3密码的分类一般情况下,密码方法都是一些基本方法的组合 。 它们通常分为三类:移位法,代替法,代数法
1,移位法是将明文中的字母重新排列,字母本身并不改变,但相对的位臵发生了一定的变化 。
2,代替法是将明文中的字母用其它字母进行代替,
而原来的位臵并不产生变化 。
3,代数法首先将明文转换成数,或直接将明文信息用二进制数表示作为运算对象,然后再进行特定的运算产生密文 。
计算机安全技术密码技术
5.1.4密码分析密码分析,截收者在不知道解密密钥及通信者所采用的加密体制的细节条件下,对密文进行分析,
试图获取机密信息。
密码分析学,研究分析解密规律的科学称作。
密码分析在外交、军事、公安、商业等方面都具有重要作用,也是研究历史、考古、古语言学和古乐理论的重要手段之一。
密码设计和密码分析是共生的、又是互逆的
,两者密切有关但追求的目标相反。两者解决问题的途径有很大差别。
计算机安全技术密码技术
密码设计是利用数学来构造密码,而密码分析除了依靠数学、工程背景、语言学等知识外,还要靠经验、统计、测试、眼力、直觉判断能力 ……,有时还靠点运气。
密码分析过程通常经过:统计 (统计截获报文材料 )、假设
、推断和证实等步骤。
破译 (Break )或 攻击 (Attack)密码的方法,
穷举破译法 (Exhaustive Attack Method),又称作 强力法 (Brute-force Method)。
分析法,有 确定性 和 统计性 两类。
计算机安全技术密码技术穷举破译法 是对截收的密报依次用各种可解的密钥试译,直到得到有意义的明文;或在不变密钥下,对所有可能的明文加密直到得到与截获密报一致为止,此法又称为 完全试凑法 (Complete trial-and-
error Method)。只要有足够多的计算时间和存储容量,原则上穷举法总是可以成功的。但实际中,任何一种能保障安全要求的实用密码都会设计得使这一方法在实际上是不可行的。
为了减少搜索计算量,可以采用较有效的改进试凑法。它将密钥空间划分成几个 (例如,q个 )等可能的子集,对密钥可能落入哪个子集进行判断,至多需进行 q次试验。关键在于如何实现密钥空间的等概子集的划分。
计算机安全技术密码技术分析法
确定性分析法 利用一个或几个已知量 (比如,已知密文或明文
-密文对 )用数学关系式表示出所求未知量 (如密钥等 )。已知量和未知量的关系视加密和解密算法而定,寻求这种关系是确定性分析法的关键步骤。例如,以 n级线性移存器序列作为密钥流的流密码,就可在已知 2n bit密文下,通过求解线性方程组破译。
统计分析法 利用明文的已知统计规律进行破译的方法。密码破译者对截收的密文进行统计分析,总结出其间的统计规律,并与明文的统计规律进行对照比较,从中提取出明文和密文之间的对应或变换信息。
密码分析之所以能够破译密码,最根本的是依赖于明文中的多余度,这是 Shannon 1949年用他开创的信息论理论第一次透彻地阐明的密码分析的基本问题。
计算机安全技术密码技术密码可能经受的不同水平的攻击
(1) 惟密文破译 (Ciphertext Only Attacks)。分析者从仅知道的截获密文进行分析,试图得出明文或密钥。
(2) 已知明文破译 (Know Plaintext Attacks)。分析者除了有截获的密文外,还有一些已知的明文 -密文对 (通过各种手段得到的 ),试图从中得出明文或密钥。
(3) 选择明文破译 (Chosen Plaintext Attacks)。分析者可以选定任何明文 -密文对来进行攻击,以确定未知的密钥。
(4) 选择密文攻击 (Chosen Ciphertext Attack)。分析者可以利用解密机,按他所选的密文解密出相应的明文。双钥体制下,类似于选择明文攻击,他可以得到任意多的密文对密码进行分析。
这几类攻击的强度依次增大,唯密文攻击最弱。
计算机安全技术密码技术
密码分析的成功除了靠上述的数学演绎和归纳法外,还要利用大胆的猜测和对一些特殊或异常情况的敏感性。
一个保密系统是否被“攻破”,并无严格的标准。
密码史表明,密码分析者的成就似乎远比密码设计者的成就更令人赞叹 !许多开始时被设计者吹为“百年或千年难破”的密码,没过多久就被密码分析者巧妙地攻破了。在第二次世界大战中,美军破译了日本的“紫密”,使得日本在中途岛战役中大败。一些专家们估计,同盟军在密码破译上的成功至少使第二次世界大战缩短了
8年 。
计算机安全技术密码技术密码分析 ——
破译实例
1,珍珠港事件 (1941.12.7,7:30AM)
1941.12.7早上 1点 28分,西雅图布里奇岛海军情报站截获日本给驻美大使 紫密报,9分钟后海军部大楼 1649室收到转发报 (OP-20-
GY)。 上午 5点已脱密成日文:,请贵大使在当地时间 7日下午 1时
,(即 Hawana早上 7,30)将我国答复交美国政府 (18个半小时前由东京分 14部份发出来的最后断交照会 )。 8,30分交海军作战部斯塔克上将和诺克斯海军部长 。 克雷默将译报向国务院走去 (日大使馆的译电员在一小时后才将电报脱密 ),9,15到达白宫,罗斯福用 10分钟看完 13部分电报说:这意味着战争 。 10,30左右,克来默回到办公室看到第 14部电报译稿,10,45分将此电报送到白宫 。 马歇尔仔细看了此报,想向太平洋地区发出警告,经过加密,46分钟后才到达檀香山美国无线电公司,( 当地上午 7,33分 ) 。 7,55分日机开始轰炸 。 日大使下午 2,20才走进白宫提交照会 。 11,45分最后一批日机才离开珍珠港 。
计算机安全技术密码技术密码分析 —— 破译实例
2,中途岛海战 (代号 AF)(日本出动 200多艘舰船 )。
1942春成功破译日海军 JN25b密本,日本由于准备来不及原定 4
月 1日更换密码为 JN25c,但一直延到五月一日才启用,而使美军大量破译了秘密情报 JN25b,精确推出日将于 6月 3日开始攻击中途岛 。 由于情报准确,1942.5.7美机炸沉日航空母舰,祥 风,,另一艘的飞行甲板被炸弯,而使多架飞机投入大海中 。 中途岛作战日本的,赤城,,,加贺,,,苍龙,,,飞龙,号航空母舰被击沉
,从而使日本丧失了进行大海作战的能力 。 尼米兹上将认为,中途岛战本质上是情报的胜利 。
计算机安全技术密码技术
3,冲绳岛战役冲绳岛战役中密码分析者破译了 72000吨,大和,号超级战列舰决死出击令,及其位置,舰载机群于 1945.4.7日 12时 32分将,大和
,号击中,经过二小时反复轰炸沉入海底 。 船上 2767人全部战死 。
4,山本五十六之死山本五十六于 1943年 4月 13日下午 5时 55分到所罗门岛视察的日程播给第一基地部队等,被美军截获并通过破译 JN25密码的专用
IBM设备破译出 。 尼米兹上将经研究决定出击 。 4月 13日 7时 25分出动 18架战斗机将山本座机击落 。 5月 21日日本才广播这一消息 。
计算机安全技术密码技术
5,日本商船的毁灭二次大战中,美国密码分析人员破开 75种日本海军密码 。 美国击沉日本商船总吨位的 2/3,美潜艇用鱼雷击沉日本油船 110艘,日本商船队的毁灭是东条列举日本战败的三个原因之一 (其他两个为越岛战略和快速航空母舰作战 )。
6,德国潜艇指挥部密码的破译德国潜艇指挥部德尼茨的 B机关泄露了太多的军事情报
。 1944.6.4德,U-505,潜艇受到美海军 22.3特遣大队反潜深炸弹攻击,受伤浮起后美军冲入无线电窒,缴获了密码机和大量明,密报,并秘密将,U-505,拖回美国 。 德军误认为,U-505,沉没海底而未换密码,欧战结束前 11个月,
几乎每天击沉一艘潜艇,共计击沉 300多艘 。
计算机安全技术密码技术
7,瑞典人破译德国外交和军事密码
1941年春,瑞典人破译德国外交和军事密码,分析出德军将于 6月 20~ 25日入侵俄车 。
潘汉年也从日将内部得到这一情报,并通过延安告知斯大林

信号截收和密码分析在战争中的作用极大,大大缩短了战争
(WW2缩短了 8年 )。 拯救了千千万万人的生命 。
8,海弯战争
1990.7~ 1991年初的海弯战争充分显示了电子侦察和通信保密的作用 。
计算机安全技术密码技术
9,苏联 8.19事件美国国家安全局在 1991年 8.19事件破译了政变领导人克格勃主席克留奇科夫与国防部长亚佐夫的保密电话,并将情报告诉叶利钦,使其准确掌握了苏军各级军官支持与反对者名单,美使馆还派出通信保密专家帮助叶利钦保持他与支持者的通信安全,美驻俄使馆第 10层的电子侦察中心至今仍加强对俄军进行全面侦察 。
计算机安全技术密码技术
10,RSA-129的破译
Rivest等最初悬赏 $100的 RSA-129,已由包括五大洲 43个国家
600多人参加,用 1600台机子同时产生 820条指令数据,通过
Internet网,耗时 8个月,于 1994.4.2利用二次筛法分解出为 64位和
65位的两个因子,原来估计要用 4亿亿年 。 所给密文的译文为,这些魔文是容易受惊的鱼鹰,。 这是有史以来最大规模的数学运算 。
RSA-130于 1996.4.10利用数域筛法分解出来,目前正在向更正大的数,特别是 512 bits RSA,即 RSA-155冲击 [Cowie等 1996]。
计算机安全技术密码技术古典密码是密码学的渊源,这些密码大都比较简单,
可用手工或机械操作实现加解密,现在已很少采用了 。 然而,研究这些密码的原理,对于理解,构造和分析现代密码都是十分有益的 。
5,2古典密码 ( Classical Cipher)
计算机安全技术密码技术 古典密码代换密码 (Substitution Cipher)
明文字母表 A,Zq={0,1,?,q-1}
明文消息 是长为 L个 字母串,称为 明文组,以 m表示,
m=(m0 m1,?,mL-1) mi?Zq
m也称作 L-报文 (L-gram),它是定义在 ZqL上的随机变量,ZqL是 Zq上的 L维矢量空间。 L=1为 单字母报 (1-gram),
L=2为 双字母报 (Digrams),L=3为 三字母报 (Trigrams)。
明文空间= {m,m?ZqL}。
密文字母集 A',Zq’ =(0,1,?,q' -1)表示。密文组
c=(c0,c1,...,cL’ -1) c?Zq
c是定义在 L' 维矢量空间 Zq‘ L’ 上的随机变量。密文空间 C={c,c?Zq’ L‘ }。一般当 A' =A时有 C={c,c?ZqL},即明文和密文由同一字母表构成 。
计算机安全技术密码技术古典密码 代换密码加密变换:明文空间到密文空间的映射:
f,m?c m?M,c? C
在 1— 1的映射下,存在有逆映射 f-1,使
f-1(c)=f-1· f(m)=m m? M,c? C
加密变换通常是在密钥控制下变化的,即
c=f(m,k)=Ek(m)
k? K,K为密钥空间。一个密码系统就是在 f和密钥 k作用下,由 ZqL?Zq‘ L’ 的映射,或以 Zq‘ L’ 中的元素代换 ZqL中的元素,
在这意义下,称这种密码为 代换密码 。 L=1时,称作 单字母 或 单码代换 (Monogram Substition),也称为 流密码 (Stream Cipher)。
L>1时称作 多字母 或 多码代换 (Polygram Substition),也称为 分组密码 。
计算机安全技术密码技术古典密码 代换密码图 代换密码框图
k
m=(m0,m1,… mL-1) c=(c0,c1,… cL’-1)
明文源密钥源代换网络计算机安全技术密码技术古典密码 代换密码一般选择 q=q’,即明文和密文字母表相同。此时,
L=L’,f可以构造成 1— 1的映射,密码 没有数据扩展 。
L<L’,则有 数据扩展,函数 f为 1?多的映射,明文组可有多个密文组来代换,称为 多名 或 同音 (Homophonic)代换密码 。
L>L’,则明文数据将被 压缩 (Compression)。函数 f不是可逆的,保密通信 L?L‘ 。 L>L’ 可用在数据认证系统中。
单表代换 (Monoalphabetic Substitution):在 A = A '、
q=q’ 和 L=1时,对所有明文字母,都用一个固定的代换进行加密 。
多表代换 (Polyalphabetic Substitution),在 A = A ’,
q=q‘ 和 L=1时,用一个以上的代换表进行加密。
计算机安全技术密码技术 古典密码 单表代换密码单表代换密码,明文字母表到密文字母表的固定映射,
f,Zq?Zq
令明文 m=m0m1...,则相应密文为
c=Ek(m)=c0c1...=f(m0)f(m1)..,
1.移位代换密码 (Shift Substitution Cipher)
加密变换,Ek(i)=(i+k)?j mod q 0? i,j <q
K={k?0?k<q}
k=0时为 恒等变换 。
解密变换,D(j)=Eq -k(j)?j+q-k?i+k-k?i mod q
计算机安全技术密码技术古典密码 单表代换密码例 2-3-1 凯撒 (Caeser)密码是对英文 26个字母进行移位代 换的密码,其 q=26。例如,选择密钥 k=3,则有下述代换表:
A,a b c d e f g h i j k l m n o p q r s t u v w x
y z
A‘,DEFGH I J KLMNOP Q RS TUVWXYZ AB C
明文,m =Casear cipher is a shift substitution
密文,c=E(m)=FDVHDU FLSKHU LV D VKLIW
VXEVWLWXWLRQ
解密运算为 D3=E23,用密钥 k=23的加密表加密就可恢复明文,
又称为加法密码 (Additive Cipher)。
计算机安全技术密码技术 古典密码单表代换密码
2,乘数密码 (Multiplicative Cipher):
加密变换,Ek (i)=ik?j mod q 0? j <q
又叫 采样密码 (Decimation Cipher)。显然,仅当 (k,q)=1,即 k
与 q互素时才是一一对应的。若 q为素数,则有 q-2个可用密钥。否则就只有? (q)- 1个。其中? (·)是是欧拉函数,表示小于 q且与 q互素的整数的个数。
解密变换,Dk (j)=j/k? i mod q 0? j <q
定理 1 当且仅当 (k,q)=1时,Ek才是一一映射。
乘数密码的密钥个数为?(q)- 1个。对于 q=26,?(26)=
(2× 13)=26(1- 1/2)(1- 1/13)=12,除去 k=1的恒等变换,还有 11
种选择,即 k=3,5,7,9,11,15,17,19,21,23和 25。
计算机安全技术密码技术古典密码 单表代换密码3,仿射密码 (Affine cipher)
加密变换,Ek(i)=ik1+k0?j mod q k1,k2?Zq
其中,(k1,q)=1,以 [k1,k0]表示密钥。当 k0=0时就得到乘数密码,当 k1= 1时就得到移位密码。 q=26时可能的密钥数为
(26× 12)- 1= 311个。
4.多项式代换密码 (Polynomial Substitute Cipher)
加密方程为:
Ek(x)= ktxt+ kt-1xt-1+? + k1x +k0?j mod q
其中,kt,...,k0?Zq,x?Zq,
前三种密码都可看作是它的特例。
计算机安全技术密码技术古典密码 单表代换密码
5,密钥短语密码选一个英文短语,称其为 密钥字 (Key Word)或 密钥短语
(Key Phrase),如 HAPPY NEW YEAR,去掉重复字母得
HAPYNEWR。将它依次写在明文字母表之下,而后再将字母表中未在短语中出现过的字母依次写于此短语之后,就可构造出一个字母代换表,如下所示:
A,a b c d e f g h i j k l m n o p q r s t u v w x y z
A’,HAPYNEWRBCDFGIJKLMOQSTUVKZ
这是一种易于记忆而又有多种可能选择的密码。用不同的密钥字就可得到不同的代换表。 q=26时将可能有 26!=4× 1026
种。其中绝大多数代换都是好的。是一种灵活变化密钥的代换密码。
计算机安全技术密码技术古典密码 多表代换密码多表代换密码,以一系列 (两个以上 )代换表依次对明文消息的字母进行代换的加密方法 。
明文字母序列,m=m1 m2…,
代换序列,? =(?1,?2,… )为代换序列 。
密文字母序列,c=Ek (m)=? (m)=?1(m1)?2(m2)…
非周期多表代变换密码,?为非周期的无限序列 。 这类密码,
对每个明文字母都采用不同的代换表 (或密钥 )进行加密,称作是 一次一密钥密码 (One-time Pad Cipher)。
周期多表代换密码,?为周期序列,重复地使用,
代换序列,?=?1?2…?d?1?2…?d…
密文,c=Ek(m)=?(m)=?1(m1)?2(m2)…?d (m)?1(md
+1)…?d(m2d )
当 d=1时就退化为单表代换。
计算机安全技术密码技术 古典密码多表代换密码
1,维吉尼亚密码
1858年法国密码学家 Blaise de vigenere所发明。
移位代换表,?=?1?2d,由 d个字母序列给定的密钥
k=(k1,k2,?,kd )∈ Zqd
ki(i=1,?,d)确定明文第 i+td个字母 (t为正整数 )的移位次数,即 ci+td=Eki(mi+td )≡ mi+td +ki mod q
称 k为 用户密钥 (user key)或 密钥字 (key word),其周期地延伸就给出了整个明文加密所需的 工作密钥 (working key)。
计算机安全技术密码技术古典密码 多表代换密码例 令 q=26,m=polyalphabetic cipher,密钥字 k=RADIO,即周期 d=5,则有明文 m=p o l y a l p h a b e t i c c i p h e r
密钥 k=R A D I O R A D I O R A D I O R A D I O
密文 c=Ek (m)=G O O G OC P K T P N T L K Q Z P K M F
每5个字母组中分别移动17,0,3,8,14位.
其中,同一明文字母 p在不同的位臵上被加密为不同的字母 G
和 P。
维吉尼亚密码是用 d个凯撒代换表周期地对明文字母加密。
1,维吉尼亚密码计算机安全技术密码技术古典密码 多表代换密码
2,博福特密码博福特密码是按 mod q减法运算的一种周期代换密码,即
ci+td=?i (mi+td )≡ki- mi+td mod q
所以它和维吉尼亚密码类似,只是密文字母表为英文字母表逆序排列进行循环右移 ki +1次而成。
计算机安全技术密码技术古典密码 多表代换密码
3,滚动密钥密码对于周期代换密码,保密性将随周期 d加大而增加。
当 d的长度和明文一样长时就变成了 滚动密钥密码 。如果其中所采用的密钥不重复 —— 就是一次一密钥体制。一般密钥可取自一本书或一篇报告作为密钥源,可由书名、章节号及标题来限定密钥起始位臵。
计算机安全技术密码技术古典密码 多表代换密码
4,弗纳姆密码当字母表字母数 q=2时,滚动密钥密码就变成 弗纳姆密码,
它是美国电报电话公司的 G.W.Vernam在 1917年发明的 。 它将英文字母编成 5 bit的 波多电码 (Baudot Code)。
密钥:为随机二元数字流 k=k1,k2,…,ki,… ki?[0,1],
明文:为二元数字流 m=m1,m2,…,mi,… mi?[0,1],
k和 m都分别记录在穿孔纸带上。
加密运算:将 k和 m的相应位逐位相加,
ci?mi?ki mod 2 i =1,2,..,
计算机安全技术密码技术古典密码 多表代换密码解密运算:用同样的密钥纸带对密文数字同步地逐位模 2相加,即
mi =mi?ki mod 2 i=1,2,..,
例 若明文字母为 a,相应的波多电码为 11000,即
m=11000,若密钥序列 k=10010则
c=Ek (m)=c?k=(11000)?(10010)=01010
显然解密有
m=Dk(c)=c?k=(01010)?(10010)=11000
计算机安全技术密码技术古典密码 多表代换密码
5,转轮密码 (Rotor Cipher)
用一组 转轮 或 接线编码轮 (Wired Code Wheel)
所组成的机器,用以实现长周期的多表代换密码。它是机械密码时代最杰出的成果,曾广泛用于军事通信中。其中最有名的两种密码机是 Enigma和 Hagelin密码机。 Enigma密码机由德国 Arthur scherbius所发明,在二次大战中希特勒曾用它装备德军,作为陆海空三军最高级密码使用。 Hagelin密码机是瑞典 Boris Caesar Wilhelm Hagelin发明的,在二次世界大战中曾被广泛地使用。 Hagelin C-36曾广泛装备法国军队。 Hagelin C-48,即 M-209机具有重量轻、体积小、结构紧凑等优点,曾装备美国师、营级,总生产量达 14万部,
美军在朝鲜战争中还在使用。此外,在二次世界大战中,日本采用的 红密 (RED)和 紫密 (PURPLE)机都是转轮密码机。今天,周期更长、更复杂的密码可以用 VLSI 电路实现,这类密码机已逐步被淘汰了。
计算机安全技术密码技术多字母代换密码 (Polygram Substition Ciphers)
多字母代换密码 每次对 L>1个字母进行代换 。
Playfair密码就是一个二字母组的代换密码,它的密钥是由 25个字母 (字母 J除外 )组成的 5*5表,如下,
H A R P S
I C O D B
E F G K L
M N Q T U
V W X Y Z
对于二明文字母组 m1,m2,Playfair密码的加密过程遵循下述的加密规则,
如果 m1,m2在密钥表的同一行,则对应的密文 c1,c2分别是 m1、
m2右边的字母,
如果 m1,m2在密钥表的同一列,则对应的密文 c1,c2分别是 m1、
m2下边的字母,
如果 m1,m2在密钥表的不同的行和列时,,则对应的密文 c1,c2
是以 m1和 m2为顶点组成的长方形的另外两个顶点,且 m1和 c1、
m2和 c2都在同一行。
如果 m1,m2相同,则在它们之间插入一个无效字母,如 x;如果明文字母数是奇数,则在明文末尾加入一个无效字母。
计算机安全技术密码技术古典密码 多字母代换密码
(Polygram Substition Ciphers)
H A R P S
I C O D B
E F G K L
M N Q T U
V W X Y Z
对于二明文字母组 m1,m2,Playfair密码的加密过程遵循下述的加密规则,
如果 m1,m2在密钥表的同一行,则对应的密文 c1,c2分别是 m1、
m2右边的字母,
如果 m1,m2在密钥表的同一列,则对应的密文 c1,c2分别是 m1、
m2下边的字母,
如果 m1,m2在密钥表的不同的行和列时,,则对应的密文 c1,c2
是以 m1和 m2为顶点组成的长方形的另外两个顶点,且 m1和 c1、
m2和 c2都在同一行。
如果 m1,m2相同,则在它们之间插入一个无效字母,如 x;如果明文字母数是奇数,则在明文末尾加入一个无效字母。
例如,the leader was murdered by a terrorist
Th el ea de rw as mu rd er ed by at er ro ri st
密文 =MP FE FH KI AX RH NM PO GH KI DZ PN GH OG HO PO
计算机安全技术密码技术古典密码 多字母代换密码
(Polygram Substition Ciphers)
优点:隐蔽或均匀化字母的自然频度,利于抗击统计分析 。
矩阵变换密码,利用矩阵变换描述的多字母代换密码,
f,ZLq?ZLq
f 是线性变换时可用一个 Zq上的 L× L阶矩阵 K表示,
K=(kij)为密钥 。 若 K是满秩的,则变换为一一映射,且存在有逆变换 K-1,使 KK-1=K-1 K=I(L× L阶单位方阵 )。
明文矢量,m=(m1,m2,…,mL),
密文矢量,c=(c1,c2,…,cL)=mK=c
解密变换,cK-1=m.
计算机安全技术密码技术先指定每一个明文字母和密文字母按它在字母表中的位臵和一个数值相对应,Z指定为零值,___________________________________________
___________________________________________
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0
计算机安全技术密码技术这一信息,使用上表的对应,并按 Hill-3码假如现在要发出 STU DYMATH
进行编码,首先查得的信息的数字依次是 19,20,21,
4,25,13,1,20,8,将它们组成下面三个明文向量,
选择可逆的三阶矩阵,例如
,
21
20
19
,
13
25
4
,
210
211
321
A
.
8
20
1
计算机安全技术密码技术将上述信息变为如下三个密文向量,
因而我们发出密码 122,81,62,93,55,51,65,37,36.
,
62
81
122
21
20
19
A
,
51
55
93
13
25
4
A,
36
37
65
8
20
1
A
假如收到的回复信息是 114,81,58,104,69,55,
并且编码方法与上面相同,为了解译此码,将上述数码分为 2个 3维向量则有,58,81,114 T,55,69,104 T
计算机安全技术密码技术解得按照对应表值得出的信息是 WHY NOT.
,
55
69
1 0 4
,
58
81
1 1 4
21
AxAx
.
20
15
14
55
69
1 0 4
,
25
8
23
58
81
1 1 4
1
2
1
1
AxAx
计算机安全技术密码技术数码经矩阵转换后常回出现溢出表值 (即超过
25)的情况,例中发出的信息就全都是这样的,对此,
通常是将所得大于 25的数以 26去除后的余数代替,
就能得到对应的字母,这种以余数进行处理的方法,
用到所谓模算术,它在密码学中有着重要的作用,
用密码传出信息,通常也以字母形式出现,例如上面到的密文 SCKPCYXLK就是,从表面看就不知所云了,
计算机安全技术密码技术古典密码 多字母代换密码希尔密码 [Hill 1929]
明文组,m=(m1,m2,…,mL)
密文组,c?mK+b mod q
b=(b1,b2,…,bL)是 Zq上的 L维矢量,K是 Zq上的
L× L阶满秩矩阵 。 式中,,+,为矢量相加 。,
解密运算,m?(c-b)K-1 mod q
当 K是单位方阵时,就退化为前面介绍的维吉尼亚密码。
计算机安全技术密码技术古典密码 臵换密码臵换密码 (Permutation Cipher)。当矩阵变换密码的变换矩阵为一臵换阵时,相应密码就是臵换密码。亦称 换位密码
(Transposition Cipher)。它是对明文 L长字母组中的字母位臵进行重新排列,而每个字母本身并不改变。
明文,m=m1 m2,…,mL。,
加密变换,c=(c1,c2,…,cL)=E?(m)=m?(1) m?(2) … m?(L)。
臵换矩阵所决定臵换为?
解密变换:
).,,(),.,,,()( 1)()1( 11 LL mmcccd
计算机安全技术密码技术定长臵换法在给定正整数 d的情况下,正整数集合 Zd =(1,2,3,…,d),假设 f(i)
是 Zd上的一个臵换函数 。
对于明文为 P = P1P2… Pd… P2d… 密文为
C = E(P)= P(f(1))P(f(2))… P(f(d))P(f(d)+1)P(f(d)+2)…
举例如下:
设 d = 3,Zd =( 1,2,3)
f(i) = 2,3,1
若明文 P = What do you do?
由于 d = 3,所以
P = wha tdo you do?
于是可得密文
C = E(p) = haw dot ouy o?d
计算机安全技术密码技术矩阵变位密码是把明文中的字母按给定的顺序排列在一个矩阵中,然后用另一种顺序选出矩阵的字母来产生密文 。 ( 若最后一行不满时,用字母顺序填充 ),
例如:明文,PLEASE TRANSFER ONE MILLION
DOLLARS TO MY SWISS BANK ACCOUNT SIX TWO
TWO
密钥,MEGABUCK
矩阵变位密码计算机安全技术密码技术密钥
M E G A B U C K
列号
7 4 5 1 2 8 3 6
明文
P L E A S E T R
A N S F E R O N
E M I L L I O N
D O L L A R S T
O N Y S W I S S
B A N K A C C O
U N T S I X T W
O T W O A B C D
密文
AFLLSKSOSELAWAIATOOSSCTCLNMONANTESLLYNTWRNN
TSOWDPAEDOBUO
计算机安全技术密码技术列变位密码的密钥是一个不含任何重复字母的单词或短语,然后将明文排列 ( 若最后一行不满时,用字母顺序填充 ),以密钥中的英文字母大小顺序排出列号,最后以列的顺序写出密文 。
例如:明文,PLEASE TRANSFER ONE MILLION
DOLLARS TO MY SWISS BANK ACCOUNT SIX TWO
TWO
密钥:排列在 8*8的矩阵,顺序为先偶数后奇数升序列变位密码计算机安全技术密码技术密列
2 4 6 8 1 3 5 7
列号
1 2 3 4 5 6 7 8
明文
P L E A S E T R
A N S F E R O N
E M I L L I O N
D O L L A R S T
O N Y S W I S S
B A N K A C C O
U N T S I X T W
O T W O A B C D
密文
SELAWAIA PAEDOBUO ERIRICXB LNMONANT TOOSSCTC
ESILYNTW RNNTSOWD AFLLSKSO
计算机安全技术密码技术
5.3 单钥加密算法现代数据通信中的密码体制,通常以明显的方式公开加密算法,
而只对加、解密密钥进行严格的保密。
5.3.1 DES加密标准的提出美国商务部标准局为了能在政府部门进行信息处理的同时保护电子计算机信息的安全,自 1971年开始研究密码的标准化,并于
1973年开始征集满足下列条件的密码。
即首先密码的规定严谨明确,
其次,能够通过破译密钥所需的时间与计算量等表示它的安全性。
其三,安全性不依赖于算法的保密性,而只依赖于密钥的保密性。
IBM公司研制并提出的方案。 1977年作为数据加密标准( DES)
公开发表。成为美国的标准加密方式。
计算机安全技术密码技术
1,DES的基本思想
DES算法的基本思想是将二进制序列的输入明文,以 64位为数据分组,然后对这些明文进行替换和换位,最后形成密文。如图
5.3所示。
DES算法的基本特点如下:
( 1)对称算法:既可用于加密,也可用于解密。
( 2) 64位的密钥,使用长度为 56位( 64位明文中,有 8位用于奇偶校验)。
( 3)加密算法是混淆与扩散的结合,或者说是换位与臵换的结合。
( 4)每个 DES都在明文上实施 16重相同的组合技术,如图 5.4
所示。这种重复性可以被非常理想地应用到一个专用芯片中。
计算机安全技术密码技术图 5.3 DES加密计算机安全技术密码技术
2,DES加密过程细化图 5.5为对图 5.4的细化。从图中可以看出,
DES加密过程主要涉及如下环节(模块):
初始换位和逆初始换位;
将 64位明文分为 32位的左右两段,L0和 R0;
计算机安全技术密码技术图 5.4 DES加密过程计算机安全技术密码技术图
5
.
5
D
E
S
加密过程详解计算机安全技术密码技术进行 16轮相同的迭代运算:混淆 +异或 +交换;
将最后左右两段合并;
生成每一轮的子密钥。
表 5.4为初始换位 IP和逆初始换位 IP-1。初始变换 IP为将 T=t1t2t3…t63t64 变换成 T0=t58t50t42…t15t7 。
IP-1为 IP的逆变换。
将明文分成左右两段和将左右两段合并比较简单,这里就不介绍了。关于每一轮的迭代和每一轮使用的子密钥的生成,下面专门介绍。
计算机安全技术密码技术表 5.4初始换位 IP和逆初始换位 IP-1
计算机安全技术密码技术
3,子密钥的生成图 5.6为生成每一轮使用的 48位子密钥的过程。
下面介绍它的各个环节。
( 1)压缩变换 PC-1与将分割得到 C0,D0
PC-1的作用是去掉奇偶校验位 8,16,24,32,
40,48,56,64后,按 56位进行换位。换位算法如表 5.5所示。
( 2)密钥移位
56位密钥被分成两部分之后,每一部分 28位。
在每一轮中进行一次左移位,左移的位数以轮数而异,如表 5.6所示。
计算机安全技术密码技术图 5.6生成每一轮使用的 48位子密钥的过程计算机安全技术密码技术计算机安全技术密码技术
( 3)压缩臵换 PC-2
PC-2是从 56位密钥中,取出 48位。其算法如表 5.7所示。
4,f算法观察图 5.5,现在就剩下 f算法还没有介绍了。 f
算法是 DES精华所在,用它来实现分组加密的扩展和混淆。在 DES中,其他部分是线性的,而 f算法是非线性的。如图 5.7所示,f算法主要由 E-盒,S-盒和
P-盒组成。
计算机安全技术密码技术表 5.7 PC-2压缩算法计算机安全技术密码技术图 5.7 f算法计算机安全技术密码技术
( 1) E-盒
E-盒( Expansion Permutation,扩展臵换)是把数据明文的右半部分 Ri从 32位扩展到 48位。这样的好处有:
可以与 48位的密钥进行异或运算;
有利于产生雪崩效应( Avalanche Effect),尽快地使输出(密文)的每一位依赖输入(明文和密钥)的每一位。
提供了更长的结果,以便替代运算时可以压缩。
计算机安全技术密码技术具体的办法是对于每个输入分组,在输出分组中将第
1,4位分别对应 2位,第 2,3位不变。如图 5.8所示。这样,
尽管输出分组大于输入分组,但每一个输入分组产生唯一的输出分组。
( 2) S-盒代换
S-盒是进行了压缩后的密钥( 56位 → 48位)与扩展后的明文分组( 32位 → 48位)异或后进行的。目的是对 48位的输入替代压缩成 32位的输出。替代由 8个 S-盒进行。每个 S-盒有 6位输入,4位输出。如图 5.9所示,这 8个 S-盒,可以将 48
位的输入变换为 32位的输出。
计算机安全技术密码技术图 5.8 E-盒扩展臵换计算机安全技术密码技术图 5.9 8个 S-盒的输入和输出计算机安全技术密码技术
8个 S-盒的 6变 4代换,按表 5.8查表进行,并且每个盒的代换都不相同。
查该表的方法是,用 b1b6(二进制)查行,用
b2b3b4b5(二进制)查列。例如,S3的 6位输入为 101100,则用 10( 2)查 S3的第 10行,用 0110( 6)查 S3的 6列,得到 3。
即输出的 4位为 0011。
( 3) P-盒臵换是对 S-盒的 32位输出进行一次换位。表 6.9给出了每位输入将要换到的新位臵。
例如,原来的第 28位,移位到了第 7位的位臵上。
计算机安全技术密码技术表 5.8 8个 S-盒查表代换计算机安全技术密码技术表 5.9 P-盒臵换计算机安全技术密码技术
4、解密处理我们可以清楚地看到 Ri和 Li是如何在密钥 K的作用下进行交换的 。 在加密处理中下列关系是成立的:
加密,Lj=Rj-1 ; Rj=Lj-1⊕ f(Rj-1,Kj)
由此可推出解密,Rj-1=Lj ; Lj-1=Rj⊕ f(Rj-1,Kj)
进一步可推出 Lj-1=Rj⊕ f(Lj,Kj)
注意:,在加密和解密过程中第 16层处理结束时 L和 R
要进行交换 。
计算机安全技术密码技术单钥体制 —— 分组密码总结,
加密过程,式 (1)和式 (2)的运算进行 16次后就得到密文组。
L0R0?IP(〈 64 bit 输入码 〉 )
Li?Ri-1 i=1,...,16 (1)
Ri?Li-1?f(Ri-1,ki) i=1,...,16 (2)
〈 64 bit密文 〉?IP-1 (R16L16)
解密过程,DES的加密运算是可逆的,其解密过程可类似地进行 。
R16L16?IP(〈 64 bit密文 〉 )
Ri-1?Li i=16,...,1 (3)
Li-1?Ri?f(Li,ki) i=16,...,1 (4)
〈 64 bit明文 〉?IP-1 (R0L0)
计算机安全技术密码技术单钥体制 —— 分组密码
5 DES算法作用分析安全性 DES的安全性完全依赖于所用的密钥。 从 DES诞生起,
对它的安全性就有激烈的争论,一直延续到现在。
互补性 DES算法具有下述性质 。 若明文组 x逐位取补得,密钥
k 逐位取补得,且 y=DESk(x),则有 y~=DESk~ (x~),式中,y~是 y的逐位取补 。 称这种特性为算法上的互补性 。 这种互补性会使 DES在选择明文破译下所需的工作量减半 。
弱密钥和半弱密钥 DES算法在每次迭代时都有一个子密钥供加密用 。 如果给定初始密钥 k,各轮的子密钥都相同,即有
k1=k2=… =k16,就称给定密钥 k为 弱密钥 (Weak key)。
计算机安全技术密码技术单钥体制 —— 分组密码若 k为弱密钥,则有
DESk(DESk(x))=x
DESk-1(DESk-1(x))=x
即以 k对 x加密两次或解密两次都可恢复出明文 。 其加密运算和解密运算没有区别 。 而对一般密钥只满足
DESk-1(DESk(x))=DESk(DESk-1 (x))=x
弱密钥下使 DES在选择明文攻击下的搜索量减半。
如果随机地选择密钥,则在总数 256个密钥中,弱密钥所占比例极小,而且稍加注意就不难避开 。 因此,弱密钥的存在不会危及 DES的安全性 。
计算机安全技术密码技术单钥体制 —— 分组密码密文与明文,密文与密钥的相关性 。 Meyer[1978]详细研究了
DES的输入明文与密文及密钥与密文之间的相关性 。 表明每个密文比特都是所有明文比特和所有密钥比特的复合函数,并且指出达到这一要求所需的迭代次数至少为 5。 Konheim[1981]用?2检验证明,
迭代 8次后输出和输入就可认为是不相关的了 。
S盒设计 。 DES靠 S盒实现非线性变换 。
密钥搜索机 。 对 DES安全性批评意见中,较为一致的看法是
DES的密钥短了些 。 IBM最初向 NBS提交的建议方案采用 112 bits密钥,但公布的 DES标准采用 64 bits密钥 。 有人认为 NSA故意限制
DES的密钥长度 。
计算机安全技术密码技术单钥体制 —— 分组密码
DES的密钥量为 256=7.2× 1016= 72 057 594 037 927 936?1017
个 。 若要对 DES进行密钥搜索破译,分析者在得到一组明文 -密文对条件下,可对明文用不同的密钥加密,直到得到的密文与已知的明文 -密文对中的相符,就可确定所用的密钥了 。 密钥搜索所需的时间取决于密钥空间的大小和执行一次加密所需的时间 。 若假定 DES加密操作需时为 100?s(一般微处理器能实现 ),
则搜索整个密钥空间需时为 7.2× 1015秒,近似为 2.28× 108年 。
若以最快的 LSI 器件,DES 加 密 操 作 时 间 可 降 到 5?s,也要
1.1× 104年才能穷尽密钥 。 但是由于差分和线性攻击法的出现以及计算技术的发展,按 Wiener介绍,在 1993年破译 DES的费用为 100万美元,需时 3个半小时 。 如果将密钥加大到 80 bits,采用这类搜索机找出一个密钥所需的时间约为 6700年 。
计算机安全技术密码技术
DES算法自 1975年 3月公开发表,至 1977年才被正式定为加密标准 。 这一期间,设计者曾要求全世界向它攻击,
围绕着 DES算法在美国也有过一番的讨论 。
斯坦福大学的研究小组认为尽管 DES算法的 S盒的设计不是线性的,然而也不是随机的,可能还存在某些弱点 。
但尽管如此,目前还没有找到一种有效的攻击方法 。
赫尔曼和迪菲提出了对密钥进行穷举搜索,设计一种专用机的设想 。 建议增长密钥的长度 。
DES标准加密算法得到了广泛的认可和应用 。
国际标准化组织 (ISO)已放弃将 DES算法作为国际标准,
并宣布今后不再将任何密码算法做为标准 。
计算机安全技术密码技术实 例,设 通 信 双 方 使 用 R 对明文 COMPUTER,使用密钥
PGOGRAME 按照 DES算法进行加密,其密文是什么?
01001010
10100010
00101010
10101010
00001010
10110010
11110010
11000010
11000001
01100000
00000000
00000000
11101010
01101110
00011101
11111111
初始置换
10100010
10110010
10000010
00001010
11100010
11110010
01001010
00001010
计算机安全技术密码技术
1100001
0001000
1100110
1110000
1000000
0000011
1111110
0000000
011000
010010
011010
101001
010101
000100
000100
000101
011000
001010
110000
000000
000000
000000
000000
000001
K R
000000
011010
101010
101001
010101
000100
000100
000100
B
S1=2,S2=6,S3=6,S4=11,S5=8,S6=0,S7=7,S8=13
0010 0110 0110 1011 1000 0000 0111 1101
P=1100 1010 1011 0101 0000 0000 1110 0100
L=1111 1111 1011 1000 0111 0110 0101 0111
R= 0011 0101 0000 1101 0111 0110 1011 0011
L`=0000 0000 0000 0000 0000 0110 1000 0011
计算机安全技术密码技术
11000000
00100000
10100010
10100010
10001000
00111010
11110000
11001010
S/SI/\/DLE/E/E/EOF/ETX
计算机安全技术密码技术b7b6b5
b4b3b2b1 000 001 010 011 100 101 110 111
0000 NUL DLE SP 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2,2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOF DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ’ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB *,G Z j z
1011 VT ESC + ; K [ k {
1100 FF FS,< L \ l |
1101 CR GS - = M ] m }
1110 SO RS,> N ^ n ~
1111 SI US /? O _ o DEL
计算机安全技术密码技术单钥体制 —— 分组密码 分组密码运行模式分组密码每次加密的明文数据量是固定的分组长度 n,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的。因此需要做一些变通,灵活地运用分组密码。另一方面,即使有了安全的分组密码算法,也需要采用适当的工作模式来隐蔽明文的统计特性、数据的格式等,以提高整体的安全性,降低删除、重放、插入和伪造成功的机会。所采用的工作模式应当力求简单、有效和易于实现。本节将以
DES为例介绍分组密码的实用工作模式。美国 NSB在 [FIPS
PUB 74和 81]中规定了 DES的四种基本工作模式,电子码本
(ECB),密码反馈链接 (CBC),密码反馈 (CFB),输出反馈
(OFB) 。 ANSI,ISO和 ISO/IEC也规定了类似的工作模式
[ANSI X3.106; ISO 8732; ISO/IEC 10116]。这四种模式也可用于其它分组密码 。
计算机安全技术密码技术单钥体制 —— 分组密码
1.电码本 ECB (Electronic Code Book)模式 。
它直接利用 DES算法分别对各 64 bits数据组加密 。 在给定密钥 k 时,各明文组 xi 分别对应于不同的密文组
yi=DESk(xi)
在给定密钥下,x有 264种可能取值,y也有 264种可能取值,各 (x,y)对彼此独立,构成一个巨大的单表代换密码,因而称其为电码本模式 。
计算机安全技术密码技术单钥体制 —— 分组密码缺点,在给定的密钥下同一明文组总产生同样的密文组,
这会暴露明文数据的格式和统计特征 。 明文数据都有固定的格式,需要以协议的形式定义,有大量重复和较长的零串,
重要的数据常常在同一位臵上出现 。 其最薄弱的环节是消息起始部分,其中包括格式化报头,内含通信地址,作业号,
发报时间等信息 。 所有密码体制中都需要认真对待这类格式的死框框 。 在 ECB模式,所有这些特征都将被反映到密文中,
使密码分析者可以对其进行统计分析,重传和代换攻击 。
计算机安全技术密码技术图 ECB模式
2,密码分组链接 CBC(Cipher Block Chaining)模式 。
在 CBC模式下,每个明文组 xi加密之前,先与反馈至输入端的前一组密文 yi-1按位模 2求和后,再送至 DES加密 。 所有运算均按 64 bit 并 行 实 施 。 在 CBC 模 式 下 有
y=DESk(xi?yi-1)
x y
k
DES y x
k
DES-1
单钥体制 —— 分组密码计算机安全技术密码技术单钥体制 —— 分组密码可知,各密文组 yi不仅与当前明文组 xi有关,而且通过反馈作用还与以前的明文组 x1,x2,?,xi-1,有关 。 密文经由存贮器实现前馈,使解密输出
xi=DES-1k(yi)?yi-1=DES-1k(DESk(xi?yi-1))?yi-1=xi?yi-
1?yi-1
初始矢量 IV(Initial Vector):第一组明文 xi加密时尚无反馈密文,为此需要预先臵入一个 。 收发双方必须选用同一 IV。此时有 y1=DESk(x1+IV),x1=DES-1k(y1)+IV
通信中一般将 IV作为一个秘密参数,可以采用 ECB
模式用同一密钥且加密后送给收方。实际上,IV的完整性要比其保密性更为重要。
计算机安全技术密码技术 单钥体制 —— 分组密码
CBC模式xi yi
k
DES yi x’
k
DES-1+ +
64 bit存储 64 bit存储
y i-1
在 CBC模式下,最好是每发一个消息,都改变 IV,比如将其值加一 。
计算机安全技术密码技术单钥体制 —— 分组密码填充 (Padding),给定加密消息的长度是随机的,按 64
bit分组时,最后一组消息长度可能不足 64 bit。 可以填充一些数字,如 0,凑够 64 bit。 当然,用随机选取的数字填充更安全些 。 接收者如何知道哪些数字是填充的无用数字呢? 这需要加上指示信息,通常用最后八位 (为 1字节 )作为 填充指示符,简记作 PI。 它所表示的十进制数字就是填充占有的字节数 。 数据尾部,填充字符和填充指示符一起作为一组进行加密 。 这种方法会有些数据扩展 。 当不希望有扩展时,可采用其它措施 。 若消息分组最后一段只有 k bit,可将前一组加密结果 yn-1中最左边 k bit作为密钥与其逐位模 2相加后作为密文送出 。 这种做法使最后 k bit的安全性要降低,但一般消息的最后部分多为检验位,因此问题不大 。
计算机安全技术密码技术 单钥体制 —— 分组密码
3 k-比特密码反馈 CFB(Cipher Feedback)模式 。
若待加密消息必须按字符 (如电传电报 )或按比特处理时,可 采用 CFB模式 。 xi和 yi 都为 k-bit段,L=[64/k],即
kL?64 bit。 xi是取自寄存器右边的 64 bit。 k可取 1到 64,一般为 8的倍数,常用 k= 8。 CFB实际上是将 DES作为一个密钥流产生器,在 k bit密文反馈下,每次输出 k-bits密钥,对输入的明文 k-bits进行并行加密 。 这就是一种自同步流密码 (SSSC—
Self-Synchronizing Stream Cipher)。 当 k= 1时就退化为前面讨论的流密码了 。 CFB与 CBC的区别是反馈的密文不再是 64bit,
而是长度为 k,且不是直接与明文相加,而是反馈至密钥产生器 。
计算机安全技术密码技术单钥体制 —— 分组密码
+ +xi xiyi yi
k kXi 64bit Xi 64bit
Yi 64bit Yi 64bit
DES DES-1
选最左边
k 位选最左边
k 位
k bit k bit
yi-L yi-2 yi-1
CFB模式计算机安全技术密码技术单钥体制 —— 分组密码
CFB的 优点 是它特别适于用户数据格式的需要 。
在密码体制设计中,应尽量避免更改现有系统的数据格式和一些规定,这是一个重要的设计原则 。 CFB和 CBC一样,由于反馈的作用而能隐蔽明文数据图样,也能检测出对手对于密文的篡改 。
CFB的 缺点 有类似于 CBC之处,也有不同之处 。
首先,它对信道错误较敏感,且会造成错误传播 。 所幸的是,
这种模式多用于数据网中较低层次,其数据速率都不太高 。
最后,CFB也需要一个初始矢量,并要和密钥同时进行更换,
但由于其初始矢量在起作用过程中要经过 DES加密,故可以明文形式传给收方 。
计算机安全技术密码技术 单钥体制 —— 分组密码
4 输出反馈 OFB(Output Feedback)模式 。
这种模式将 DES作为一个密钥流产生器,其输出的 k-bit密钥直接反馈至 DES的输入端,同时这 k-bit密钥和输入的 k-bit明文段进行对应位模 2相加 。 这一模式的引入是为了克服 CBC和 CFB的错误传播所带来的问题 。 由于语言或图像编码信号的冗余度较大,可容忍传输和存储过程中产生的少量错误,但 CBC或 CFB中错误传播的效应,可能使偶然出现的孤立错误扩大化而造成难以容忍的噪声 。
计算机安全技术密码技术单钥体制 —— 分组密码这种密钥反馈流加密方式虽然克服了错误传播,
但同时也引入了流密码的缺点 。 对于密文被篡改难以进行检测,但由于 OFB多在同步信道中运行,对手难以知道消息的起止点而使这类主动攻击不易奏效 。
OFB模式不具有自同步能力,要求系统要保持严格的同步,否则难以解密 。 重新同步时需要新的 IV,可以用明文形式传送 。 在实用中还要防止密钥流重复使用,以保证系统的安全 。
计算机安全技术密码技术单钥体制 —— 分组密码
+x
i yi
k 64bit
64bit
DES
选最左边
k 位
ki
64 bit 寄存器
k bit k bit +
xiyi
k 64bit
64bit
DES-1
选最左边
k 位
k bit
64 bit 寄存器
k bitki
OFB模式计算机安全技术密码技术 单钥体制 —— 分组密码比较和选用,上述四种基本模式各有其特点和用途 。
ECB模式,简单,高速,但最弱,易受重发攻击,一般不推荐 。
CBC,CFB,OFB的选择取决于实用特殊考虑 。
CBC适用于文件加密,但较 ECB慢,且需要另加移存器和组的异或运算 。 但安全性加强 。 当有少量错误时,也不会造成同步错误 。 软件加密最好选用此种方式 。
OFB和 CFB较 CBC慢许多 。 每次迭代只有少数 bit(如一字节 )完成加密 。 若可以容忍少量错误扩展,则可换来恢复同步能力,
此时用 CFB。 若不容许少量错误扩展,则选用 OFB。
在字符为单元的流密码中多选 CFB模式,如终端和主机间通信 。
而 OFB用于高速同步系统,不容忍差错传播 。
计算机安全技术密码技术
5.3.2单钥体制 —— 分组密码 AES
1997年 1月,美国 NIST向全世界密码学界发出征集 21世纪高 级加密 标准 ( AES——Advanced Encryption
Standard) 算法的公告,并成立了 AES标准工作研究室,
1997年 4月 15日的例会制定了对 AES的评估标准 。
AES的标准提纲,( 1) AES是公开的; ( 2)
AES为单钥体制分组密码; ( 3) AES的密钥长度可变,
可按需要增大; ( 4) AES适于用软件和硬件实现; ( 5)
AES可以自由地使用,或按符合美国国家标准 ( ANST)
策略的条件使用; ( 6) 满足以上要求的 AES算法,需按下述条件判断优劣,a,安全性,b,计算 效率,c,内 存要求,
d,使用 简便性,e,灵活性 。
计算机安全技术密码技术单钥体制 —— 分组密码
1998年 4月 15日全面征集 AES算法的工作结束 。 1998年 8
月 20日举行了首届 AES讨论会,对涉及 14个国家的密码学家所提出的候选 AES算法进行了评估和测试,初选并公布了 15个被选方案,
供大家公开讨论 。 这些算法设计思想新颖,技术水平先进,算法的强度都超过 3-DES,实现速度快于 3-DES。
1999年 8月 9日 NIST 宣布第二轮筛选出的 5个候选算法
2000年 10月 2日 NIST 宣布 Rijndael 为 AES 的算法 。
计算机安全技术密码技术
AES的设计原则能抵抗所有已知的攻击;
在各种平台上易于实现,速度快;
设计简单。
Rijndael是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变。
计算机安全技术密码技术分组长度( bit)
128
192
256
密钥长度( bit)
128
192
256
表 1,分组长度和密钥长度的不同取值计算机安全技术密码技术
AES 算法加密部分的实现
1,明文分组和密钥的组织排列方式
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
Fig 1,以明文分组为 128bits为例组成的阵列计算机安全技术密码技术
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
0 4 8 12 16 20
1 5 9 13 17 21
2 6 10 14 18 22
3 7 11 15 19 23
0 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
Fig 2,以明文分组(或密钥)为 128bits,192bits,256bits为例组成的阵列计算机安全技术密码技术
2,一些相关的的术语定义和表示状态( State):密码运算的中间结果称为状态。
State的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有 4行,列数记为 Nb。
Nb=分组长度( bits) ÷ 32
Nb可以取的值为 4,6,8,对应的分组长度为 128,192,256
bits。
密码密钥( Cipher Key)的表示,Cipher Key类似地用一个 4行的矩阵阵列来表示,列数记为 Nk。
Nk=密钥长度( bits) ÷ 32
Nk可以取的值为 4,6,8,对应的密钥长度为 128,
192,256 bits。
计算机安全技术密码技术
Fig 3,当 Nb=6时的状态和 Nk=4时的密钥布局
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5
Nb = 6
明文长度 = 192 bits
K0,0 K0,1 K0,2 K0,3
K1,0 K1,1 K1,2 K1,3
K2,0 K2,1 K2,2 K2,3
K3,0 K3,1 K3,2 K3,3
Nk = 4
密钥长度 = 128 bits
计算机安全技术密码技术Fig 4,分组长度和密钥长度均为 128 bits时的
Rijndael加密算法框图数据 /
密钥模加轮
0

1

8
最后一轮密钥扩展 密文密钥明文加密时,首先将输入的 128位数据排成 4*4的字节矩阵,然后根据不同的密钥长度,进行 10(128位密钥 ),12(192位密钥 )或 14( 256位密钥 )轮的运算。
计算机安全技术密码技术表 2,圈数( Round)的不同取值轮数( Round) Block Length=128 Block Length=192 Block Length=256
Key
Length=128 10 12 14
Key
Length=192 12 12 14
Key
Length=256 14 14 14
计算机安全技术密码技术Fig 9,分组长度和密钥长度均为 128
bits时的 Rijndael轮变换过程框图
S盒变换 行移位 列混合 加密钥轮输出轮密钥轮输入每个轮函数由 4层组成,第一层 (盒变换 )为非线性层,将一个
8*8的盒应用于每一个字节;第 2层 (行移位变换 )和第 3层 (列混合 )是线性混合层,将 4*4的阵列按行位移,按列混合;在第 4层 (加圈密钥变换 ),轮密钥异或到阵列的每个字节。除最后一轮中没有列混合外,其他轮次均相同。密钥扩展的过程根据密钥长度的不同会有所差异。解密过程和加密稍有不同,
除了 S盒,其他过程分别是加密过程的逆运算。
计算机安全技术密码技术
3,Rijndael密码的构成一个初始圈密钥相加;
Rnd- 1圈;
一个结尾圈。
Rijndael密码由以下三个部分组成:
计算机安全技术密码技术与一些其它算法的比较:
与 DES相比:
1,无 DES中的弱密钥和半弱密钥;
2,紧凑的设计使得没有足够的空间来隐藏陷门。
3.具有扩展性:密钥长度可以扩展到为 32bits倍数的任意密钥长度,分组长度可以扩展到为 64bits倍数的任意分组长度。圈数和循环移位偏移量作为参数,要重新定义。
计算机安全技术密码技术
5.4 非对称密码
5.4.1双钥密码体制( RSA)
1977年三位年青数学家 R.L.Rivest,A.Shamir和
L.Adleman 发现了一种用数论构造双钥的方法,称作 MIT体制,后来被广泛称之为 RSA体制 。 它既可用于加密,又可用于数字签字,易懂且易于实现,
是目前仍然安全并且逐步被广泛应用的一种体制 。
国际上一些标准化组织 ISO,ITU,及 SWIFT等均已接受 RSA体制作为标准 。 在 Internet中所采用的
PGP(Pretty Good Privacy)中也将 RSA作为传送会话密钥和数字签字的标准算法 。
计算机安全技术密码技术非对称密码体制的最大特点是:每个用户的密钥由两个不同的部分组成,公开的加密密钥 (公钥 )和保密的解密密钥 (私钥 ),而且即使算法公开,也很难从其中一个密钥推出另一个 。 这样,任何人都可以使用其他用户的公开密钥来对数据加密,但是,只有拥有解密密钥的用户才能对加过密的数据进行解密 。
1,体制,RSA算法的基本思想是:发送端将要发送的信息用接收端的公钥进行加密,数据传送到接收端后,接收端用自己的私钥来解密,只有密文和公钥是无法将密文解开的 。 非对称密码体制中采用的是一对密码,给别人用的叫公钥,给自己用的叫私钥 。 这两个密钥可以互相并且只为对方进行加解密,用公钥加密后的东西,只有私钥能解 。
计算机安全技术密码技术
RSA算法最关键的思想是寻找一个“单向函数”,
所谓“单向函数”是指不可逆函数。简单举例:先找出两个非常大的质数 P和 Q,算出 N= (P*Q),找到一个小于
N的 E,使 E和 (P-1)*(Q-1)互质。算出数 D,使 D*E=1
MOD( P-1)*(Q-1)。公钥为 (E,N),私钥为 (D,N)。用户可以销毁 P和 Q。
2,RSA的安全性
RSA算法排列成下面的步骤:
选择两个大质数 P和 Q,每个都大于 10100
计算 N= (P*Q),Z=(P-1)*(Q-1);
选择一个与 Z有关的质数,令其为 D,
找到一个小于 N的 E,使 E满足 D*E=1 (模 Z) D保密。
计算机安全技术密码技术事先计算好这些参数,就可以准备加密了 。 将明码 (可当作位串看待 )划分成块,使得每个明码报文 M落在 0<M<N之间,
这可以通过将明码分成每块有 k位的组来实现,并且 k是使得
Zk<N成立的最大整数 。 加密一个报文 M,计算 C=ME(模 N)。
解密 C,计算 M=CD(模 N)。 可以证明,在确定的范围内,加密和解密函数是互逆的 。 为实现加密你需要 E和 N,为实现解密你需要 D和 N。 所以,公钥由 (E,N)组成,私钥由 (D,N)或只是 D组成 。
二,RSA密码体制计算机安全技术密码技术现在我们就来看这个简单的例子 。 我们选择 P=3,Q=11,
则 N=33,Z=20。 D的一个适合值是 D=7,因为 7和 20没有公共因子 。 选定这些值后,E可以通过求解式 7*E=1(模 20)得出,
即 E=3。 明码报文 M的一个密码 C,则由 C=M3(模 33)将密文解密 。 因为质数选择的太小,所以 M必须小于 33。 因此,每个明码块只能包含一个字符,结果形成了一个单一字母表的代换密码 。
二,RSA密码体制计算机安全技术密码技术明文 密文 解密字母序号 M3
M3(MO
D33) C
7 C
7(MO
D33)
字母
S 19 6859 28 13492928512 19 S
U 21 9261 21 1801088541 21 U
Z 26 17576 20 128000000 26 Z
A 1 1 1 1 1 A
N 14 2744 5 78125 14 N
N 14 2744 5 78125 14 N
E 5 125 26 8031810176 5 E
二,RSA密码体制计算机安全技术密码技术
RSA的安全性
2)RSA的速度。由于 RSA进行的都是大数计算,使得 RSA最快的情况也比 DES慢上 100倍,
1)RSA的安全性。这个问题依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,也没有证明破译 RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解 n是最显然的攻击方法。目前人们已能分解 140多位十进制数的大素数。因此,模数 n必须选大一些,依具体适用情况而定。
计算机安全技术密码技术
3)RSA的选择密文攻击。 RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息做一下伪装 (Blind),让拥有私钥的实体签署。然后,经过计算就可得到想要的信息。
实际上,攻击利用的都是同一个弱点 ——每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;二是决不对陌生人送来的随机文档签名,签名时首先使用 One-Way
Hash Function对文档作 HASH处理,或同时使用不同的签名算法。
RSA的安全性计算机安全技术密码技术RSA的安全性
4),RSA的公共模数攻击。若系统中共有一个模数,只是不同的人拥有不同的加密密钥和解密密钥,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密;这些公钥共模而且互质,那么,该信息无需私钥就可得到恢复。设 P为信息明文,两个加密密钥为 e1
和 e2,公共模数是 n,则计算可得,C1=Pe1mod n C2=Pe2mod n。密码分析者若知道 n,e1,e2,C1和 C2,就能得到 P。如果知道给定模数的一对加密密钥 e和解密密钥 d,则有利于攻击者分解模数或计算出其他成对的 e’和 d’,而无需分解模数。解决办法只有一个,那就是不要共享模数。
计算机安全技术密码技术RSA的安全性
6)RSA的缺点。①产生密钥很麻烦,受到素数生成技术的限制,因而难以做到一次一密。②分组长度太大。为保证安全性,n至少要
600位 (bit)以上,运算代价很高,尤其是速度较慢;且随着大数分解计算技术的发展,这个长度还在增加,不利于数据格式的标准化。
目前,SET协议中要求 CA采用 2048比特长的密钥,其他实体使用
1024比特的密钥。 RSA最大的缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是 NPC问题。
5)RSA的小指数攻击。有一种提高 RSA速度的建议是使公钥 e取较小的值,这样会使加密变得易于实现,速度也会有所提高。但这是不安全的。解决办法就是加密密钥 e和解密密钥 d都取较大的值。
计算机安全技术密码技术
5.4.2 非对称密码 —— 背包加密体制
1、密钥生成
1)随机选取一超递增序列 (e1,e2,,en),用它作为用户的秘密密钥,记为 D=(e1,e2,,en) 。
2)选取一对大的且互素的数 w,N,并把背包序列变为困难的背包序列; T(ei)=weimod N
3)将 (T(e1),T(e2),,T(en))公开作为 E,记为
E= (T(e1),T(e2),,T(en))
计算机安全技术密码技术
5.4.2非对称密码 —— 背包加密体制
2、加密过程
1)在公开密钥数据库中查得用户 U的公开密钥
E= (T(e1),T(e2),,T(en))
2)将明文表示成二元序列,并适当分组 x=x1x2 xr,每组长 nb
3)对每一组明文作加密变换
Yi=E(xi)=∑xijT(ej)
4)将密文 y=y1y1 yr传送给用户 U。
3、解密过程
1)计算 yi’ =w-1yimodN
2)按照超递增向量序列 (e1,e2,,en),并利用
w-1yi=w-1yimodN可从 yi’ 还原 xi’
3)合并分组得到明文 x=x1x2 xr。
计算机安全技术密码技术
5.4.2非对称密码 —— 背包加密体制例如,设,考虑超递增序列
A=(103,107,211,430,863,1718,3449,6907,27610)
选取 N=55207,W=25236,则 W-1=1061
B=(4579,50316,24924,30908,27110,17953,32732,16653,
22075,53620)
某人要传送明文 1010110100给用户 U,他首先计算
Yi=E(xi))=4579+24924+27110+17953+16553=91119
然后将 91119传递给用户 U,用户收到 91119后计算
Y’ =w-1ymodN=1061*91119mod55207=9802
然后解超递增背包问题,得 X=101011010.这样用户就还原了明文计算机安全技术密码技术
5.4.3非对称密码 —— ElGamal加密体制随机选取一个大素数 P(200位十进制数 ),选一个数 g(模 P的本原根 )把 p,g对每个用户公开
1、密钥生成
1)随机选取一整数作为用户的秘密密钥,记为 D=(x) 。
2)计算 y=gx mod p
3)将 E公开作为用户的公开密钥 E,记为 E=(y)
计算机安全技术密码技术非对称密码 —— ElGamal加密体制
2、加密过程
1)在公开密钥数据库中查得用户 U的公开密钥
E=(y)
2)随机地在 0与 p-1之间取一整数 k;
3)计算 K=yk mod p,c1=gk mod p,c2=km mod p
4)取 (c1,c2)作为 m的密文传送给用户 U。
3、解密过程
1)计算 K=c1k mod p
2)计算 m=c2k-1 mod p
计算机安全技术密码技术
5.4.4ECC加密算法椭圆曲线密码体制 (elliptic curve cryptography,
ECC)是一种能适应未来通信技术和信息安全技术发展的新型密码体制,它在运算速度和存储空间的优势,正在成为一种日渐成熟的技术。
椭圆曲线应用到密码学上最早是由 Noblih和
Victof Millu在 1985年分别独立提出的,它是目前已知的所有公钥密码体制中,能够提供最高比特强度的一种公钥体制,SET(secure electronic
transaction)协议的制定者已把它作为下一代 SET协议中缺省的公钥密码算法。
计算机安全技术密码技术在基于椭圆曲线的加解密实现方案中,首先要给出椭圆曲线域的参数来确定一条椭圆曲线。在 IEEE Pl363标准中,定义其参数为一个七元组,T=(q,FR,a,b,G,n,h),其中 Q代表有限域
GF(q),q为素数或 2m,FR为域表示法。
曲线的方程,y2=x3+ax+b 当 q为素数时;
Y2+xy=x3+ax+b 当 q为 2m时;
其中,a,b是方程中的系数,G为基点; n为大素数并且是点 G的阶。主要的安全性参数是 n,因此 ECC密钥的长度就定义为 n的长度。由以上参数可以唯一确定一个椭圆曲线。
然后,在 [1,n-1]之间随机确定一个整数 d,作为其私钥,
而以点 Q=dG(G为基点 )作其公钥;由此就确定了密钥对 (d,Q)。
在这个密码体制中,具体的曲线,基域 Fq,基点 G及其阶 n,以及公钥 Q都是系统公开参数,而私钥 D是保密的。
计算机安全技术密码技术基于椭圆曲线密码体制 (ECC)的加密过程可以描述如下。假设用户
A欲将明文 m加密发送给 B,A执行以下操作:
1)查找 B的公钥( E( Fq),G,n,QB)
2)将 m表示成一个域元素,即 m∈ Fq;
3)在区间 [1,n-1]内选取一个随机数 k;
4)计算点 KG=(x1,y1);
5)依据 B的公钥计算点 KQB(x2,y2),若 x2=0,则返回第 3)步;
6)计算 C=m*x2;
7)传送加密数据 (x1,y1,C)给 B。
计算机安全技术密码技术基于椭圆曲线密码体制 (ECC)的解密过程可以描述如下。
B收到 A的密文( x1,y1,C)后,执行如下操作。
1)使用私钥 dB,计算 dB( x1,y1) =( x2,y2),
再计算 Fq中的( x2) -1
2)计算 m=C( x2) -1得到明文 m。
计算机安全技术密码技术椭圆曲线加密算法 ECC与 RSA算法相比,有着很多技术优点:
ECC的安全性和性能分析安全性能更高 计算量小和处理速度快带宽要求低存储空间占用小加密算法的安全性能一般通过该算法的抗攻击强度来分析。 ECC椭圆曲线上点群离散对数 (ECDlP)的计算在时间复杂度上目前是完全指数级,而 RSA是亚指数级的。
在相同的计算资源条件下测试私钥处理速度 (解密 ),ECC要比 RSA,DSA快得多。同时 ECC系统的密钥生成速度比
RSA快百倍以上。
ECC的密钥尺寸和系统参数与 RSA,DSA相比要小得多。 160位 ECC与 1024位 RSA,DSA具有相同的安全强度,210位 ECC则与 2048位 RSA,DSA具有相同的安全强度。这意味着 ECC所占的存储空间要小得多。
当对长消息进行加解密时,密码系统有相同的带宽要求,但应用于短消息时 ECC带宽要求却低得多。而公钥加密系统多用于短消息,例如,用于数字签名和用于对称系统的密钥传递等。带宽要求低还使 ECC在无线网络领域具有广泛的应用前景。
当然,ECC体制中也存在着一些难题,例如,如何确定椭圆曲线的域,如何在特定的域上选择合适的椭圆曲线的基点等。
计算机安全技术密码技术对称和非对称密码体制的比较密码分发简单 秘密保存的密钥减少 对等实体验证在对称密码体制中,加密方每次应用新的密钥,都要通过某种秘密渠道把密钥传送给解密方,在传递过程中密钥容易泄密。而非对称密码体制中的加密密钥和解密密钥是不同的,并且不能由加密密钥推断出解密密钥,从而加密密钥表可以像电话号码本一样公开。
使用对称密码体制的网络通信中,如果任意两个用户通信都使用互不相同的密钥,N个人就要使用
N(N-1)/2个密钥,密钥量大,难以管理。而采用非对体制,每个成员只要秘密保存自己的解密密钥,
N个通信成员只需要产生 N对密钥。
公钥密码体制可以容易地实现对称密码体制难以实现的签名验证机制。
虽然非对称密码体制具有密钥易管理和易于实现签名验证机制,但是,目前其加密速度则远远低于对称密码体制。
另外,密码分析实践表明,具有相同密钥长度的 RSA算法的保密强度也低于 DES。为了增强保密强度而增加密钥长度,
又会使加密速度和密钥生成速度更慢。
在实际的保密系统设计中,往往综合应用上述两种密码体制。普遍采用的是双钥和单钥密码相结合的混合加密体制,即加解密时采用单钥密码,密钥传送则采用双钥密码。这样既解决了密钥管理的困难,
又解决了加解密速度的问题 。
计算机安全技术密码技术
5.4.5 混合密码系统的实现:
混和密码系统 ( DES—RSA) 采用数据加密标准 DES
算法来实现数据通信过程中的加密,解密处理,而 DES算法中的密钥则通过公开密钥系统 RSA算法加密,然后再通过普通 ( 而不是保密 ) 信道传送给数据接收方 。 其具体步骤如下:
a,由数据的发送者生成用于对明文进行加密和解密的 DES方式的密钥 K。
b,然后,利用接收方公开的 RSA方式的加密密钥 KE
对 K进行加密,并将加密后的密码传送给数据的接收方 。
计算机安全技术密码技术
c,数据接收方使用公开密钥密码体制 RSA的解密密钥 KD对接收到的密文进行解密处理,取得 DES算法的密钥
K。
d,发送方在证实了接收方已经正确地收到密钥 K以后,
通过 DES算法使用密钥 K对明文进行加密处理,并将密文传送给接收方 。
e,数据接收方利用已经得到的 DES算法的密钥 K对接收到的密文进行解密处理,最终恢复明文 。
f,数据传输结束后,数据的发送和接收方清除双方使用的密钥 K。
计算机安全技术密码技术
1,PGP简介
PGP是一个基于公开密钥加密算法的应用程序,该创造性在于把 RSA公钥体系的方便和传统加密体系的高速度结合起来,并在数字签名和密钥认证管理机制上有巧妙的设计。在此之后,PGP成为自由软件,经过许多人的修改和完善逐渐成熟。
5.4.6良好隐私加密算法( PGP)
PGP加密算法有以下几个特点:
加密速度快
可移植性出色
源代码是免费的,可以削减系统预算。
计算机安全技术密码技术
2,PGP加密算法的功能
(1)加密文件
(2) 密钥生成
(3) 密钥管理
(4) 收发电子函件
(5) 数字签名
(6) 认证密钥计算机安全技术密码技术
( 1)一个单钥加密算法( IDEA)。 IDEA( International
Data Encryption Algorithm,国际数据加密算法)是 PGP加密文件时使用的算法。发送者需要传送消息时,使用该算法加密获得密文,而加密使用的密钥将由随机数产生器产生。
( 2)一个公钥加密算法( RSA)。 公钥加密算法用于生成用户的私人密钥和公开密钥、加密 /签名文件。
( 3)一个单向散列算法( MD5)。 为了提高消息发送的机密性,在 PGP中,MD5用于单向变换用户口令和对信息签名,
以保证信件内容无法被修改。
( 4)一个随机数产生器。 PGP使用两个伪随机数发生器,
一个是 ANSI X9.17发生器,另一个是从用户击键的时间和序列中计算熵值从而引入随机性。主要用于产生对称加密算法中的密钥。
3,PGP加密算法构成计算机安全技术密码技术
PGP软件分别有与 UNIX和 Windows等 OS兼容的版本,其安装也很简单。 PGP可以直接或间接地支持所有电子邮件软件。 PGP安装后,用户能够使用两个程序,PgpTrays.exe和 PgpKeys.exe,
PgpTrays.exe是控制中心,提供对所有功能的操作界面,并且执行后会常驻任务栏供用户随时调用,建议将其添加为开始菜单的,启动,项。
PgpKeys.exe可以对密钥进行生成、散发、废除、
签名等管理,它管理着一个钥匙环,钥匙环文件保存着收集到的所有公钥,由此可以进行密钥的维护与管理。
4,PGP软件的使用计算机安全技术密码技术
4,PGP软件的使用
(1)生成 /废除密钥对 ( 2) 散发 /获取公钥 (3)签名与信任每一个用户都必须生成自己的密钥对,这是使用 PGP加密的第一步,通常在安装过程中完成。在 PgpKeys.中也可生成新的密钥,在菜单 key/ Newkey弹出的生成密钥窗口中,填写用户名、电子信箱地址:然后选择密钥长度,确定密钥生存周期,定义保护密钥的口令。生成密钥后,可以选择是否立即将新的公钥发送到因特网的密钥服务器上。
若不再信任该密钥对,可在 PgpKeys的密钥列表中选择该密钥对的公钥,选 Revoke项废除它,并将废除的密钥上传到公钥服务器上。
散发和获取公钥有两种途径:
1)通过网上公共的密钥服务器在 PgpKeys的密钥列表中选择某个公钥。点击右键,在弹出的 KeyServer快捷菜单中选择 SendSelectedKeys项即可上传公钥;选择 Get
Selected Keys项 (获取指定密钥 )或者从主菜单开始选
keys/key server/Find N Key 项(查找新密钥)即可在密钥服务器上查询公钥,或者通过电子信箱地址和姓名下载密钥,并安装到本机钥匙环上。
散发和获取公钥有两种途径:
2)通过电子邮件在 PgpKeys的密钥列表中选择某个公钥。
点击右键,在弹出的快捷菜单中选择 Export(导出 ),将选中的密钥保存为一个后缀名为 ASC的文本文件,作为电子邮件的附件发送给对方;对方收到密钥文件后,在 Pgpkeys
的菜单中选择 Import(导入 ),或者在运行 PgpKeys后,双击该密钥文件,即可将公钥挂在钥匙环上。
获得他人的公钥并挂到钥匙环上以后,必须经过验证。验证的方法有两种:
1)验证密钥的指纹。每一个密钥在生成时都产生一个唯一对应的数字指纹,这是一串数字,最保险的办法是要求密钥所有者在电话里报出密钥指纹供你验证。
2)通过可信任的介绍人来验证密钥的信任度。任何人都可以用自己的私钥对他人的公钥进行数字签名,表示相信该密钥属于其主人。
验证后,再使用你自己的私钥对其签名并设定其信任等级。在 PgpKeys的密钥列表中选择该公钥;点击右键,在弹出的快捷菜单中选择 Sign(签名 );回答口令后即可为该公钥签名;选择 KeyProperties(密钥属性 )即可修改信任等级。
计算机安全技术密码技术
1,量子加密 简介量子加密技术在密码学上的应用分为两类:一是利用量子计算机对传统密码体制的分析,量子计算机是一种传统意义上的超大规模并行计算系统;二是利用单光子的测不准原理在光纤一级实现密钥管理和信息加密,即量子密码学。
5.5,加密技术的新突破 —— 量子加密
2.量子加密法的工作原理使用量子加密法的两个用户各自产生一个私有的随机数字字符串 。 第一个用户向第二个用户的接受装置发送代表数字字符串的单个量子序列 (光脉冲 ),接受装置从两个字符串中取出相匹配的比特值,用这些比特值就可以组成密钥 。
计算机安全技术密码技术
3.量子加密法的依据
,海森堡测不准原理,是量子力学的基本原理,它表明,在同一时刻以相同的精度测定量子的位置与动量是不可能的,只能精确测定两者之一。,单量子不可复制定理,是,海森堡测不准原理,的推论,它表明:在不知道量子状态的情况下复制单个量子是不可能的,因为要复制单个量子就只能先作测量,
而测量必然改变量子的状态,所以说不可能。
量子密码学利用了量子力学的这一性质,除了发件人和收件人之外,任何人都无法掌握量子的状态,也无法复制量子;
传输的光量子,要么被接受者的接收机接受,要么被窃听者接受:任何窃取量子的动作都会改变量子的状态,而被收件人发现,换句话说,任何窃取量子的动作都会改变量子原本携带的信息:通信双方如果得知有人进行窃听,从而结束通信,生成新的密钥。
计算机安全技术密码技术普通的铜缆 (这种媒介只能以电子方式传送信号 )无法使用这种技术,而在宽带光纤通信中可以进行量子密钥的发送。在光纤上进行的试验证明,这种加密方法在卫星通信中也是可行的。但是,量子加密法有很高的维护要求。
在实际的应用中,通过光纤的量子密钥可以用于加密普通宽带数据信道所传送的信息。专家们认为,这种加密技术不久的将来就会商业化。但是,目前相当长的一段时间内,公钥加密法还是首选。
因为这种加密方法可以用于现有的电子化网络和系统中,而不需要使用光纤。而且公钥加密方法可以用于数字签名,量子加密技术则无法做到。
计算机安全技术密码技术量子密码与传统密码的区别密码学的理论基础是量子力学,而以往密码学的理论基础是数学。从理论上来说,传统的数学计算加密方法都是可以破译的,再复杂的数学密钥也可以找到规律。量子密码学利用物理学原理保护信息。
量子密码学是利用量子理论发展形成的一种全新的安全通信系统,它从根本上解决了通信线路被消极监听的问题。这保证了密钥分发的安全性。量子密码术利用海德堡测不准原理,使从未见过面和事先未曾共用过秘密信息的双方能在敌方眼皮底下以绝密的方式通信。
现在的量子密码学还处于研究阶段,要真正投入使用,还有一段距离,当前通信的安全保障还是只能基于经典物理学框架下的密钥交换系统,
计算机安全技术密码技术量子密码未来除了最初利用光子的偏振特性进行编码外,现在还出现了一种新的量子密码的编码方法 ——利用光子的相位特性进行编码。与偏振编码相比,相位编码的好处是对光的偏振态要求不太苛刻。要使这项技术可以操作,大体需要经过这样的程序:①在地面发射量子信号;②通过大气层发送量子信号③卫星接收量子信号并转发到散布在地球各个角落的指定接收目标。 目前实用的量子信息系统还是宏观尺度上的量子体系,人们要想做到有效地制备和操作这种量子体系的量子态还是十分困难的。人类在 20世纪能够精确地操控航天飞机和搬动单个原子,但却未能掌握操控量子态的有效方法。在 21
世纪,人类应积极致力于量子技术的开发,推动科学技术的迅速发展 。
计算机安全技术密码技术
1.数字签名的要求
2.数字签名与手书签名的区别
3.数字签名的分类
4.使用数字签名
5.6 加密技术的典型应用 ——数字签名计算机安全技术密码技术
1.数字签名的要求类似于手书签名,数字鉴名也应满足以下要求:
① 收方能够确认或证实发方的签名,但不能伪造,简记为 R1-
条件( unforgeable) 。
② 发方发出签名的消息给收方后,就不能再否认他所签发的消息,简记为 S-条件 (non-repudiation)。
③ 收方对已收到的签名消息不能否认,即有收报认证,简记作
R2-条件 。
④ 第三者可以确认收发双方之间的消息传送,但不能伪造这一过程,简记作 T-条件 。
计算机安全技术密码技术
1.数字签名的区别与手书签名的区别,手书签名是 模拟的,且 因人而异 。数字签名是 0和 1的数字串,因消息而异 。
与消息认证的的区别,消息认证使收方能验证消息发送者及所发消息内容是否被篡改过。当收发者之间没有利害冲突时,这对于防止第三者的破坏来说是足够了。但当收者和发者之间有利害冲突时,就无法解决他们之间的纠纷,此时须借助满足前述要求的数字签名技术。
安全的数字签名实现的条件,发方必须向收方提供 足够的非保密信息,以便使其能验证消息的签名 ; 但又不能泄露用于产生签名的机密信息,以防止他人伪造签名。
计算机安全技术密码技术
3.数字签名的分类数字签名有两种,一种是对整个消息的签名,一种是对压缩消息的签名,
它们都是附加在被签名消息之后或某一特定位置上的一段签名图样。若按明、密文的对应关系划分,每一种又可分为两个子类,一类是确定性数字签名.其明文与密文一一对应,它对一特定消息的签名不变化 (使用签名者的密钥签名 ),如 RSA等签名;另一类是随机化的或概率式数字签名。它对同一消息的签名是随机变化的,取决于签名算法中的随机参数和取值。
计算机安全技术密码技术时间戳 (time-stamp)是一个经加密后形成的凭证文档,它包括三个部分:①需要追加时间戳的文件摘要 (digest);② DTS
收到文件的日期和时间;③ DTS的数字签名。
时间戳产生的过程为:用户首先将需要追加时间戳的文件用
HASH编码加密形成摘要,然后将该摘要发送到 DTS,DTS
在加入了收到文件摘要的日期和时间信息后再对该文件加密
(数字签名 ),然后送回用户。数字时间戳是由认证单位 DTS
以收到文件的时间为依据加上的。
其原理为:
1)被发送文件用 SHA编码加密产生 128bit的数字摘要。
2)发送方用自己的私用密钥对摘要再加密,这就形成了数字签名。并附在要发送的信息原文后面 ;
3)产生一个通信密钥,用它对带有数字签名的信息原文进行加密后传送到给对方。
4)用接受方的公钥对自己的通信密钥进行加密后,传送接受方 ;
5)收到发送方加密后的通信密钥后,用接受方的私钥对其进行解密得到通信密钥 ;
6)用发送方的通信密钥对收到的签名原文解密,得到数字签名和信息原文 ;
7)对方用发送方的公共密钥对摘要解密,同时对收到的文件用
SHA编码加密产生又一摘要。
8)将解密后的摘要和收到的文件与接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过,否则不然。
2)数字时间戳 (digital time-stamp)
数字凭证的内容有,凭证拥有者的姓名、凭证拥有者的公共密钥、公共密钥的有效期、颁发数字凭证的单位、数字凭证的系列号。数字证书有四种类型:客户证书,它是只为一个人提供的数字证书,以证明她(他)在网上的有效身份;商家证书:它是由收单银行批准,
由金融机构颁发的,是对商家是否具有信用卡支付交易资格的一个证明;网关证书:它通常由收单银行或其他负责进行认证和收款的机构持有。客户对帐户等信息加密的密码有网关证书提供; CA系统证书:就是各级、各类发放数字证书的机构所持有的数字证书,用来证明他们有权发放数字证书的数字证书。
3)数字凭证 (digital certificate,digital ID)
计算机安全技术密码技术签名体制的组成,一个签名体制可由量 (M,S,K,V)其中 M
是明文空间,S 是签名的集合,K 是密钥空间,V 是证实函数的值域,由真、伪组成。
(1) 签名算法,对每一 M?M和 k?K,易于计算对 M的签名
S=Sigk(M)?S
签名算法或签名密钥是秘密的,只有签名人掌握;
(2)验证算法,Verk(S,M)?{真,伪 }={0,1}
V e r M S
S S i g M
S S i g M
k (,)
( )
( )

真,当伪,当计算机安全技术密码技术验证算法应当公开,已知 M,S易于证实 S是否为 M的签名,
以便于他人进行验证。
体制的安全性,从 M和其签名 S难于推出 K或伪造一个 M’使 M’
和 S可被证实为真。
与消息加密不同点,消息加密和解密可能是一次性的,它要求在解密之前是安全的;而一个签名的消息可能作为一个法律上的文件,如合同等,很可能在对消息签署多年之后才验证其签名,
且可能 需要多次验证 此签名。因此,签名的安全性和防伪造的要求更高些,且要求证实速度比签名速度还要快,特别是联机在线实时验证。
计算机安全技术密码技术几种常用的数字签名
1,RSA签名体制。
(1) 体制参数,令 n=p1p2,p1和 p2是大素数,令
M=C=Zn,选 e并计算出 d使 ed?1 mod?(n),公开 n和 e,将
p1,p2和 d保密。 K=(n,p,q,e,d)。
(2) 签名过程,对消息 M?Zn的签名
S=Sigk(M)=Md mod n
(3) 验证过程,对给定的 M和 S,可按下式验证:
Verk(M,S)=真? M?Se mod n
计算机安全技术密码技术
(4) 安全性,由于只有签名者知道 d,由 RSA体制知,其他人不能伪造签名,但可易于证实所给任意 M,S对是否消息 M和相应签名构成的合法对。
(5) 标准化,ISO/IEC 9796和 ANSI X9.30-199X已将 RSA作为建议数字签名标准算法。 PKCS #1是一种采用杂凑算法 (如 MD2或 MD5等 )和 RSA相结合的公钥密码标准。
计算机安全技术密码技术
2,ElGamal签名体制。 由 ElGamal在 1985年给出,
(1) 体制参数
p:一个大素数,可使 Zp中求解离散对数为困难问题;
g:是 Zp中乘群 Zp*的一个生成元或本原元素;
M:消息空间,为 Zp*;
S:签名空间,为 Zp*× Zp- 1;
x:用户秘密钥 x?Zp*; y?gx mod p
K=(p,g,x,y):其中 p,g,y为公钥,x为秘密钥。
计算机安全技术密码技术
(2) 签名过程,给定消息 M,发送者进行下述工作。
(a) 选择秘密随机数 k?Zp*;
(b) 计算,H(M),r=gk mod p
s=(H(M)- xr)k-1 mod (p- 1)
(c) 将 Sigk(M,k) =S=(r||s)作为签名,将 M,(r||s)送给对方。
计算机安全技术密码技术
(3) 验证过程:接收者 先计算 H(M),并按下式验证
Verk(H(M),r,s)=真? yrrs?gH(M) mod p
这是因为 yrrs?grxgsk?g(rx+sk) mod p,有
(rx+sk)? H(M) mod(p- 1) 故有
yrrs?gH(M) mod p
在此方案中,对同一消息 M,由于随机数 k不同而有不同的签名值 S=(r||s)。它是一种 非确定性 的签名体制。
(4) 安全性,方案的安全性基于求离散对数的困难性。
(5) 应用,其修正形式已被美国 NIST作为数字签名标准 DSS。
此体制专门设计作为签名用。 ANSI X9.30-199X已将 ElGamal签名体制作为签名标准算法。
计算机安全技术密码技术
3,Schnorr签名体制。 C,Schnorr于 1989年提出。
(1) 体制参数
p,q:大素数,q|p-1,q是大于等于 160 bits的整数,p是大于等于 512 bits的整数,保证 Zp中求解离散对数困难;
g,Zp*中元素,且 gq?1 mod p;
x:用户密钥 1<x<q;
y:用户公钥 y?gx mod p。
消息空间 M=Zp*,签名空间 S=Zp*× Zq;
K={(p,q,g,x,y),y?gx mod p}
计算机安全技术密码技术
(2) 签名过程,令待签消息为 M,对给定的 M做下述运算:
(a) 签名者任选一秘密随机数 k?Zq 。
(b) 计算 r?gk mod p
s?k-xe mod q
式中 e=H(r||M)
(c) 将消息 M及其签名 S=Sigk(M)=(e||s)送给收信人。
计算机安全技术密码技术
(3) 验证过程,接收者收到消息 M及签名 S=(e||s)后,
(a) 计算 r’?gsye mod p,而后计算 H(r’||M)。
(b) 验证 Ver(M,r,s)? H(r’||M)=e
因为,若 (e||s)是 M的合法签名,则有
r’= gsye?gk-xegxe?gk?r mod p。
计算机安全技术密码技术
(4) Schnorr签名与 ElGamal签名的不同点:
在 ElGamal体制中,g为 Zp的本原元素;而在 Schnorr
体制中,g为 Zp*中子集 Zq*的本原元素,它不是 Zp*的本原元素。
显然 ElGamal的安全性要高于 Schnorr。
Schnorr的签名较短,由 |q|及 |H(M)|决定。
在 Schnorr签名中,r=gk mod p可以预先计算,k与 M
无关,因而签名只需一次 mod q乘法及减法。所需计算量少,
速度快,适用于灵巧卡采用。
计算机安全技术密码技术
DSS (Digital Signature Standard)签名标准是 1991年 8月由美国 NIST公布,1994年 5月 19日正式公布,1994年 12月 1日正式采用的美国联邦信息处理标准。它是在 ElGamal和 Schnorr (1991)两个方案基础上设计的 DSS中所采用的算法简记为 DSA(Digital Signature
Algorithm)。此算法由 D,W,Kravitz设计。这类签名标准具有较大的兼容性和适用性,已成为网中安全体系的基本构件之一。
计算机安全技术密码技术
(1) 算法描述,
(a) 全局公钥 ( p,q,g ),p:是 2L-1 < p < 2L中的大素数,512? L?
1024,按 64 bits递增; q,(p- 1)的素因子,且 2159 < q < 2160,即字长 160 bits; g,= hp-1 mod p,且 1< h < (p- 1),使 h(p-1)/q mod p
>1。
(b) 用户秘密钥 x,x为在 0<x<q内的随机或拟随机数。
(c) 用户公钥 y,=g x mod p。
(d) 用户每个消息用的秘密随机数 k:在 0<k<q内的随机或拟随机数。
(e) 签名过程:对消息 M?M=Zp*,其签名为 S=Sigk(M,k)=(r,s)
其中,S?S=Zq× Zq,r?(gk mod p) mod q s?[k-1 (h(M)+ xr)] mod q
(f) 验证过程,计算
w=s-1 mod q ; u1 =[H(M)w] mod q ;
u2=rw mod q ; v=[(gu1yu2) mod p] mod q。
Ver(M,r,s)=真? v=r
计算机安全技术密码技术
(2) 公众反应,RSA Data Security Inc(DSI)想以 RSA算法做为标准,
因而对此反应强烈。在标准公布之前就指出采用公用模可能使政府能够进行伪造签名。许多大的软件公司早已得到 RSA的许可证而反对 DSS。主要批评意见有:① DSA不能用于加密或密钥分配;②
DSA由 NSA开发的,算法中可能设有陷门;③ DSA比 RSA慢;④
RSA已是一个实际上的标准,而 DSS与现行国际标准不相容;⑤
DSA未经公开选择过程,还没有足够的时间进行分析证明;⑥ DSA
可能侵犯了其它专利 (Schnorr签名算法,Diffie-Hellman的公钥密钥分配算法;⑦ 由 512 bit所限定密钥量太小。现已改为 512~ 1 024中可被 64除尽的即可供使用。
计算机安全技术密码技术
5.其它签名体制:
GOST签名标准,为俄国采用的数字签名标准,自 1995启用,正式称为 GOST R34.10-94。算法与 Schnorr模式下的 ElGamal签名及
NIST的 DSA很相似。算法中也有一个类似于 SHA的杂凑函数 H(x),
其标准号为 GOST R34,11-94。
ESIGN签名体制。 日本 NTT的 T,Okamoto等设计的签名方案 。 宣称在密钥签名长度相同条件下,至少和 RSA/DSA一样安全且比它们都快。
OSS签名体制,Ong,Schnorr和 Shamir[1984]提出的一种利用 mod
n下多项式的签名算法,方案基于二次多项式。
离散对数签名体制,ElGamal,DSA,GOST,ESIGN,Okamoto
等签名体制都是基于离散对数问题。这些体制都可以归结为一般的称之为 离散对数签名体制 之特例。
计算机安全技术密码技术特殊用途的数字签名
1,不可否认签名 。 1989年由 Chaum和 Antwerpen引入,这类签名有一些特殊性质,其中最本质的是在无签名者合作条件下不可能验证签名,从而可以防止复制或散布他所签文件的可能性,这一性质使产权拥有者可以控制产品的散发。这在电子出版系统知识产权保护中将有用场。
普通数字签名,可以精确地对其进行复制,这对于如公开声明之类文件的散发是必须的,但对另一些文件如个人或公司信件、特别是有价值文件的签名,如果也可随意复制和散发,就会造成灾难。
这时就需要不可否认签名。
否认协议 (Disavowal Protocol):在签名者合作下才能验证签名,
这会给签名者一种机会,在不利于他时他拒绝合作以达到否认他曾签署的文件。为了防止此类事件而引入 。
计算机安全技术密码技术构成签名算法的第三个组成部分,签名者可利用否认协议向法庭或公众证明一个伪造的签名确是假的;如果签名者拒绝参与执行否认协议,就表明签名事实上是真的由他签署的。
2,防失败签名 。由 B.Pfitzmann和 M.Waidner引入。这是一种强化安全性的数字签名,可防范有充足计算资源的攻击者。当 A的签名受到攻击,甚至分析出 A的密钥条件下,也难于伪造 A的签名,A
亦难以对自己的签名进行抵赖。
3,盲签名 。一般数字签名中,总是要先知道文件内容而后才签署,
这正是通常所需要的。但有时需要某人对一个文件签名,但又不让他知道文件内容,称此为 盲签名 (Blind Signature),它是由
Chaum[1983]最先提出的。
计算机安全技术密码技术在选举投票和数字货币协议中将会碰到这类要求。利用盲变换可以实现盲签名。
M M’ S(M’) S(M)
消息 盲变换 签名 解盲变换完全盲签名。 B是一位仲裁人,A要 B签署一个文件,但不想让他知道所签的是什么,而 B并不关心所签的内容,他只是要确保在需要时可以对此进行仲裁。可通过下述协议实现。
计算机安全技术密码技术完全盲签名协议,
(a) A取一文件并以一随机值乘之,称此随机值为 盲因子 。
(b) A将此盲文件送给 B。
( c) B对盲文件签名。
(d) A以盲因子除之,得到 B对原文件的签名。
若签名函数和乘法函数是可换的,则上述作法成立。否则要采用其它方法 (而不是乘法 )修改原文件。
计算机安全技术密码技术盲签名算法,D,Chaum曾提出第一个实现盲签名的算法,他采用了
RSA算法。令 B的公钥为 e,秘密钥为 d,模为 n。
(a) A要对消息 m进行盲签名,选 1<k<m,作
t?mke mod n? B
(b) B对 t签名,td?(mke)d mod n? A
(c) A计算 S?td/k mod n 得 S?md mod n
这是 B对 m按 RSA体制的签名。
但任何盲签名,必利用分割 -选择原则。 Chaum给出一种更复杂的算法来实现盲签名,他还提出了一些更复杂但更灵活的盲签名法。
计算机安全技术密码技术数字签名的不足
数字签名需要相关法律条文的支持,
如果发送方的信息已经进行了数字签名,那么接受方就一定要有数字签名软件,这就要求软件具有很高的普及性,
假设某人发送信息后,被取消了原有数字签名的权限,以往发送的数字签名在鉴定时只能在取消确认列表中找到原有的确认信息,
这样就需要鉴定中心结合时间信息进行鉴定,
数字签名的基础设施,如鉴定中心、在线存取数据库等的建设费用,可能会影响到签名技术的推广。
计算机安全技术密码技术
5,7 密钥管理与密钥分配一般说来,密码算法的研制比更换密钥要困难得多,即使费了九牛二虎的气力研制了一个密码算法,随着对手截获的报文的增多,知识积累的增加,破译密码的可能性就越来越大。因此,近代密码学要求在设计密码系统时,应当不强调密码算法的保密。于是密码系统的安全性就只取决于密钥的安全。历史的经验表明,从密钥的管理途径进行攻击比单纯破译密码算法要容易得多。在计算机网络中,由于用户和节点很多,出于安全的要求,密钥又要经常变换,于是密钥的设置、生成、分配、使用、替换、更新、保护、存储、备份 /恢复、丢失、撤销、销毁等管理就成为一个十分棘手的问题。
计算机安全技术密码技术
5,7,1 密钥的生成现代密码体制有点像门锁,房间的安全主要依赖于钥匙。也更像现代的电子锁,锁门的操作(相当于加密算法)非常简单,房间的安全关键在于卡片式钥匙的保管,而一旦卡片丢失或房间换人,
只要重新对卡片进行设置即可。下面讨论与密钥的安全性有关的几个问题。
1,密钥的长度和密钥空间在单钥加密体制中,密钥长度( Key length)必须是足够长的。
密钥的长度定义了密钥空间的大小。例如,DES有 56位密钥,在正常情况下,任何一个 56位的数据串都能成为其中一个密钥,所以
DES具有 256( 1016)的密钥空间。每次使用的密钥都是在这个密钥空间中随机抽取的。因此,对 DES攻击的难度,主要决定于密钥长度所定义的密钥空间。
计算机安全技术密码技术实际上,DES的密钥空间也没有 256( 1016):在某些实现中,
对密钥组成还有一些限制。这些限制,将使密钥空间减小,使 DES
密钥的攻击难度大为降低。下表为不同的限制对密钥空间的影响。
此外,根据摩尔法则,计算机的计算能力每隔 18个月翻一番,
而且计算方法也在进步。所以,一个安全的密钥长度,很快就会不安全。
还应当注意,将一个密码使用的长度与另一个的长度进行比较是不合适的,通常,对称密码中的密钥长度与非对称密码中的密钥长度不是直接相等的。
计算机安全技术密码技术计算机安全技术密码技术
2,弱密钥问题密钥强度就是密钥攻击的复杂度,除了密钥长度的因素外,还有密钥本身的品质问题。一个好的密钥,应当使好记、难猜。相对而言,易猜,生成具有规律性,提供较低的攻击复杂读的密钥就称为弱密钥( Weak key)。
显然 k57=k49=k41=……=k44=k36=0 或 1,
k63=k55=k47=……=k12=k4=0 或 1时,k将是弱密钥。故 DES有以下 4
种弱密钥(十六进制表示):
01 01 01 01 01 01 01 01
1F 1F 1F 1F 1F 1F 1F 1F
E0 E0 E0 E0 E0 E0 E0 E0
FE FE FE FE FE FE FE FE
计算机安全技术密码技术还有一种密钥称为半弱密钥,即存在 k和 k’使得
DESk(m)=DESk’-1(m),或 DESk(DESk’(m))=m。 k和 k’成对构成半弱密钥。半弱密钥有下面 12个。
01 FE 01 FE 01 FE 01 FE
FE 01 FE 01 FE 01 FE 01
1F E0 1F E0 1F E0 1FE0
E0 1F E0 1F E0 1F E01F
01 E0 01 E0 01 E0 01E0
E0 01 E0 01 E0 01 E001
计算机安全技术密码技术对于公开密钥体制来说,密钥的产生就不这么简单了。因为密钥必须有一些约束,如:
要符合某些数学特征,如:是素数,是二次 剩余的等。
随机性要强,最好伪随机数种子也是随机的。
应当好记。
将好记和随机性结合起来解决的好的办法是使用一个容易记忆的通信短语( pass phrase)作为用户使用的密钥,如使用短语:
My name is Ozymandisa,king of kings,look on works,ye mighty,
and despair.
然后,使用密钥碾碎( Key crunching)技术,将该短语碾碎成 64
位的密钥。如上述短语可以碾碎成:
e6c1 4398 5ae9 0a9b
这个密钥的随机性与通信短语的长度有关。当通信短语有足够的长度(一般认为有 10个以上单词,或有 49个以上字母),得到的密钥将具有较好的随机性。
计算机安全技术密码技术此外,密钥的选择还要尽避免字典攻击。美国国防部建议在
OFB方式下,使用系统中断向量、系统状态寄存器、程序计数器、
系统时钟、系统 ID号等产生 DES随机密钥。
5,7,2 密钥的分配在密钥管理中,最核心、对关键的问题是密钥分配。密钥主要涉及密钥的发送和验证,密钥。前者要求通过非常安全的通路进行传送,后者要求有一套机制用于检验分发和传送的正确性。本小节讨论密钥分配中的一些问题。
1,密钥设置协议为了提高密钥的安全性,目前流行的密钥管理方案一般采用层次的密钥设置。 X9.17标准描述了两种层次的密钥:
数据密钥( data key,DK):直接对信息序列加密。
密钥加密密钥( keyencryption key,KK):加密需要分发的密钥。
计算机安全技术密码技术
2,网外分发与网内分发密钥的分发方法可以分为两种:网外分发和网内分发。网外分发即人工分发:派非常可靠的信使(邮寄、信鸽等)携带密钥分配给各用户。但是,随着用户的增加、通信量的增大以及黑客技术的发展,密钥的使用量增大,且要求频繁更换,信使分配就不再适用,
而多采用网内密钥分配,即自动密钥分配。网内密钥分配的方式有两种:用户之间直接分配和通过设立一个密钥分配中心( Key
Distribution Center,KDC)分配。
具体的密钥分配方法称为密钥分配协议。目前国际有关标准化机构都在着手制定关于密钥管理技术的规范。国际标准化组织 ISO
和国际电工委员会 IEC下属的信息技术委员会 JTCI已经起草了关于公钥管理的国际规范。该规范主要由 3部分组成:
密钥管理框架;
采用对称技术的机制;
采用非对称技术的机制。
计算机安全技术密码技术
3.密钥分配的几种方法在单钥加密体制中,信息交换方必须共享一个密钥,并且这个密钥要防止被他人获得。在公开加密体制中,为了使加密有效进行,
信息接受方必须发布其公开密钥,同时防止其私钥被人窃取。此外,
密钥还要经常更换,以便泄露见降至最小。
设有通信的双方,A和 B,密钥的分配可以有如下几种方法:
( 1)网外分发方法密钥由 A选定,然后通过物理方法传递给 B。
密钥由可信任的第三方选定,然后通过物理方法传递给 A和 B。
( 2)密钥分配中心分发若 A和 B有一个共同的可信任的第三方 ——KDC(密钥分配中心),KDC可以通过加密连接将密钥安全地传送给 A和 B。这种方法多用于单钥密钥的分配。下图为一个采用这种方法的密钥分配例子。
计算机安全技术密码技术这个例子的前提是 A和 B有一个共同的可信任的第三方 ——KDC,
即 KDC分别与 A和 B有一保密的信道,也即 KDC与 A和 B分别已经有一通信密钥 Ka和 Kb。假定 A与 B的通信是 A主动,则有如下过程。
① A向 KDC发出会话密钥请求,IDa|| IDb||N1
IDa,IDb标识会话双方 A和 B;
N1标识本次会话(可能是时间戳或随机数等一个他人难于猜测的现时值)。
② KDC对 A的请求应答,EKa[Ks||{IDa||IDb||N1}||EKb[{Ks||IDa}]]
计算机安全技术密码技术全部报文用 A已经掌握的密钥 Ka加密,内容包括三部分:
一次性会话密钥 Ks。
A的请求报文(供 A检验)。
要求 A中转,但 A不能知道内容的、用 Kb加密的一段报文,Ks||IDa。
③ A存储 Ks,并向 B转发,EKb[Ks||IDa]。 B得到:
Ks,还知道 Ks来自 KDC(因为用 Kb解密)。
知道会话方是 A。
④ B向 A回送报文,EKs[N2]。
用 Ks表明自己的身份是 B(因为 Ks要用 Kb解密)。
用 N2再确认。
⑤ A向 B回送报文,EKs[f( N2) ]。确认 B前次收到的报文不是回放。
这样,A与 B就有了自己的秘密通道了。
计算机安全技术密码技术
( 3)证书授权中心( Certificate Authority,CA)分发若 A和 B都在可信任的第三方 ——CA发布自己的公开密钥,则 A和
B都可以用彼此的公开密钥加密通信。这种方法多用于公开加密密钥的分配。下图一个采用这种方法的密钥分配例子。
计算机安全技术密码技术
① 用户 A向 CA发出请求报文:
一个带时间戳的消息。
获取 B的公钥的请求。
② CA对 A应答(用 CA的私钥加密,A可以用 CA的共钥解密)。内容有:
B的共钥 PKB(供 A向 B发加密消息)。
A的请求(供 A验证本报文是对自己请求的应答)。
最初的时间戳(供 A确认不是 CA发来的旧消息,以便确定 PKB确是
B的)。
③、④ B用同①、②相同的方法,从 CA得到 A的公钥。
⑤ A用 PKB向 B发送一个消息,A的身份 IDA和一次性随机数 N1。
⑥ B用 PKA向 A发送一个消息:
N1(由于只有 B才能解用 PKB加密的消息,将 N1返回 A,让 A确认是 B)。
一次性随机数 N2。
⑦ A用 PKB将 N2加密,返回 B,供 B确认。
计算机安全技术密码技术应当说明,这种方法是基于公钥目录表的。公钥目录表是由某个可信的机构或组织管理、并定期更新、定期公布的用户公钥目录表。目录表中的每个目录项由两个数据组成:用户名和该用户的公钥。
用户可以在公钥目录表的管理机构注册自己的公钥,也可以随时更换现有的公钥,也可以通过电子方式在有安全认证的情况下访问公钥目录表。
应当注意的是,公钥目录表可能会被攻击者伪造、监听、攻击。
计算机安全技术密码技术
( 4)公钥证书公钥证书是由 CA为用户发布的一种电子证书。例如用户 A的证书内容形式为:
CA=ESKCA[T,IDA,PKA]
其中:
IDA是用户 A的标识。
PKA是 A的公钥。
T是当前时间戳,用于表明证书的新鲜性,防止发送方或攻击者重放一旧证书。
SKCA是 CA的私钥。证书是用 CA的思钥加密的,以便让任何用户都可以解密,并确认证书的颁发者。
当一方要与另一方建立保密信道时,就要把自己的证书发给对方。
接收方用 CA的公钥可以对证书进行查验,并获得发送方的公钥。接收方同意进行保密通信,也要将自己饿证书发送到对方。这样,就不依赖 CA而直接交换了公钥。
计算机安全技术密码技术
5,7,3 密钥的使用与保护
1,密钥的控制使用控制密钥使用,是为了保证按照预定的方式使用。控制 密钥使用的信息有:
密钥主权人;
密钥合法使用期限;
密钥标识符;
密钥预定用途;
密钥预定算法;
密钥预定使用系统;
密钥授权用户;
在密钥生成、注册、证书等有关实体中的名字等。
计算机安全技术密码技术
2,密钥的保护与存储密钥从产生到终结,在整个的生存期中都需要保护。一些基本的措施有:
( 1)密钥决不能以明文形式存放。
( 2)密钥首先选物理上择最安全的地方存放。
( 3)在有些系统中可以使用密钥碾碎技术由一个短语生成单钥密钥。
( 4)可以将密钥分开存放。例如:
将密钥平分成两段,一段存入终端,一段存入 ROM。
将密钥分成若干片,分发给不同的可信者保管。
计算机安全技术密码技术
5,7,4 密钥生存期的结束
1,密钥的有效期任何密钥都不可能无限期地使用。有许多因素,似的密钥不能使用太长的时间,如:
密钥使用越久,攻击者对它的攻击方法越多,攻击的机会越多。
密钥一旦泄露,不立即废除,时间越长,损失越大。
因此,不同的密钥应当有不同的有效期,同时必须制定一个检测密钥有限期的策略。密钥的有限期依据数据的价值和给定时间里加密数据的数量确定。
计算机安全技术密码技术
2,密钥的停用和更新当发生下列情况时,应当停止密钥的使用,更新密钥。
密钥的使用期到,应该更新密钥。
确信或怀疑密钥被泄露密钥,密钥及其所有变形都要替换。
怀疑密钥是由一个密钥加密密钥或其他密钥推导出来时,各层与之相关的密钥都应更换。
通过对加密数据的攻击可以确定密钥时,在这段时间内必须更换密钥。
确信或怀疑密钥被非法替换时,该密钥和相关密钥都要被更换。
计算机安全技术密码技术
3,密钥的销毁密钥被替换后,旧密钥必须销毁。旧密钥虽然不再使用,却可以给攻击者提供许多有重大参考价值的信息,为攻击者推测新的密钥提供许多有简直的信息。为此,必须保证被销毁的密钥不能给任何人提供丝毫有价值的信息。下面是在销毁密钥时使用过的一些方法,供参考:
密钥写在纸上时,要把纸张切碎或烧毁;
密钥存在 EEPROM中时,要对 EEPROM进行多次重写;
密钥存在 EPROM或 PROM时,应将 EPROM或 PROM打碎成小片;
密钥存在磁盘时,应当多次重写覆盖密钥的存储位置,或将磁切碎;
要特别注意对存放在多个地方的密钥的同时销毁。