密码学复习笔记1【基本概念与传统密码技术】
0x01、密码学基本概念
通常一个密码体制可以有如下几个部分:
- 消息空间M(又称明文空间):所有可能明文m的集合;
- 密文空间C:所有可能密文c的集合;
- **空间K:所有可能**k的集合,其中每一**k由加***ke和解***kd组成,即k=(ke,kd);
- 加密算法E:一簇由加***控制的、从M到C的加密变换;
- 解密算法D: 一簇由解***控制的、从C到M的解密变换。
五元组{ M,C,K,E,D }就称为一个密码系统。
从数学的角度来讲,一个密码系统就是一组映射,它在**的控制下将明文空间中的某一个元素映射到密文空间上的某个元素。这组映射由密码方案确定,具体使用哪一个映射由**决定。
柯克霍夫斯(Kerckhoffs)原则
1、即使密码系统中的算法为密码分析者所知,也难以从截获的密文推导出明文或**。
2、也就是说,密码体制的安全性仅应依赖于对**的保密,而不应依赖于对算法的保密。
3、只有在假设攻击者对密码算法有充分的研究,并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。
一句话: “一切秘密寓于**之中”
密码体制的分类
对密码体制的分类方法有多种,常用的分类方法有以下三种。
1、根据密码算法所用的**数量
对称密码体制(Symmetric cipher,也称为单钥密码体制、对称**密码体制或常规密码体制)。如果一个密码系统,它的加***和解***相同,或者虽然不相同,但由其中的任意—个可以很容易地导出另外一个,那么该系统所采用的就是对称密码体制。
非对称密码体制(Asymmetric cipher,也称为公开**密码体制、非对称**密码体制)。如果一个密码系统,其加密算法和解密算法分别用两个不同的**实现,并且由加***不能推导出解***,则该系统所采用的就是非对称密码体制。
采用非对称**密码体制的每个用户都有一对选定的**。其中一个是可以公开的,称为公开**(Public key),简称公钥;另一个由用户自己秘密保存,称为私有**(Private key),简称私钥。对称密码体制的主要优势是:
加密、解密运算的处理速度块,效率高,算法安全性高。
对称密码体制存在的局限性或不足:
(1)对称密码算法的**分发过程复杂,所花代价高;
(2)**管理困难;
(3)保密通信系统的开放性差;
(4)存在数字签名的困难性。非对称密码体制的主要优势是:
(1)**分配简单。
(2)系统**量少,便于管理。
(3)系统开放性好。
(4)可以实现数字签名。
非对称密码体制存在的局限性是加密、解密运算效率较低,处理速度较慢,同等安全强度下,非对称密码体制的**位数较多。
2、根据对明文信息的处理方式
根据密码算法对明文信息的处理方式,可将对称密码体制分为:
分组密码(Block cipher)
序列密码(Stream cipher,也称为流密码)。分组密码是将消息进行分组,一次处理一个数据块(分组)元素的输入,对每个输入块产生一个输出块。在用分组密码加密时,一个明文分组被当做一个整体来产生一个等长的密文分组输出。分组密码通常使用的分组大小是64比特或128比特。
序列密码则是连续地处理输入元素,并随着处理过程的进行,一次产生一个元素的输出,在用序列密码加密时,一次加密一个比特或一个字节。
3、根据是否能进行可逆的加密变换
根据密码算法是否能进行可逆的加密变换,可以将密码体制分为:
单向函数密码体制
双向变换密码体制单向函数密码体制是一类特殊的密码体制,其性质是可以很容易地把明文转换成密文,但再把密文转换成正确的明文却是不可行的,有时甚至是不可能的。
单向函数只适用于某种特殊的、不需要解密的应用场合,如用户口令的存储和信息的完整性保护与鉴别等。
双向变换密码体制是指能够进行可逆的加密、解密变换,绝大多数加密算法都属于这一类,它要求所使用的密码算法能够进行可逆的双向加解密变换,否则接收者就无法把密文还原成明文。
传统密码
替代密码 (代换密码)(Substitution)
- 替代是古典密码中用到的最基本的处理技巧之一 ;
- 代换:将明文字母替换为其他字母,数字或符号。如果把明文看成是二进制的序列的话,那么代换就是用密文位串来替代明文位串。
1、单表替代密码
加密变换过程就是将明文中的每一个字母替换为密文字母表的一个字母。
明文空间M 和密文空间C 都是26个英文字母的集合,**空间
K={π:Z26→Z26|π是置换},是所有可能置换的集合。
对任意π∈K,定义:
加密变换:eπ(m)=π(m)=c
解密变换:dπ(c) = π-1(c)=m, π-1是π的逆置换。
例题:一般单表替代密码算法特点:
- **空间K很大,|K|=26!=4×1026 ,破译者穷举搜索计算不可行,1微秒试一个**,遍历全部**需要1013 年。
- 移位密码体制是替换密码体制的一个特例,它仅含26个置换做为**空间。
**π不便记忆。针对一般替换密码**π不便记忆的问题,又衍生出了各种形式单表替代密码。
1.1、移位密码
简单的来说,其实就是将字母表编号成1-26,然后如果移位1,则1号位改为z,2号位改为a,其他等同移动
当移位密码的 **k=3时,就是历史上著名的凯撒密码(Caesar)。根据其加密函数特 点,移位密码也称为加法密码。1.1、仿射密码
加密函数的形式为:
K={(k1,k2)| k1,k2∈Z26,gcd(k1,26)=1}
例题如下:
设明文消息为china,**k=(k1,k1)=(9,2)试用仿射密码对其进行加密,然后再进行解密。1.3、**短语密码
选用一个英文短语或单词串作为**,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中的其它字母依次写于此字母串后,就可构造出一个字母替代表。
下图演示密码为keyeyk时的情况:
2、多表替代密码
从对密码的角度来分析,多表代替密码的产生原因如下:
- 单表替代密码表现出明文中单字母出现的频率分布与密文中相同
- 多表替代密码使用从明文字母到密文字母的多个映射来隐藏单字母出现的频率分布,每个映射是简单替代密码中的一对一映射,多表替代密码将明文字母划分为长度相同的消息单元,称为明文分组,对明文成组地进行替代,同一个字母有不同的密文,改变了单表替代密码中密文的唯一性。
2.1、维吉尼亚密码
维吉尼亚密码与位移密码体制相似,但维吉尼亚密码的**是动态周期变化的。
例题如下:2.2、置换密码
- 置换密码又称为换位密码;
- 置换密码通过改变明文消息各元素的相对位置,但明文消息元素本身的取值或内容形式不变;
- 在前面的替代密码中,则可以认为是保持明文的符号顺序,但是将它们用其它符号来替代;
- 置换密码是把明文中各字符的位置次序重新排列来得到密文的一种密码体制。
典型举例如下:
栅栏密码:
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。
至于会是几栏密码,就得靠自己尝试了
列置换密码
把消息一行一行的写出,然后按列读取,但把列的次序打乱,列的次序就是**,例子如下:
3、轮转机密码
复习时发现PPT和书上都没怎么详细说明,简要查了相关资料,这是一种很老的加密技术了,链接在这里,点此。有兴趣的自行了解~