本文简要地介绍了现代密码学的一些基础理论,供参考。 1 加密技术概述 一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。 对纯数据的加密的确是这样。对于你不愿意让他看到这些数据 但是,软件的加密不同于数据的加密,它只能是"隐藏" Cracker)看见这些数据(软件的明文),软件最终总要在机 Cracker,通过一些技术,也可以看到这些明文。 于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。 所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版 Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的 Cracker 的破解变得毫无意义--谁会花比正版软件更多的钱去买盗版软件 ? 2 密码学简介 2.1 概念 (1) 发送者和接收者 假设发送者想发送消息给接收者,且想安全地发送信息 (2) 消息和加密 消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加 明文用M(消息)或P(明文)表示,它可能是比特流(文本文件 密文用C表示,它也是二进制数据,有时和M一样大,有时稍大 E(M)=C. 相反地,解密函数D作用于C产生M D(C)=M. 先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立 D(E(M))=M (3) 鉴别、完整性和抗抵赖 除了提供机密性外,密码学通常有其它的作用:. (a) 鉴别 消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。 (b) 完整性检验 消息的接收者应该能够验证在传送过程中消息没有被修改 (c) 抗抵赖 发送者事后不可能虚假地否认他发送的消息。 (4) 算法和密钥 密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下 如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算 更糟的是,受限制的密码算法不可能进行质量控制或标准化 尽管有这些主要缺陷,受限制的算法对低密级的应用来说还是很流行 现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数 EK(M)=C DK(C)=M. 这些函数具有下面的特性: DK(EK(M))=M. 有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与 EK1(M)=C DK2(C)=M DK2 (EK1(M))=M 所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节 密码系统由算法、以及所有可能的明文、密文和密钥组成的。 基于密钥的算法通常有两类:对称算法和公开密钥算法 2.2 对称密码算法 对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推 对称算法的加密和解密表示为: EK(M)=C DK(C)=M 对称算法可分为两类。一次只对明文中的单个比特(有时对字节 2.3 公开密码算法 公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不 用公开密钥K加密表示为 EK(M)=C. 虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示 DK(C)=M 有时消息用私人密钥加密而用公开密钥解密,这用于数字签名 EK(M)=C DK(C)=M 当前的公开密码算法的速度,比起对称密码算法,要慢的多 2.4 单向散列函数 单向散列函数 H(M) 作用于一个任意长度的消息 M,它返回一个固定长度的散列值 h,其中 h 的长度为 m 。 输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数 (1) 给定 M ,很容易计算 h ; (2) 给定 h ,根据 H(M) = h 计算 M 很难 ; (3) 给定 M ,要找到另一个消息 M‘ 并满足 H(M) = H(M‘) 很难。 在许多应用中,仅有单向性是不够的,还需要称之为"抗碰撞 要找出两个随机的消息 M 和 M‘,使 H(M) = H(M‘) 满足很难。 由于散列函数的这些特性,由于公开密码算法的计算速度往往很慢 M 的摘要,代替原始消息 M,让发送者为 H(M) 签名而不是对 M 签名 。 如 SHA 散列算法用于数字签名协议 DSA中。 2.5 数字签名 提到数字签名就离不开公开密码系统和散列技术。 有几种公钥算法能用作数字签名。在一些算法中,例如RSA 。 基本协议是简单的 : (1) A 用她的私钥对文件加密,从而对文件签名。 (2) A 将签名的文件传给B。 (3) B用A的公钥解密文件,从而验证签名。 这个协议中,只需要证明A的公钥的确是她的。如果B不能完成第 这个协议也满足以下特征: (1) 签名是可信的。当B用A的公钥验证信息时,他知道是由A签名的。 (2) 签名是不可伪造的。只有A知道她的私钥。 (3) 签名是不可重用的。签名是文件的函数,并且不可能转换成另外的文 (4) 被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用 (5) 签名是不可抵赖的。B不用A的帮助就能验证A的签名。 在实际应用中,因为公共密码算法的速度太慢,签名者往往是对消息 注:本文由计算机专业相关教材整理 |
|