1、第1章 信息安全技术概述安全攻击 信息在存储、共享和传输中,可能会被非法窃听、截取、篡改和破坏,这些危及信息系统安全的活动称为安全攻击安全攻击 安全攻击分为主动攻击主动攻击和被动攻击被动攻击 被动攻击的特征被动攻击的特征是对传输进行窃听和监测。被动攻击的目的是获得传输的信息,不对信息作任何改动 被动攻击主要威胁信息的保密性被动攻击主要威胁信息的保密性 常见的被动攻击包括消息内容的泄漏和流量分析等 主动攻击则意在篡改或者伪造信息、也可以是改变系统的状态和操作 主动攻击主要威胁信息的完整性、可用性和真实性 常见的主动攻击包括:伪装、篡改、重放和拒绝服务 常见的安全攻击 消息内容的泄漏消息内容的泄漏
2、:消息的内容被泄露或透露给某个非授权的实体 流量分析流量分析(Traffic Analysis):通过分析通信双方的标识、通信频度、消息格式等信息来达到自己的目的 篡改篡改:指对合法用户之间的通信消息进行修改或者改变消息的顺序 伪装伪装:指一个实体冒充另一个实体 重放重放:将获得的信息再次发送以期望获得合法用户的利益 拒绝服务拒绝服务(denial of service):指阻止对信息或其他资源的合法访问。安全机制 阻止安全攻击及恢复系统的机制称为安全安全机制机制 OSI安全框架将安全机制分为特定的安全机特定的安全机制和普遍的安全机制制和普遍的安全机制 一个特定的安全机制是在同一时间只针对一种
3、安全服务实施一种技术或软件 一般安全机制和特定安全机制不同的一个要素是,一般安全机制不能应用到OSI参考模型的任一层上 特定的安全机制特定的安全机制包括:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证 普遍的安全机制普遍的安全机制包括:可信功能机制、安全标签机制、事件检测机制、审计跟踪机制、安全恢复机制 与安全服务有关的机制安全服务有关的机制是加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证。与管理相关的机制管理相关的机制是可信功能机制,安全标签机制,事件检测机制,审计跟踪机制和安全恢复机制 安全目标 信息安全的目标信息安全的目标是指能够满足一
4、个组织或者个人的所有安全需求 通常强调CIA三元组的目标,即保密性(Confidentiality)、完整性(Integrity)和可用性(Availability)由于这些目标常常是互相矛盾的,因此需要在这些目标中找到一个合适的平衡点。例如,简单地阻止所有人访问一个资源,就可以实现该资源的保密性,但这样做就不满足可用性。安全需求 可用性可用性(Availability):确保授权的用户在需要时可以访问信息 完整性完整性(Integrity):保护信息和信息处理方法的准确性和原始性 保密性保密性(Confidentiality):确保信息只被授权人访问 可追溯性可追溯性(Accountabil
5、ity):确保实体的行动可被跟踪 保障保障(Assurance):是对安全措施信任的基础,保障是指系统具有足够的能力保护无意的错误以及能够抵抗故意渗透 安全需求之间的关系安全需求之间的关系安全需求之间的关系 保密性依赖于完整性保密性依赖于完整性,如果系统没有完整性,保密性就失去意义 同样完整性也依赖于保密性完整性也依赖于保密性,如果不能保证保密性,完整性也将不能成立 可用性和可追溯性可用性和可追溯性都由保密性和完整性支持 上面提到的这些安全需求都依赖于保保障障安全服务模型 安全服务安全服务是加强数据处理系统和信息传输的安全性的一种服务,是指信息系统为其应用提供的某些功能或者辅助业务 安全机制是
6、安全服务的基础 安全服务安全服务是利用一种或多种安全机制阻止安全攻击,保证系统或者数据传输有足够的安全性 图1.3是一个综合安全服务模型综合安全服务模型,该模型揭示了主主要安全服务和支撑安全服务要安全服务和支撑安全服务之间的关系 模型主要由三个部分组成:支撑服务,预防服务支撑服务,预防服务和恢复相关的服务和恢复相关的服务 支撑服务支撑服务是其他服务的基础,主要包括:-鉴别(鉴别(Identification):它表示能够独特地识别系统中所有实体-密钥管理密钥管理:该服务表示以安全的方式管理密钥。密钥常常用于鉴别一个实体-安全性管理(安全性管理(Security administration):
7、系统的所有安全属性必须进行管理。如安装新的服务,更新已有的服务,监控以保证所提供的服务是可操作的-系统保护系统保护:系统保护通常表示对技术执行的全面信任 预防服务预防服务能够阻止安全漏洞的发生,包括:-受保护的通信受保护的通信:该服务是保护实体之间的通信-认证(认证(Authentication):保证通信的实体是它所声称的实体,也就是验证实体身份-授权(授权(Authorization):授权表示允许一个实体对一个给定系统作一些行动,如访问一个资源。-访问控制访问控制(Access Control):防止非授权使用资源,即控制谁访问资源,在什么条件下访问,能够访问什么等-不可否认(不可否认(
8、Non-repudiation):它是与责任相关的服务,指发送方和接受方都不能否认发送和接收到的信息。-交易隐私(交易隐私(Transaction privacy):该服务保护任何数字交易的隐私 检测与恢复服务检测与恢复服务主要是关于安全漏洞的检测,以及采取行动恢复或者降低这些安全漏洞产生的影响,主要包括:-审计审计(Audit):当安全漏洞被检测到时,审计安全相关的事件是非常重要的。它是在系统发现错误或受到攻击时能定位错误和找到攻击成功的原因,以便对系统进行恢复-入侵检测入侵检测(Intrusion detection):该服务主要监控危害系统安全的可疑行为,以便尽早地采用额外的安全机制来使
9、系统更安全-整体检验整体检验(Proof of wholeness):整体检验服务主要是检验系统或者数据仍然是否是完整的-恢复安全状态恢复安全状态(Restore secure state):该服务指当安全漏洞发生时,系统必须能够恢复到安全的状态安全目标、需求、服务和机制之间的关系安全目标、需求、服务和机制之间的关系 安全机制安全机制安全机制安全服务安全服务安全服务安全服务安全需求安全需求安全目标安全目标、需求、服务和机制之间的关系安全目标、需求、服务和机制之间的关系 全部安全需求的实现才能达到安全目标 不同的安全服务的联合能够实现不同的安全需求 一个安全服务可能是多个安全需求的组成要素 同样
10、,不同的安全机制联合能够完成不同的安全服务 一个安全机制也可能是多个安全服务的构成要素 表1.1表示了一些安全服务和安全需求之间的关系 表1.1说明了不是所有的安全需求都强制性不是所有的安全需求都强制性地要求所有安全服务地要求所有安全服务 但是这些安全服务并不是完全可以忽略但是这些安全服务并不是完全可以忽略 因为这些安全服务可能间接地使用 如上表中的鉴别和密钥管理两个安全服务仅仅是完整性、保密性和可追溯性所要求的,不是可用性和保障必须的,但可用性是依赖于完整性和保密性。保障则与可用性、完整性、保密性和可追溯性相关 所以一个密钥管理服务将影响所有的安全需求信息安全模型 大多数信息安全涉及通信双方
11、在网络传输过程中的数据安全和计算机系统中数据安全。图1.5是一个典型的网络安全模型。从网络安全模型可以看到,设计安全服务设计安全服务应包括下面的四个方面的内容应包括下面的四个方面的内容:-设计一个恰当的安全变换算法,该算法应有足够强安全性,不会被攻击者有效地攻破。-产生安全变换中所需要的秘密信息,如密钥。-设计分配和共享秘密信息的方法。-指明通信双方使用的协议,该协议利用安全算法和秘密信息实现系统所需要安全服务 网络安全协议 通过对TCP/IP参考模型各层增加一些安全协议来保证安全。这些安全协议主要分布在最高三层,主要有:网络层的安全协议网络层的安全协议:IPSec 传输层的安全协议传输层的安
12、全协议:SSL/TLS 应用层的安全协议应用层的安全协议:SHTTP(Web安全协议)、PGP(电子邮件安全协议)、S/MIME(电子邮件安全协议)、MOSS(电子邮件安全协议)、PEM(电子邮件安全协议)、SSH(远程登录安全协议)、Kerberos(网络认证协议)等 上面提到的一些协议将在本书的后面章节进行详细介绍 第2章 对称加密技术 主要知识点主要知识点:-对称密码模型对称密码模型 -密码攻击密码攻击 -古典加密技术古典加密技术 -数据加密标准数据加密标准 -高级加密标准高级加密标准-流密码 -分组密码工作模式 -随机数的产生 -对称密码的密钥分配 密码技术主要分为对称密码技术对称密码
13、技术和非对称密码技非对称密码技术术 对称密码技术中,加密密钥和解密密钥相同,或者一个密钥可以从另一个导出 非对称密码技术则使用两个密钥,加密密钥和解密密钥不同,非对称密码技术则产生于20世纪70年代 20世纪70年代以前的加密技术都是对称加密技术对称加密技术,这个时期的加密技术也称为古典加密技术古典加密技术。古典加密技术一般将加密算法保密,而现代的对称加密技术则公开加密算法,加密算法的安全性只取决于密钥,不依赖于算法密码学的基本概念 密码学密码学(Cryptology)包括密码编码学密码编码学(Cryptography),和密码分析学和密码分析学(Cryptanalysis)密码编码学密码编码
14、学是研究加密原理与方法,使消息保密的技术和科学,它的目的是掩盖消息内容 密码分析学密码分析学则是研究破解密文的原理与方法 密码分析者密码分析者(Cryptanalyst)是从事密码分析的专业人员 被伪装的原始的消息(Message)称为明文明文(Plaintext)将明文转换为密文过程称为加密加密(Encryption)加了密的消息称为密文密文(Ciphertext)把密文转变为明文的过程称为解密解密(Decryption)从明文到密文转换的算法称为密码密码(Cipher)一个加密系统采用的基本工作方式叫做密码体制密码体制(Cryptosystem)在密码学中见到“系统或体制系统或体制”(Sy
15、stem)、“方方案案”(Scheme)和“算法算法”(Algorithm)等术语本质上是一回事 加密和解密算法通常是在一组密钥密钥(Key)控制下进行的,分别称为加密密钥加密密钥和解密密钥解密密钥 如果加密密钥和解密密钥相同,则密码系统为对对称密码系统称密码系统 对称密码模型 对称密码也称传统密码,它的特点是发送方和接收方共享一个密钥 对称密码分为两类:分组密码分组密码(Block Ciphers)和流密码流密码(Stream Ciphers)分组密码也称为块密码,它是将信息分成一块(组),每次操作(如加密和解密)是针对一组而言 流密码也称序列密码,它是每次加密(或者解密)一位或者一个字节
16、一个对称密码系统(也称密码体制)有五个组成部分组成。用数学符号来描述为SM,C,K,E,D,如图3.2所示。(1)明文空间M,是全体明文的集合。(2)密文空间C,表示全体密文的集合。(3)密钥空间K,表示全体密钥的集合,包括加密密钥和解密密钥。(4)加密算法E,表示由明文到密文的变换。(5)解密算法D,表示由密文到文明的变换。明 文加密算法解密算法明 文传输通道MMCC攻击者接收方发送方密钥源安全通道KK图3.2 对称密码系统模型 对明文M用密钥K,使用加密算法E进行加密常常表示为Ek(M),同样用密钥K使用解密算法D对密文C进行解密表示为Dk(C)在对称加密体制中,密解密密钥相同,有:CEk
17、(M)MDk(C)Dk(Ek(M)密码体制至少满足的条件 (1)已知明文M和加密密钥K时,计算CEk(M)容易 (2)加密算法必须足够强大,使破译者不能仅根据密文破译消息,即在不知道解密密钥K时,由密文C计算出明文M是不可行的(3)由于对称密码系统双方使用相同的密钥,因此还必须保证能够安全地产生密钥,并且能够以安全的形式将密钥分发给双方(4)对称密码系统的安全只依赖于密钥的保密,不依赖于加密和解密算法的保密 密码攻击密码攻击 分析一个密码系统是否是安全,一般是在假定攻假定攻击者知道所使用的密码系统击者知道所使用的密码系统情况下进行分析的 如:密码分析者可以得到密文,知道明文的统计特性,加密体制
18、,密钥空间及其统计特性 这个假设称为Kerckhoff假设假设 分析一个密码系统的安全性一般是建立在这个假设的基础上 对称密码体制的攻击有两种方法:密码分析密码分析和穷穷举攻击举攻击(Brute Force Search)密码分析密码分析是依赖加密算法的性质和明文的一般特征等试图破译密文得到明文或试图获得密钥的过程 穷举攻击穷举攻击则是试遍所有可能的密钥对所获密文进行解密,直至得到正确的明文;或者用一个确定的密钥对所有可能的明文进行加密,直至得到所获得的密文 穷举攻击 穷举攻击是最基本也是比较有效的一种攻击方法 从理论上讲,可以尝试所有的密钥 穷举攻击的代价与密钥大小成正比 密码算法可以通过增
19、大密钥位数或加大解密(加密)算法的复杂性来对抗穷举攻击 表3.1是穷尽密钥空间所需的时间。从表中我们可以发现,当密钥长度达到128位以上时,以目前的资源来说,穷举攻击将不成功 密码攻击类型 密码分析是基于Kerckhoff假设 密码分析者所使用的策略取决于加密方案的性质以及可供密码分析者使用的信息 根据密码分析者所知的信息量,把对密码的攻击分为:唯密文攻击唯密文攻击,已知明文攻击已知明文攻击,选择选择明文攻击明文攻击,选择密文攻击选择密文攻击,选择文本攻击选择文本攻击 唯密文攻击唯密文攻击(Ciphertext-Only Attack):密码分析者知道知道:加密算法和待破译的密文加密算法和待破
20、译的密文.已知明文攻击已知明文攻击(Known-Plaintext Attack):密码分析者除知道加密算法加密算法和待破译的密文待破译的密文外,而且也知道,有一些明文和同一个密钥同一个密钥加密的这些明文所对应的密文即知道一定数量的明文和对应的密一定数量的明文和对应的密文文 选择明文攻击选择明文攻击(Chosen-Plaintext Attack):密码分析者知道加密算法加密算法和待破译的密文待破译的密文,并且可以得到所需要的任何明文所对应的密文,这些明文和待破译的密文是用同一密钥加密得来的,即知道选择的明文和对应的密文选择的明文和对应的密文。如在公钥密码体制中,攻击者可以利用公钥加密他任意选
21、定的明文 选择密文攻击选择密文攻击(Chosen-Ciphertext Attack):密码分析者知道加密算法加密算法和待破译的密文待破译的密文,密码分析者能选择不同的被加密的密文,并可得到对应的解密的明文,即知道选择的密文和对应的明文选择的密文和对应的明文。解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。这种攻击主要用于公钥密码算法。选择文本攻击选择文本攻击(Chosen Text Attack):选择文本攻击是选择明文攻击和选择密文攻击的结合。密码分析者知道加密算法加密算法和待破译的密文待破译的密文,并且知道任意选择的明文和它对应的密文任意选择的明文和它对应的密文,这些明文和待破
22、译的密文是用同一密钥加密得来的,以及有目的选择的密文和它对应的明文,解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。如果一个密码系统能够抵抗选择明文攻击,那么它也能抵抗唯密文攻击和已知明文攻击 在这几种攻击类型中,唯密文攻击难度最大,因为攻击者可利用的信息最少 对密码设计者而言,被设计的加密算法一般要能经受得住已知明文的攻击 如果无论攻击者有多少密文,由一个加密算法产生的这些密文中包含的信息不足以唯一决定对应的明文,也无论用什么技术方法进行攻击都不能被攻破,这种加密算法是绝对安全绝对安全(Unconditional Security)除一次一密(One-Time Pad)外,没有绝对
23、安全的加密算法 一般来说,加密算法的使用者应该挑选满足下列标准中的一个或两个的算法:(1)破译该密码的成本超过被加密信息的价值。(2)破译该密码的时间超过该信息有用的生命周期。如果满足上述的两个准则,一个加密算法就可认为是在计算上安全计算上安全(Computational Security)的 计算上安全是指在计算能力有限的的情况下(如计算所需时间比宇宙生存时间还长),无法破解此密文 目前的加密算法一般是计算上安全的 密码分析方法 当密钥长度增加到一定的大小时,穷举攻击变得不实际 比较流行的密码分析方法是线性密码分析线性密码分析和差分密码分析差分密码分析 线性分析线性分析是一种已知明文攻击 线
24、性分析线性分析是一种统计攻击,它以求线性近似为基础。通过寻找现代密码算法变换的线性近似来攻击 用这种方法只需要知道243个已知明文的情况下就可以找到DES的密钥 差分密码分析差分密码分析在许多方面与线性密码分析相似 它与线性密码分析的主要区别在于差分密码分析包含了将两个输入的异或与其相对应的两个输出的异或相比较 差分密码分析也是一个选择明文攻击 差分密码分析出现于20世纪 70年代,但在1990年才公开发表 它的基本思想基本思想是:通过分析明文对的差值与密文对的差值的影响来恢复某些密钥位 差分分析可用来攻击任何由迭代一个固定的轮函数的结构的密码 古典加密技术 古典加密技术主要使用代换代换或者置
25、换置换技术 代换代换是将明文字母替换成其他字母、数字或者符号 置换置换则保持明文的所有字母不变,只是打乱明文字母的位置和次序 古典代换加密技术分为两类:单字母代换密码单字母代换密码,它将明文的一个字符用相应的一个密文字符代替。多字母代换密码多字母代换密码,它是对多于一个字母进行代换 单字母代换密码中又分为单表代换密码单表代换密码和多表代多表代换密码换密码 单表代换密码单表代换密码只使用一个密文字母表,并且用密文字母表中的一个字母来代替一个明文字母表中的一个字母 多表代换密码多表代换密码是将明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换,而是根据其出现的位置次序,用不同的字母
26、代换 单表代换密码 设M和C分别表示为含n个字母的明文字母表和密文字母表。M=m0,m1,mn-1 C=c0,c1,cn-1 如果f为一种代换方法,那么密文为C=Ek(m)=c0c1cn-1=f(m0)f(m1)f(mn-1)单表代换密码常见的方法有加法密码加法密码,乘乘法密码法密码和仿射密码仿射密码 加法密码 对每个c,m Zn,加法密码的加密和解密算法是:C=Ek(m)=(m+k)mod n M=Dk(c)=(c-k)mod n k是满足0 k n 的正整数。若n是26个字母,加密方法是用明文字母后面第k个字母代替明文字母 Caesar密码密码是典型的加法密码,由Julius Caesar
27、 发明,最早用在军方。将字母表中的每个字母,用它后面的第3个字母代替 Caesar密码举例密码举例 明文:meet me after the toga party 密文:PHHW PH DIWHU WKH WRJD SDUWB 对每个明文字母m,用密文字母c代换,那么Caesar 密码算法如下:加密:C=E(m)=(m+3)mod 26 解密:M=D(c)=(c3)mod 26 移位可以是任意的,如果用k(1k25)表示移位数,则通用的Caesar 密码算法表示为:加密:C=Ek(m)=(m+k)mod 26 解密:M=Dk(c)=(ck)mod 26 Caesar 密码安全性 对密码的分析是
28、基于Kerckhoff假设 假设攻击者知道使用Caesar 密码加密。如果攻击者只知道密文,即唯密文攻击唯密文攻击,只要穷举测试所有可能字母移位的距离,最多尝试25次 如果攻击者知道一个字符以及它对应的密文,即已知明文攻击已知明文攻击,那么攻击者很快就通过明文字符和对应的密文字符之间的距离推出密钥 这个例子说明一个密码体制安全至少要能够抵抗穷举密钥搜索攻击,普通的做法是将密钥空间变得足够大。但是,很大的密钥空间并不是保证密码体制安全的充分条件,下面的例子可以说明这一点 对Caesar 密码进行改进,假设密文是26个字母的任意代换,密钥是明文字母到密文字母的一个字母表,密钥长度是26字长 下面用
29、一个密钥句子构造一个字母代换表 密钥句子为the message was transmitted an hour ago,按照密钥句子中的字母依次填入字母表(重复的字母只用一次),未用的字母按自然顺序排列 原字母表abcdefghijklmnopqrstuvwxyz 代换字母表THEMSAGWRNIDOUBCFJKLPQVXYZ 若明文为please confirm receipt 使用上面的代换字母表,则密文为CDSTKSEBUARJOJSESRCL 使用上面的方法代换,总共有 26!=4 x 1026 种密钥 从表3.1可以看到穷举搜索这么多的密钥很困难 但这并不表示该密码不容易破解 破解
30、这类密码的突破点是由于语言本身的特点是充满冗余的,每个字母使用的频率不相等 单表代换密码没有改变字母相对出现的频率单表代换密码没有改变字母相对出现的频率 明文字母的统计特性在密文中能够反映出来,当通过统计密文字母的出现频率,可以确定明文字母和密文字母之间的对应关系 英文字母中单字母出现的频率 单字母按照出现频率的大小可以分为下面5类:(1)e:出现的频率大约为0.127 (2)t,a,o,I,n,s,h,r:出现的频率大约在0.06-0.09之间 (3)d,l:出现的频率约为0.04 (4)c,u,m,w,f,g,y,p,b:出现的频率大约在0.015-0.028之间 (5)v,k,j,x,q
31、,z:出现的频率小于0.01 双字母和三字母组合都有现成的统计数据,常见的双字母组合和三字母组合统计表能够帮助破解密文。频率最高的30个双字母(按照频率从大到小排列):th he in er an re ed on es st en at to nt ha nd ou ea ng as or ti is et it ar te se hi of 频率最高的20个3字母(按照频率从大到小排列):the ing and her ere ent tha nth was eth for dth hat she ion int his sth ers ver破解举例 例例3.1 已知下面的密文式由单表代
32、换生产的:UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ,试破译该密文 首先统计密文中字母出现的频率,然后与英文字母出现频率比较。密文中字母的相对频率统计如下:将统计结果与图3.3进行比较,可以猜测密文中P与Z可能是e和t,密文中的S,U,O,M出现频率比较高,可能与明文字母中出现频率相对较高的a,o,I,n,s,h,r这些字母对应 密文中出现频率很低的几个字母C,K,L,N,R,I,J可能与明文字母中
33、出现频率较低的字母v,k,j,x,q,z对应。就这样边试边改,最后得到明文如下:it was disclosed yesterday that several informal but direct contacts have been made with political representatives of the viet cong in moscow 在尝试过程中,如果同时使用双字母和三字母的统计规律,那么更容易破译密文。如上面的密文中出现最多的双字母是ZW,它可能对应明文双字母出现频率较大的th,那么ZWP就可能是the,这样就更容易试出明文。乘法密码 对每个c,m Zn,乘法密码
34、的加密和解密算法是:C=Ek(m)=(mk)mod n M=Dk(c)=(ck-1)mod n 其中k和n互素,即gcd(k,n)=1,否则不存在模逆元,不能正确解密 乘法密码的密码空间大小是(n),(n)是欧拉函数。乘法密码的密钥空间很小,当n为26字母,则与26互素的数是1、3、5、7、9、11、15、17、19、21、23、25,即(n)=12 因此乘法密码的密钥空间为12。乘法密码也称采样密码采样密码,因为密文字母表是将明文字母按照下标每隔k位取出一个字母排列而成。乘法密码举例 例例3.2 假设选取密钥为9,使用乘法密码的加密算法,那么明文字母和密文字母的代换表构造如下 若明文为a m
35、an liberal in his views 那么密文为AENVUJKXUNLUGHUKQG仿射密码 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:C=Ek(m)=(k1m+k2)mod n M=Dk(c)=k1-1(c-k2)mod n 仿射密码具有可逆性的条件是gcd(k,n)=1。当k1=0时,仿射密码变为加法密码,当k2=0时,仿射密码变为乘法密码。仿射密码中的密钥空间的大小为n(n),当n为26字母,(n)=12,因此仿射密码的密钥空间为1226=312。仿射密码举例 例例3.3设密钥K=(7,3),用仿射密码加密明文hot。三个字母对应的数值是7、14和19。
36、分别加密如下:(77+3)mod 26=52 mod 26=0 (714+3)mod 26=101 mod 26=23 (719+3)mod 26=136 mod 26=6 三个密文数值为0、23和6,对应的密文是AXG。多表代换密码 用单表代换密码加密后的密文具有明文的特征,通过统计密文中字母出现的频率能够比较方便地破解密文 要提高密码的强度,应该让明文结构在密文中尽量少出现 多表代换密码和多字母代换密码能够减少这种密文字母和明文字母之间的对应关系 多表代换密码多表代换密码是对每个明文字母信息采用每个明文字母信息采用不同的单表代换不同的单表代换 如果明文字母序列为m=m1m2,令f=f1,f
37、2,为代换序列,则对应的密文字母序列为:C=Ek(m)=f1(m1)f2(m2)若代换系列为非周期无限序列,则相应的密码为非非周期多表代换密码周期多表代换密码 这类密码对每个明文字母都采用不同的代换表或密钥进行加密,称作是一次一密密码一次一密密码(one-time pad cipher),这是一种在理论上唯一不可破的密码 实际中经常采用周期多表代换密码周期多表代换密码,它通常只使用有限的代换表,代换表被重复使用以完成对消息的加密 周期多表代换密码周期多表代换密码此时代换表系列为:f=f1,f2,fd,f1,f2,fd,在对明文字母序列为m=m1m2进行加密时,相应的密文字母系列为:C=Ek(m
38、)=f1(m1)f2(m2)fd(md)f1(md+1)f2(md+2)fd(m2d)当d=1时,多表代换密码变为单表代换密码。维吉尼亚密码维吉尼亚密码 维吉尼亚(Vigenre)密码是一种周期多表代换密周期多表代换密码码,由1858年法国密码学家维吉尼亚提出 维吉尼亚密码常常使用英文单词作为密钥字,密钥则是密钥字的重复 比如密钥字是computer,用它加密明文sender and recipient share a common key。那么密钥为:明文:senderandrecipientshareacommonkey 密钥:computercomputercomputercompute
39、rc 维吉尼亚密码加密过程简述如下:-写下明文,表示为数字形式;-在明文之上重复写下密钥字,也表示为数字形式;-加密相对应的明文:给定一个密钥字母k和一个明文字母m,那么密文字母则是(m+k)mod 26计算结果所对应的字母维吉尼亚密码举例 例例3.5 设密钥字是cipher,明文串是this cryptosystem is not secure,求密文。在明文下面重复写密钥字,组成密钥。明文M:thiscryptosystemisnotsecure 密钥K:cipherciphercipherciphercip 将明文和密钥转化为数字 明文M=(19,7,8,18,2,17,24,15,19
40、,14,18,24,18,19,4,12,8,18,13,14,19,18,4,2,20,17,4)密钥K=(2,8,15,7,4,17,2,8,15,7,4,17,2,8,15,7,4,17,2,8,15,7,4,17,2,8,15)对每个明文数字和对应的密钥数字,使用ci=(mi+ki)mod 26加密 得到密文数字为C=(21,15,23,25,6,8,0,23,8,21,22,15,21,1,19,19,12,9,15,22,8,25,8,19,22,25,19)于是密文为:VPXZGIAXIVWPUBTTMJPWIZITWZT 维吉尼亚密码的安全性 维吉尼亚密码是将每个明文字母映射为
41、几每个明文字母映射为几个密文字母个密文字母 如果密钥字的长度是m,明文中的一个字母能够映射成这m个可能的字母中的一个 密文中字母出现的频率被隐蔽了,它的安全性明显比单表代换密码提高了 维吉尼亚密码的密钥空间比较大,对于长度是m的密钥字,密钥空间为26m 当m=5,密钥空间所含密钥的数量大于1.1x107 一次一密 一次一密是非周期多表代换密码是非周期多表代换密码 使用与明文一样长且无重复的随机密钥来加密明文,并且该密钥使用一次后就不再使用 一次一密的安全性是取决于密钥的随机性 但产生大规模随机密钥是一件很困难的事情,目前还没有很好的办法来解决这个问题 密钥分配也是一个难点,由于密钥不允许重复使
42、用,因此存在大量的密钥分配问题。一次一密在实际中很少使用,主要是用于高度机密的低带宽信道 多字母代换密码 前面介绍的密码都是以单字母单字母作为代换对象 多字母代换密码多字母代换密码每次对多个字母多个字母进行代换 多字母代换的优点是容易隐藏字母的自然出现频率,有利于对抗统计分析 Playfair 密码密码 和Hill 密码密码 都是多字母代换密码Playfair 密码 Playfair 密码是将明文中双字母音节作为一个代换单元 Playfair算法是基于一个由密钥组成的一个55 阶矩阵 假设密钥是monarchy,构建矩阵的方法是将密钥(去掉重复的字母)从左到右、从上到下填入矩阵中,再将剩余的字
43、母按照字母表的顺序依次填入 在该矩阵中,字母i和j暂且当一个字母。这样可以构成如下的密钥矩阵。MONARCHYBDEFGI/JKLPQSTUVWXZPlayfair的加密原则 每次以两个字母两个字母为一个单位进行操作。(1)如果这两个字母一样,则在中间插入一个字母x(事先约定的一个字母),如“balloon”变成“ba lx lo on”。(2)如果明文长度不是2的倍数,则在最后填入一个实现约定的字母x。如“table”变为“ta bl ex”。(3)如果两个字母在矩阵的同一行,用它右边的字母来代替(最后一个字母的右边是第1个字母),如“ar”加密变为“RM”。(4)如果两个字母在同一列,用它
44、下面的字母来代替它(最底下的字母的下一个是该列第1个字母),如“mu”加密变为“CM”。(5)其他的字母都用它同一行,另一个字母的同一列相交的字母代替,如“hs”加密变为“BP”,“ea”变为“IM”或者“JM”(由加密者自行决定)Playfair加密举例 例例3.6 假设密钥是cipher,使用Playfair算法加密Playfair cipher was actually invented by wheatston 由密钥词cipher可构建密钥矩阵:将明文按照两个字母分组为 pl ay fa ir ci ph er wa sa ct ua lx ly in ve nt ed by wh
45、ea ts to nx 则密文为 BS DW RB CA IP HE CF IK QB HO QF SP MX EK ZC MU HF DX YI IF UT UQ LZ CIPH ERABDFGKLM NOQSTUVW XYZPlayfair密码的安全性 Playfair密码的安全性比单表代换密码提高了许多 双字母共有26 x 26=676 组合,因此频率统计分析表中需要676 条统计数据 Playfair 密码中比单表代换更好地隐藏了明文中单字母的结构 在第一次世界大战中被英军作为最好的密码系统使用,在第二次世界大战中也曾经被美军和盟军大量使用 当然现在看来,该密码的安全性是很低的,它还明
46、文的部分特征,只要给定几百个字母的密文情况下,该加密方法就可以破解 Hill 密码 该密码是1929年由数学家lester Hill发明的一种多字母代换密码 加密算法将m个明文字母替换成m个密文字母(Hillm密码表示m个明文字母为一组)这种代换由 m个线性方程决定 如果m=3,则该密码系统可以表示为:用向量或者矩阵表示为:其中C和M是长度为3的列向量,分别代表密文和明文,K是一个33的矩阵,代表加密密钥 运算按照模26执行。Hillm 密码加密过程 将明文字母以m个字母为单位进行分组,若最后一组没有m个字母,则补足没有任何实际意义的哑字母(双方事先可以约定这些字母),并用数字表示这些字母;选
47、择一个m阶可逆方阵K,称为Hillm密码的加密矩阵;对每m个字母为一组的明文字母,用它对应的值构成一个m维向量;计算密文的值C=km mod26,然后反查字母表的值,得到对应的m个密文字母;同样明文的其他组的密文。置换密码 代换密码代换密码是将明文字母用不同的密文字母代替 置换密码置换密码则保持明文的所有字母不变,只是打乱明文字母的位置和次序 置换密码置换密码实现方法有很多.下面介绍一种列置换加密方法 假如用密钥network,加密明文permutation cipher hide the message by rearranging the letter order 将明文按照密钥的长度一行
48、一行地写成一个矩阵,然后按照密钥字母对应的数值从小到大,按照列读出即为密文 在密钥network中,字母对应的数字从小到大排列是eknortw,按照这个顺序读出上面矩阵的列即是密文:EIEHGRGTRAPESEIEDPTHTAANTEUCIEYNEOTIDSRGLRROREERTE MNHMBAHR 置换密码比较简单,经不起已知明文攻击 但是置换密码与代换密码相结合,可以得到效果很好的密码。数据加密标准 美国国家标准局(NBS),即现在的国家标准和技术研究所(NIST)于1973年5月向社会公开征集标准加密算法 并公布了它的设计要求:-算法必须提供高度的安全性 -算法必须有详细的说明,并易于理
49、解 -算法的安全性取决于密钥,不依赖于算法 -算法适用于所有用户 -算法适用于不同应用场合 -算法必须高效、经济 -算法必须能被证实有效 1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由Feistel领导的团队研究开发,采用64位分组以及128位密钥 IBM用改版的Lucifer算法参加竞争,最后获胜,成为数据加密标准(Data Encryption Standard,DES)1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。1977年1月15日,数据加密标准,即FIPS PUB 46正式发布 DES是分组密码的典型代表,也是第一个被
50、公布出来的加密标准算法。现代大多数对称分组密码也是基于Feistel密码结构 DES加密过程 DES同时使用了代换代换和置换置换两种技巧 它用56位密钥加密64位明文,最后输出64位密文 整个过程分为两大部分组成:一是加密过加密过程程,另一是子密钥产生过程子密钥产生过程 图3.4是DES加密算法简图 图图3.4左半边左半边的处理过程可以分三个部分:(1)64位明文经过初始置换被重新排列,然后分左右两半,每半各32位;(2)左右两半经过16轮置换和代换迭代,即16次实施相同的变换。然后再左右两半互换;(3)互换后的左右两半合并,再经过逆初始置换输出64位密文。图图3.4右半部右半部则由56位密钥