密码学
符号说明:
D(K,Y) 用密钥K和对称算法解密密文Y
D(PR a ,Y) 用A的私钥PRa和非对称算法解密密文Y
D(PU a ,Y) 用A的公钥PRa和非对称算法解密密文Y
E(K,X) 用密钥K和对称算法加密明文X
E(PR a, X) 用A的私钥和对称算法加密明文X
E(PU a ,X) 用A的公钥和对称算法加密明文X
K 密钥
PRa 用户A的私钥
PUa 用户A的公钥
**C **密文
P 明文
**gcb(a,b) **表示a和b的最大公因子
OSI安全框架
安全攻击 :分为被动攻击和主动攻击。被动攻击包括非授权阅读消息、文件以及流量分析。主动攻击包括对消息或文件的篡改以及拒绝服务等。
安全机制 :安全机制是一种处理过程(或实现该处理过程的设备),用来检测、阻止攻击或者从攻击状态恢复为正常状态。安全机制的例子有加密算法、数字签名和认证协议。
安全服务 :安全服务包括认证、访问控制、数据保密性、数据完整性、非否认性以及可用性。
密码算法和协议的4个领域
对称加密 :用于加密任意大小的数据块或数据流的内容,包括消息、文件、加密密钥和口令。
非对称加密 :用于加密小的数据块,如加密密钥或数字签名中使用的Hash函数值**。**
数据完整性算法 :用于保护数据块(例如一条消息)的内容免于修改。
认证协议 :有许多基于密码算法的认证方案,用来认证实体的真实性。
对称密码模型
对称加密方案有5个基本成分
明文: 原始可理解的消息或数据,是算法的输入
加密算法: 加密算法对明文进行各种代替和变换
密钥: 密钥也是加密算法的输入。密钥独立于明文和算法。算法根据所用的特定密钥而产生不同的输出。算法所用的确切代替和变换也依靠密钥。
密文: 作为算法的输出,看起来完全随机而杂乱的消息,依赖于明文和密钥。对于给定的消息,不同的密钥产生不同的密文,密文看上去是随机的数据流,并且其意义是不可理解的。
解密算法: 本质上是加密算法的逆运算。输入密文和密钥,输出原始明文。
注:发送者和接收者必须在某种安全的形式下获得密钥并且必须保证密钥安全。如果有人发现该密钥,而且知道相应的算法,那么就能解读使用该密钥加密的所有通信。
对称密码体制模型
密码编码学系统具有的三个独立特征
替换明文为密文的运算类型: 所有的加密算法都基于两个原理:替换和置换。代替是将明文中的每个元素(如位,字母,位组或字母组等)映射成另一个元素;置换是将明文中的元素重新排列。上述运算的基本要求是不允许有信息丢失(即所有的运算时可逆的)。大多数密码体制,也称为乘积密码系统,都使用多层代替和置换。
所用的密钥数: 如果发送方和接收方使用相同的密钥,这种密码就称为对称密码、单密钥密码、秘密钥密码或传统密码。如果发收双方使用不同的密钥,这种密码就称为非对称密码、双钥或公钥密码。
处理明文的方法: 分组密码每次处理输入的一组元素,相应的输出一组元素。流密码则是连续的处理输入元素,每次输出一个元素。
古典加密方法
代替技术
Caesar密码: 对字母表中的每个字母,用它之后的第k个字母来代替。
加密算法:C = E(k,P) = (p+k) mod 26
解密算法:P = D(k,C) = (C-k) mod 26
**单表代替密码: **对于Caesar密码允许任意代替。26个字母的任意置换,有26!的可能密钥。为每一条消息用一个字母表(给出从明文字母到密文字母的映射)加密。该加密很容易通过统计的方法进行破解,有两种主要的方法可以减少代替密码里明文结构在密文中的残留度:一种是对明文中的多个字母一起加密,另一种是采用多表代替密码。
Playfair密码: 把明文中的双字母音节作为一个单元并将其转换成密文的"双字母音节"
Hill密码: 该加密算法将m个连续的明文字母替换成m个密文字母,这是由m个线性方程决定,在方程中每个字母被指定为一个数值(a=0,b=1,….,z=25)。例如m=3,系统可以描述为:
用行向量和矩阵表示如下:
或
这里C和P是长度为3的行向量,分为代表密文和明文,K是一个3*3矩阵,代表加密密钥。运行按模26执行。
用一般术语,Hill密码系统可以表示如下:
同Playfair密码相比,Hill密码的有点是完全隐藏了单字母频率特性。实际上,Hill用的矩阵越大,所隐藏的频率信息就越多。因此,一个3*3的Hill密码不仅隐藏了单字母的频率性,还隐藏了双字母的频率性。虽然Hill密码足以抗唯密码攻击,但是容易被已知明文攻击破解**。**
多表代替加密: 对简单单表代替的改进方法是在明文消息中采用不同的单表代替。这种方法一般称之为多表代替密码。所有这些方法都有以下的共同特征:1.采用相关的单表代替规则集。2.密钥决定给定变换的具体规则。
Vigenere密码: 假设明文序列为
密钥序列
其中典型的是m<n,密码序列
计算如下
密钥第一个字母模26加到明文的第一个字母,接着是第二个字母,以此类推,直到前m个明文处理完毕。对于第二组的m个明文,重复使用密钥字母。继续该过程,直到所有的明文序列被加密完。加密过程的一般方程式是
解密过程一般方程式
Vernam密码: 提供了一种与明文毫无统计关系,且与它一样长的密钥。其运算基于二进制而非字母。该体制可以简明地表述为
密文是通过对