密码学
密码学(cryptography)是以研究数据保密为目的对存储或传输的信息进行秘密的变换以防止被第三者窃取的技术。
基本简介
密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯粹数学的异同。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
密码学可分为传统密码体制和现代密码体制。在传统密码体制中,加密和解密采用的是同一密钥,即k=k′并且Dk′(Ek(P))=P,称为对称密钥加密密码系统,也称私钥密码系统。私钥密码系统中使用的密钥常称作传统密钥或传统密码。现代密码体制中加密和解密采用不同的密钥称为非对称密钥密码系统,每个通信方均需要k和k′两个密钥,在进行保密通信时通常将加密密钥k公开,称为公钥。而将解密密钥k′保密,称为私钥。所以也称为公钥密码系统。传统密码系统中最常见的算法有数据加密标准(DES)、国际数据加密算法(IDEA)等,DES算法是IBM开发的并于1997年被美国政府采纳为非机密信息的加密标准,它的原始形式已经在1995年被人攻破,但其修改后的形式仍然是有效的,IDEA是Lai和Massey提出的,目前还没有发现有效的攻击方法。
密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。
发展历程
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。
由于古时多数人并不识字,最早的秘密书写的形式只用到纸擦笔或等同物品,随着识字率提高,就开始需要真正的密码学了。最古典的两个加密技巧有两个。第一置换(Transposition cipher),将字母顺序重新排列。第二替代(substitution cipher),有系统地将一组字母换成其他字母或符号。
其实在公元前,秘密书信已用于战争之中。西洋“历史学之父”希罗多德(Herodotus)的《历史》(The Histories)当中记载了一些最早的秘密书信故事。公元前5世纪,希腊城邦为对抗奴役和侵略,与波斯发生多次冲突和战争。于公元前480年,波斯秘密集结了强大的军队,准备对雅典(Athens)和斯巴达(Sparta)发动一次突袭。希腊人狄马拉图斯(Demaratus)在波斯的苏萨城(Susa)里看到了这次集结,便利用了一层蜡把木板上的字遮盖住,送往并告知了希腊人波斯的图谋。最后,波斯海军覆没于雅典附近的沙拉米斯湾(Salamis Bay)。
大量的公开学术研究出现,起源于一九七零年代中期,美国国家标准局(National Bureau of Standards,NBS;现称国家标准技术研究所,National|Institute of Standards and Technology,NIST)制定数字加密标准(DES),Diffie和Hellman提出的开创性论文,以及公开释出RSA。从那个时期开始,密码学成为通讯、电脑网络、电脑安全等领域的重要工具。许多现代的密码技术的基础依赖于特定计算问题的困难度,例如因子分解问题或是离散对数问题。许多密码技术可被证明为只要特定的计算问题无法被有效地解出,那就安全。除了一个著名的例外:一次垫(one-time pad,OTP),这类证明是偶然的而非决定性的,但是是目前可用的最好的方式。
20世纪70年代以来,一些学者提出了公开密钥体制,即运用单向函数的数学原理,以实现加、脱密密钥的分离。加密密钥是公开的,脱密密钥是保密的。这种新的密码体制,引起了密码学界的广泛注意和探讨。
现代的研究主要在分组密码(block cipher)与流密码(stream cipher)及其应用。分组密码在某种意义上是阿伯提的多字符加密法的现代化。分组密码取用明文的一个区块和钥匙,输出相同大小的密文区块。由于信息通常比单一区块还长,因此有了各种方式将连续的区块编织在一起。DES和AES是美国联邦政府核定的分组密码标准(AES将取代DES)。尽管将从标准上废除,DES依然很流行(3DES变形仍然相当安全),被使用在非常多的应用上,从自动交易机、电子邮件到远端存取。也有许多其他的区块加密被发明、释出,品质与应用上各有不同,其中不乏被破解者。
理论基础
在通信过程中,待加密的信息称为明文,已被加密的信息称为密文,仅有收、发双方知道的信息称为密钥。在密钥控制下,由明文变到密文的过程叫加密,其逆过程叫脱密或解密。在密码系统中,除合法用户外,还有非法的截收者,他们试图通过各种办法窃取机密(又称为被动攻击)或窜改消息(又称为主动攻击)。
对于给定的明文m和密钥k,加密变换E将明文变为密文c=f(m,k)=E(m),在接收端,利用脱密密钥k,(有时k=k,)完成脱密操作,将密文c恢复成原来的明文m=D(c)。一个安全的密码体制应该满足:①非法截收者很难从密文C中推断出明文m;②加密和脱密算法应该相当简便,而且适用于所有密钥空间;③密码的保密强度只依赖于密钥;④合法接收者能够检验和证实消息的完整性和真实性;⑤消息的发送者无法否认其所发出的消息,同时也不能伪造别人的合法消息;⑥必要时可由仲裁机构进行公断。
现代密码学所涉及的学科包括:信息论、概率论、数论、计算复杂性理论、近世代数、离散数学、代数几何学和数字逻辑等。
基本特性
数据加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护信息的内容。网络安全使用密码学来辅助完成在传递敏感信息的的相关问题,主要包括:
(I)机密性(confidentiality)
仅有发送方和指定的接收方能够理解传输的报文内容。窃听者可以截取到加密了的报文,但不能还原出原来的信息,即不能得到报文内容。
(II)鉴别(authentication)
发送方和接收方都应该能证实通信过程所涉及的另一方,通信的另一方确实具有他们所声称的身份。即第三者不能冒充跟你通信的对方,能对对方的身份进行鉴别。
(III)报文完整性(message intergrity)
即使发送方和接收方可以互相鉴别对方,但他们还需要确保其通信的内容在传输过程中未被改变。
(IV)不可否认性(non-repudiation)
如果人们收到通信对方的报文后,还要证实报文确实来自所宣称的发送方,发送方也不能在发送报文以后否认自己发送过报文。
专业术语
加密:将明文转换成密文的实施过程。
解密:将密文转换成明文的实施过程。
明文:没有进行加密,能够直接代表原文含义的信息。
密文:经过加密处理处理之后,隐藏原文含义的信息。
密钥:分为加密密钥和解密密钥。密钥是一个用于加解密算法的秘密参数,通常只有通信者拥有。历史上,密钥通常未经认证或完整性测试而被直接使用在加解密上。
密码算法:密码系统采用的加密方法和解密方法,随着基于数学密码技术的发展,加密方法一般称为加密算法,解密方法一般称为解密算法。直到现代以前,密码学几乎专指加密(encryption)算法,将普通信息(明文,plaintext)转换成难以理解的资料(密文,ciphertext)的过程;解密(decryption)算法则是其相反的过程,由密文转换回明文;加解密包含了这两种算法,一般加密即同时指称加密(encrypt或encipher)与解密(decrypt或decipher)的技术。加解密的具体运作由两部分决定:一个是算法,另一个是密钥。
密码强度:一个密码被非认证的用户或计算机破译的难度。密码强度通常用“弱”或“强”来形容。“弱”和“强”是相对的,不同的密码系统对于密码强度有不同的要求。密码的破译与系统允许客户尝试不同密码的次数、是否熟悉密码主人等因素相关。然而,即使再强的密码也有可能被偷取、破译或泄漏,在用户设置密码时,尽可能的将密码设置的越复杂、位数越长、经常更换此类型的密码,从而才能让密码强度尽可能达到最高。
密码协议(cryptographic protocol):使用密码技术的通信协议(传播学 protocol)。近代密码学者多认为除了传统上的加解密算法,密码协议也一样重要,两者为密码学研究的两大课题。在英文中,cryptography和cryptology都可代表密码学,前者又称密码术。但更严谨地说,前者(cryptography)指密码技术的使用,而后者(cryptology)指研究密码的学科,包含密码术与密码分析。密码分析(cryptanalysis)是研究如何破解密码学的学科。但在实际使用中,通常都称密码学(英文通常称cryptography),而不具体区分其含义。
密码体制:进行明密变换的法则。指示这种变换的参数,称为密钥。它们是密码编制的重要组成部分。密码体制的基本类型可以分为四种:错乱,按照规定的图形和线路,改变明文字母或数码等的位置成为密文;代替,用一个或多个代替表将明文字母或数码等代替为密文;密本,用预先编定的字母或数字密码组,代替一定的词组单词等变明文为密文;加乱用有限元素组成的一串序列作为乱数,按规定的算法,同明文序列相结合变成密文。以上四种密码体制,既可单独使用,也可混合使用,以编制出各种复杂度很高的实用密码。
编码(code):常意指加密或隐藏信息的各种方法。然而,在密码学中,编码有更特定的意义:它意指以码字(code word)取代特定的明文。例如,以‘苹果派’(apple pie)替换‘拂晓攻击’(attack at dawn)。编码已经不再被使用在严谨的密码学上,它在信息论或通讯原理上有更明确的意义。
密码破译
密码学研究的内容包含两部分:一是加密算法的设计和研究,另外一部分是密码分析也就是密码破译技术。
在密码学中,如果进行密码分析的攻击者对密码通信进行攻击时。仅能够被动地监听通信道上所有信息就被称为被动攻击。如果攻击者还能够对通信信道上传输的消息进行截取、修改甚至主动发送信息则称之为主动攻击,攻击者与报文接收方的区别在于是否知道解密密钥。由于攻击者不知道解密密钥,因此很难将密文脱密还原为明文。钥方案较对称密钥加密方案处理速度慢,因此通常把公钥与对称密钥技术结合起来实现最佳性能,即用公钥密码技术在通信双方之间传送对称密钥。而用私钥密码技术来对实际传输的数据加密、解密,另外,公钥加密也用来对私钥进行加密。
因为在现代密码学研究中对于加密和解密算法一般都是公开的,所以对于攻击者来说只要知道解密密钥就能够破译密文,因此密钥设计被称为密码学研究的核心,密钥保护被视为防御攻击的重点。对于密钥分析来说,对其进行穷举猜测攻击是任何密码系统都无法避免的,但是当密钥长度足够大并且足够随机就会使得穷举猜测在实际上变得不可能。例如:密钥长度为256位的加密算法,密钥空间为2256对应为1077量级。如果一台计算机每秒可以对密钥空间进行一亿次搜索,那么全部搜索一遍事件所需的时间以年为单位将大于1062,如果密钥空间小或者分布具有一定可预见性那么攻击者就可能利用相关知识大大缩小搜索空间,从而破译密文。
产生历史
密码破译是随着密码的使用而逐步产生和发展的。1412年,波斯人卡勒卡尚迪所编的百科全书中载有破译简单代替密码的方法。到16世纪末期,欧洲一些国家设有专职的破译人员,以破译截获的密信。密码破译技术有了相当的发展。1863年普鲁士人卡西斯基所著《密码和破译技术》,以及1883年法国人克尔克霍夫所著《军事密码学》等著作,都对密码学的理论和方法做过一些论述和探讨。
1917年,英国破译了德国外长齐默尔·曼的电报,促成了美国对德宣战。1942年,美国从破译日本海军密报中,获悉日军对中途岛地区的作战意图和兵力部署,从而能以劣势兵力击破日本海军的主力,扭转了太平洋地区的战局。在保卫英伦三岛和其他许多著名的历史事件中,密码破译的成功都起到了极其重要的作用,这些事例也从反面说明了密码保密的重要地位和意义。1949年美国人克劳德·香农发表了《秘密体制的通信理论》一文,应用信息论的原理分析了密码学中的一些基本问题。
自19世纪以来,由于电报特别是收音机报的广泛使用,为密码通信和第三者的截收都提供了极为有利的条件。通信保密和侦收破译形成了一条斗争十分激烈的隐蔽战线。
技术应用
1.数位签章(Digital 标记)
这是以密码学的方法,根据EDI讯息的内容和发信有该把私钥,任何人都无法产生该签名,因此比手写式的签名安全许多。收信人则以发信人的公钥进行数位签章的验证。
2.数位信封(Digital Envelope)
这是以密码学的方法,用收信人的公钥对某些机密资料进行加密,收信人收到后再用自己的私钥解密而读取机密资料。除了拥有该私钥的人之外,任何人即使拿到该加密过的讯息都无法解密,就好像那些资料是用一个牢固的信封装好,除了收信人之外,没有人能拆开该信封。
3.安全回条
收信人依据讯息内容计算所得到的回覆资料,再以收信人的私钥进行数位签章后送回发信人,一方面确保收信人收到的讯息内容正确无误,另一方面也使收信人不能否认已经收到原讯息。
4.安全认证
每个人在产生自己的公钥之后,向某一公信的安全认证中心申请注册,由认证中心负责签发凭证(Certificate),以保证个人身份与公钥的对应性与正确性。