1.1 密码学相关概念 — lmn
0x01 密码学定义
密码学(Cryptograghy)是研究编制密码和破译密码的技术科学,是研究如何隐密地传递信息的学科。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。
在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
著名的密码学者** Ron Rivest 解释道:“密码学是关于如何在敌人存在的环境中通讯”**,自工程学的角度,这相当于密码学与纯数学的异同。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
现代密码学所涉及的学科包括:信息论、概率论、数论、计算复杂性理论、近世代数、离散数学、代数几何学和数字逻辑等。
0x02 密码发展史
根据国家密码管理局给出的全面文件指出古典密码在古代很多国都有所使用。
古代中国:从古到今,军队历来是使用密码最频繁的地方,因为保护己方秘密并洞悉敌方秘密是克敌制胜的重要条件。中国古代有着丰富的军事实践和发达的军事理论,其中不乏巧妙、规范和系统的保密通信和身份认证方法。
中国古代兵书《六韬》中的阴符和阴书:《六韬》又称《太公六韬》或《太公兵法》,据说是由西周的开国功臣太公望(又名吕尚或姜子牙,约公元前1128—公元前1015)所著。
书中以周文王和周武王与太公问答的形式阐述军事理论,其中《龙韬•阴符》篇和《龙韬•阴书》篇,讲述了君主如何在战争中与在外的将领进行保密通信。
以下是关于 “阴符” 使用方法对话的译文。
武王问太公说:领兵深入敌国境内,军队突然遇到紧急情况,战事或有利,或失利。我要与各军远近相通,内外相应,保持密切的联系,以便及时应对战场上军队的需求,应该怎么办呢?
太公回答说:国君与主将之间用阴符秘密联络。阴符共有八种:一种长一尺,表示大获全胜,摧毁敌人;一种长九寸,表示攻破敌军,杀敌主将;一种长八寸,表示守城的敌人已投降,我军已占领该城;一种长七寸,表示敌军已败退,远传捷报;一种长六寸,表示我军将誓死坚守城邑;一种长五寸,表示请拨运军粮,增派援军;一种长四寸,表示军队战败,主将阵亡;一种长三寸,表示战事失利,全军伤亡惨重。如奉命传递阴符的使者延误传递,则处死;如阴符的秘密被泄露,则无论无意泄密者或有意传告者也处死。只有国君和主将知道这八种阴符的秘密。这就是不会泄露朝廷与军队之间相互联系内容的秘密通信语言。敌人再聪明也不能识破它。
以下是关于“阴书”使用方法对话的译文。
武王问太公说:领兵深入敌国境内,君主和将帅各率一军,要使两支军队配合作战,实施变化无穷的作战方法,谋取敌人意想不到的胜利。但需要联络的事情很多,使用阴符难以说明,而两军之间又距离遥远,言语不能通达,应该怎么办呢?
太公回答说:如果有军机大事需要联络,应该用书信而不用符。君主通过书信向主将指示,主将则通过书信向君主请示。书信都要拆分成三部分,并分派三人发出,每人拿一部分。只有这三部分合在一起才能读懂信的内容。这就是所谓的阴书(机密信),敌人再聪明,也看不懂这种书信。
中国宋代兵书《武经总要》是北宋仁宗时期官修的一部兵书,成书于1040年—1044年,作者是天章阁待制曾公亮和工部侍郎丁度。
“符契”:是《六韬》中“阴符”方法的改进。
“契”:是主将派人向镇守各方的下属调兵的凭证。
“信牌”:是两军阵前交战时,派人传送紧急命令的信物和文件。
“字验”:则是秘密传送军情的一套方法。
中国古代密码艺术
中国民间密码
- 画图传情
- 会意诗
- 藏头诗
- 叠痕法
- 隔板加密法
中国古代军事密码
- 阴符
- 阴书
- 武经总要
- 反切码
中国近代密码
- 秘本型
- 加乱型
0x03 密码学分类
按照安全性递减的顺序
- 全部破解
- 全盘推导
- 实例推导
- 信息推导
根据密码分析者可获得的密码分析的信息量
- 唯密文攻击
- 已知明文攻击
- 选择明文攻击
- 选择密文攻击
- 选择文本攻击
根据攻击方式
- 穷举攻击
- 统计分析攻击
- 数学分析攻击
密码体质的攻击方法
- 穷举攻击
- 统计分析攻击
- 解密变换攻击
- 侧信道攻击
0x04 技术名词
- 密钥- k:分为加密密钥和解密密钥。
- 明文- M:没有进行加密,能够直接代表原文含义的信息。
- 密文- C:经过加密处理处理之后,隐藏原文含义的信息。
- 加密- C=E(k,M)或C=Ek(M):将明文转换成密文的实施过程。
- 解密- M=D(k,C)或M=Dk(C):将密文转换成明文的实施过程。
- 密码算法:密码系统采用的加密方法和解密方法,随着基于数学密码技术的发展,加密方法一般称为加密算法,解密方法一般称为解密算法。
0x05 信息安全的基本属性
- 机密性(Confidentiality):防止信息泄漏给未授权者
- 完整性(Integrity):防止信息被未经授权篡改
- 认证性(Authentication):保证信息来自正确的发送者
- 不可否认性(Non-repudiation):要求无论发送方还是接收方都不能抵赖所进行的传输
0x06 古典密码学
在计算机出现以前,密码学的算法主要是通过字符之间代替或易位实现的,古典密码学主要是指20世纪40年代之前的密码编码和密码分析技术,特别是1935年到1940年。
古典密码分类
- 置换密码:又称换位密码,加密过程中明文的字母保持相同,但是顺序被打乱。只要把位置恢复,就能得到明文。
- 代换密码:明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复明文。
代换密码就是明文中每一个字符被替换成密文中的另外一个字符,代替后的各字母保持原来位置。对密文进行逆替换就可恢复出明文。
四种类型的代替密码
- 单表代替密码:就是明文的一个字符用相应的一个密文字符代替。加密过程中是从明文字母表到密文字母表的一一映射。
- 同音代替密码:它与简单代替密码系统相似,唯一的不同是单个字符明文可以映射成密文的几个字符之一。
- 多字母组代替密码:字符块被成组加密。
- 多表代替密码:由多个简单的代替密码构成。
几种密码体制
Caesar密码
通过把字母移动一定的位数来实现加密和解密。例如,密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C。
Polybius密码
也称棋盘密码,是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,产生于公元前两世纪的希腊,相传是世界上最早的一种密码。
滚筒密码
猪圈密码
猪圈密码(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。
栅栏密码
把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。
0x07 现代密码学
密码学重要分类
根据密码体制划分
- 对称密码体制:加密与解密密钥相同。
- 非对称密码体制:加密密钥和解密密钥不同,密钥分为公钥与私钥,公钥对外公开,私钥对外保密。
DES算法
DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。
混淆是使密文的统计特性与密钥的取值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。
扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。
3DES算法
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。
AES
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
RC4
在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一。
根据明文的处理方法划分
- 分组密码:用同一密钥算法对每一块加密,输出的也是固定长度的密文,多用于网络加密。
- 流密码:又称序列密码,加密时每次加密一位或一个字节的明文。
密码体制从原理上划分
- 单钥体制:发送方和接收方使用同一个密钥去加密和解密数据,加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
- 双钥体制:所谓的双密钥体制就是使用不同的加密密钥和解密密钥,同时由已知的加密密钥推倒出解密密钥在计算上是不可行的。
请登录后查看回复内容