引自:《智能制造信息安全技术》(作者:秦志光, 聂旭云, 秦臻)
该书已出版,详细信息请见文末~
「 1. 密码学发展简史 」
密码学的发展历史大致可划分为3个阶段。
1)第一个阶段:古代—1949年
这一时期可看作是科学密码学的前夜时期,这段时间的密码技术可以说是一种艺术,而不是一门科学。密码学专家常常是凭直觉和信念来进行密码设计和分析,而不是推理证明。这一个阶段使用的一些密码体制为古典密码体制,大多数都比较简单而且容易破译,但这些密码的设计原理和分析方法对于理解、设计和分析现代密码是有帮助的。这一阶段密码主要应用于军事、政治和外交。
最早的古典密码体制主要有单表代换密码体制和多表代换密码体制。这是古典密码中的两种重要体制,曾被广泛地使用过。单表代换的破译十分简单,因为在单表代换下,除了字母名称改变以外,字母的频度、重复字母模式、字母结合方式等统计特性均未发生改变,依靠这些不变的统计特性就能破译单表代换。相对单表代换来说,多表代换密码的破译要难得多。多表代换大约是在1467年左右由佛罗伦萨的建筑师Alberti发明的。多表代换密码又分为非周期多表代换密码和周期多表代换密码。非周期多表代换密码,对每个明文字母都采用不同的代换表(或密钥),称作一次一密密码,这是一种在理论上唯一不可破的密码。这种密码可以完全隐蔽明文的特点,但由于需要的密钥量和明文消息长度相同而难于广泛使用。为了减少密钥量,在实际应用当中多采用周期多表代换密码。在16世纪,有各种各样的多表自动密钥密码被使用,如Vigenère、Beaufort、Running-Key、Vernam和转轮机(rotor machine)。对于单表代换和多表代换密码来说,唯密文分析是可行的。单表代换和多表代换密码都是以单个字母作为代换对象的,而每次对多个字母进行代换就是多字母代换密码。1854年L. Playfair在英国推广Playfair密码,它是由英国科学家C. Wheatstone发明的。这是第一种多字母代换密码,在第一次世界大战中英国人就采用这种密码。多字母代换的优点是容易将字母的自然频度隐蔽或均匀化而有利于抵抗统计分析。
在20世纪20年代,人们发明了各种机械加密设备用来自动处理加密,大多数是基于转轮的概念。1918年美国人E. H. Hebern造出了第一台转轮机,它是基于一台用有线连接改造的早期打字机来产生单字母表替代的,输出是通过原始的亮灯式指示。最著名的转轮装置是Enigma,它是由德国人Scherbius发明并制造的。它在第二次世界大战中由德国人使用,不过在第二次世界大战期间,它就被破译了。
2)第二个阶段:1949—1975年
1949年Shannon发表的《保密系统的信息理论》一文为私钥密码系统建立了理论基础[2],从此密码学成为了一门科学,其最完整的非技术性著作是Kahn的《破译者》[3]。这本书回溯了密码学的历史,内容包括从大约4000年前埃及人的原始的和有限的使用,直到20世纪两次世界大战中它所扮演的关键角色。Kahn的著作完成于1963年,覆盖了历史上对当时密码学科的发展最为重要的方面。它的意义在于它不仅记述了1967年之前密码学发展的历史,而且使许多不知道密码学的人了解了密码学。
20世纪60年代以来计算机和通信系统的普及,带动了个人对数字信息保护及各种安全服务的需求。IBM的Feistel在70年代初期开始其工作,到1977年达到顶点:其研究成果被采纳成为加密非分类信息的美国联邦信息处理标准,即历史上最著名的密码体制数据加密标准DES。随着计算机硬件的发展及计算能力的提高,DES已经不再安全。1997年7月22日电子边境基金学会(EFF)使用一台25万美金的电脑在56小时内破译了56位DES。1998年12月美国决定不再使用DES。美国国家标准技术研究所(NIST)现在已经启用了新的加密标准AES,它选用的算法是比利时的研究成果“Rijndael”。以上这两个阶段所使用的密码体制都称为是对称密码体制,因为这些体制中,加密密钥和解密密钥是相同的。
3)第三个阶段:1976年至今
密码学历史上最突出的发展乃是1976年Diffie和Hellman发表的《密码学的新方向》一文。他们首次证明了在发送端和接收端无密钥传输的保密通信是可能的,从而开创了公钥密码学的新纪元。这篇论文引入了公钥密码学的革命性概念[1],并提供了一种密钥交换的创造性的方法,其安全性是基于求解离散对数问题的困难性,但当时两位作者并没有提供公钥加密方案的实例。1978年,由Rivest, Shamir和Adleman三人提出了著名的RSA方案,该方案的安全性基于大整数因子分解困难问题。另一类实用的公钥密码方案1985年由ElGamal提出的ElGamal方案,这个方案在密码协议中有着大量的应用,它的安全性是基于求解离散对数问题的。其他的公钥密码算法还有Rabin算法、Merkle-Hellman背包算法、Chor-Rivest算法、McEliece算法、椭圆密码曲线算法等等。这些公钥密码体制的安全性都是计算上安全的,而不是无条件安全的,而且相对于对称密码体制,公钥密码的运行速度较慢。
公钥密码学所提供的最重要贡献之一是数字签名。公钥密码体制的诞生为数字签名的研究和应用开辟了一条广阔的道路。数字签名的应用非常广泛,签名起到认证、核准和生效作用。在从前,政治、军事、外交等活动中签署文件,商业上签订契约和合同,以及日常生活中在书信、从银行中取款等事务中的签字,传统上都采用手写签名或印鉴。而随着信息时代的到来,人们当然希望通过数字信息网进行迅速的、远距离的贸易合同的签名,这样数字签名就应运而生,并开始应用于商业通信系统,诸如电子邮件、电子转账、电子商务及办公自动化等系统。目前数字签名的研究内容非常丰富,包括普通签名和特殊签名。特殊签名有盲签名,代理签名,群签名,不可否认签名,公平盲签名,门限签名,具有消息恢复功能的签名等,它们与具体应用环境密切相关。数字签名的第一个国际标准(ISO/IEC9796)在1991年颁布,它是基于RSA公钥方案的。而数字签名标准(DSS)是由美国国家标准技术研究所(NIST)于1991年8月30日提出,1994年5月19日在联邦记录(FR)中公布,在1994年12月1日被采纳,它是ElGamal数字签名方案的一个变形。
密码学发展的第三个阶段是密码学最活跃的阶段,不仅有许多的公钥算法提出和发展,同时对称密钥技术也在飞速的向前发展的。而且密码学应用的重点也转到与人们息息相关的问题上。随着信息和网络的迅速发展,相信密码学还会有更多更新的应用。
经过长久的年月,密码学已成为一门有许多人发明出特定技术以满足某些信息安全需求的技术。最近20年是其从技术到科学的过渡时期,现在已有几个专门研讨密码学的国际会议,且有一个国际性的组织:国际密码研究协会(IACR),致力于促进该领域的研究。
密码指的是采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。研究密码编制的科学称为密码编码学(Cryptography),研究密码破译的科学称为密码分析学(Cryptanalysis),密码编码学和密码分析学共同组成密码学(Cryptology)。密码学并不能解决所有的信息安全问题,其主要目标是提供以下4种安全服务:
(1)机密性。机密性是指保持信息内容不被非授权者获取的一项服务。
(2)数据完整性。数据完整性是指致力于防止数据遭非法篡改的一项服务。为确保数据完整性,一方必须能够检测到非授权方对数据的操作,包括插入、删除、替换等。
(3)认证。认证包括实体认证和信息源认证,其中数据源认证隐含了数据完整性。
(4)不可抵赖性。不可抵赖性是指防止否认以前承诺或行为的一项服务。当由于某个实体否认执行过某种行为而引起纠纷时,就有必要采取一种方式解决这类情况。
以机密性为例。密码技术的基本思想是伪装信息,使未授权者不能理解它的真实含义,所谓伪装就是对数据进行一组可逆的数学变换。伪装前的原始数据称为明文(Plaintext),有时也称为消息(Message), 伪装后的数据称为密文(Ciphertext),伪装的过程称为加密(Encryption),去掉密文的伪装恢复出明文,这一过程称为解密(Decryption)。加密和解密均在密钥(Key)的控制下进行。用于对数据加密的一组数学变换称为加密算法。用于解密的一组数学变换是加密算法的逆,称为解密算法。因此,一个密码系统通常由5部分组成:
(1)明文空间M,它是全体明文的集合。
(2)密文空间C,它是全体密文的集合。
(3)密钥空间K,它是全体密钥的集合。其中每一个密钥K均由加密密钥Ke和解密密钥Kd组成,即K=< Ke , Kd >
(4)加密算法E,它是一族由M到C的加密变换。
(5)解密算法D,它是一族由C到M的解密变换。
如图1所示,发送方在加密密钥Ke的控制下将明文数据M加密成密文C,然后将密文数据在公开的信道上传输,并通过安全信道给合法接收方分配密钥。合法接收方收到密文后,在解密密钥的控制下将密文恢复成明文。因为数据以密文形式在网络中传输,而且只给合法接收者分配密钥。这样,信道上的攻击者即使窃取到密文,由于没有密钥而不能得到明文,因此不能理解密文的真实含义,从而达到确保数据机密性的目的。
图1 保密通信系统模型
一个好的密码体制至少应满足的两个条件:
(1)在已知明文M和加密密钥Ke时,容易计算密文C=EKe (M);在已知密文C和解密密钥Kd时,容易计算M=DKe (C)。
(2)在不知解密密钥Kd时,不可能由密文C恢复出明文M。
密码分析学的目标是破译密码算法,即得到密钥或者是得到合法密文对应的明文。其前提是著名的Kerckhoff假设,即密码体制的安全性仅依赖于对密钥的保密,而不应依赖于算法的保密。为了抵抗密码分析,密码系统需要满足即使达不到理论上是不可破的,也应当为计算上不可破的。也就是说,由截获的密文或某些已知明文密文对,通过现有的计算资源要确定密钥或恢复合法密文相应的明文是不可行的。
密码分析者攻击密码体制的方法主要有:
(1)穷举攻击。通过试遍所有的密钥来进行破译。一般可通过增大密钥空间来抵抗。
(2)统计分析攻击。通过分析密文和明文的统计规律来破译。密码算法设计时应尽可能设法使明文和密文的统计规律不一样。
(3)解密变换攻击。针对加密变换的数学基础,通过数学方法求解来设法找到密钥或合法密文对应的明文。针对这类攻击,可选用具有坚实的数学基础和足够复杂的密码算法。
基础密码算法根据密钥使用的方式不同,可分为无密钥密码算法、对称密钥密码算法和非对称密码算法。无密钥密码算法指的是算法中没有用到密钥的密码算法,如杂凑函数、单项置换函数、随机序列发生器等。对称密钥密码算法指的是加密密钥和解密密钥相同或者是加密密钥和解密密钥之间很容易相互推导的密码算法。这一类算法有流密码算法、分组密码算法、消息摘要函数等。非对称密钥密码算法又称为公钥密码算法,其加密密钥和解密密钥不同,而且相互之间在没有秘密参数的情况下很难相互推导。这一类算法包括公钥加密算法、数字签名算法和身份认证算法等,如图2所示。
图2 密码算法的分类
实现密码的功能,需要密码应用技术体系的支撑。密码应用技术体系框架[4]包括密码资源、密码支撑、密码服务和密码应用4个层次,以及提供管理服务的密码管理基础设施,如图3所示。
图3 密码应用技术框架
密码资源层提供基础性的密码算法资源,底层提供流密码、分组、公钥、杂凑、数字签名等基础密码算法;上层以算法软件、算法IP核和算法芯片等形态对底层的基础密码算法进行封装。
密码支撑层提供密码资源调用,由安全芯片、密码模块和密码机等各类密码功能产品组成。
密码服务层提供密码应用接口,分为对称密钥密码服务、公钥密码服务、数字签名服务等,为上层应用提供机密性、完整性、身份认证、不可否认性等安全服务。
密码应用层调用密码服务层提供的密码应用接口,实现所需要的数据加解密、数字签名和验签等功能,为信息系统、工业控制系统提供安全服务,如安全电子邮件、安全传输、访问控制、身份认证等。