密码学基础介绍

密码学(Cryptology):研究信息系统安全保密的科学。
密码学包含两个分支:
密码编码学(Cryptography),对信息进行编码实 现隐蔽信息的一门学问,也称编码学
密码分析学(Cryptanalysis),研究分析破译密 码的学问。也成破译学。
两者的矛盾是密码学发展的内在动力
外在动力:现实生活对信息安全的需求

几个基本概念:

明文(消息)(Plaintext) :被隐蔽消息。
密文(Ciphertext):明文经密码变换成的一种隐蔽 形式。
加密(Encryption):将明文变换为密文的过程。
解密(Decryption):加密的逆过程,即由密文恢复出 原明文的过程。
加密员或密码员(Cryptographer):对明文进行加密 操作的人员。
加密算法(Encryption algorithm):密码员对明文进行 加密时所采用的一组规则。
接收者(Receiver):传送消息的预定对象。
解密算法:接收者对密文进行解密时所采用的一组规则

密钥(Key):控制加密和解密算法操作的数据处理,分别 称作加密密钥和解密密钥。
截收者(Eavesdropper):在信息传输和处理系统中的非 受权者,通过搭线窃听、电磁窃听、声音窃听等来窃取机密信息。
密码分析(Cryptanalysis):截收者试图通过分析从 截获的密文推断出原来的明文或密钥。
密码分析员(Cryptanalyst):从事密码分析的人。
被动攻击(Passive attack):对一个保密系统采取截 获密文进行分析的攻击。
主动攻击(Active attack):非法入侵者(Tamper)、 攻击者(Attcker)或黑客(Hacker)主动向系统窜扰,采用 删除、增添、重放、伪造等窜改手段向系统注入假消息 ,达到利已害人的目的。

常规保密通信模型:


其中加密变换为Y=Ek(X),解密变换为X=Dk(Y)。 通信双方通过秘密信道获得密钥k。
攻击者知道Y(通常也了解E和D),但不知道k和X。
攻击者的目的: 试图恢复X或(和)k。


保密系统应当满足的要求:

实际上不可破的:从截获的密文或某些已知明文密 文对,要决定密钥或任意明文在计算上是不可行 的。
系统的保密性不依赖于对加密体制或算法的保密, 而依赖于密钥。这是著名的Kerckh off原则。
加密和解密算法适用于所有密钥空间中的元素。
系统便于实现和使用。

密码体制分类:

密码体制有2大类:
单钥体制(One-key system):
加密密钥和解密密钥相同。
双钥体制(Two key system): 加密密钥和解密密钥不同。

单钥体制:
单钥体制主要研究问题: 密钥产生(Key generation), 密钥管理(Key management)。
分类:
流密码(Stream cipher) 分组密码(Block cipher)

注:
1.单钥体制不仅可用于数据加密,也可用 于消息的认证。

2.我们经常听说的AES加密算法,就属于单钥体制下的分组密码(Block cipher)的一种。在已经公布的研究成果当中,流密码的文献很少,分组密码的文献成果相对多一些。主要是因为流密码的相关成果绝大多数只用于军方,很多成果并不公开。所以民用的很多加密算法均属于分组密码。

下面简单介绍一下流密码:

流密码的基本思想是利用密钥k产生一个密钥流z=z0z1…,并使用如下规则对明文串x=x0x1x2…加密: y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…。密钥流由密钥流发生器f产生: zi=f(k,σi),这里σi是加密器中的记忆元件(存储器)在时刻i的状态,f是由密钥k和σi产生的函数。
流密码分为两种:同步流密码和自同步流密码。其中,σi独立于明文字符的叫做同步流密码,否则叫做自同步流密码。由于自同步流密码产生的密钥流与明文有关,因而较难从理论上进行分析。目前大多数成果都是关于同步流密码的。

同步流密码的关键是密钥流产生器。目前的密钥流产生器采用的方式是线性的驱动部分控制生成器的状态转移,并为非线性组合部分提供统计性能好的序列;而非线性组合部分要利用这些序列组合出满足要求的密钥流序列。

注:

为什么同步流密码采用的是线性和非线性的组合方式呢?

因为线性有一个缺点,那就是统计特性。如果完全采用线性,密码分析者可以根据统计特性推断出明文。而非线性没有统计特性,按理说全部采用非线性应该是最好的。但迄今为止,对非线性的概念、非线性的性质,并没有清晰的、完整的认识,对其哲学意义也没有充分地开掘。人类对非线性科学的研究并不够,而非线性的运动研究,有一个现象是我们常听说的“混沌现象”,对于混沌,我们基本上可以说并没有一个确切的认识。(未来的有一天,一定有一门课程叫做“混沌密码学”,混沌密码学的方式绝对比现在加密方式要安全得多)。所以,结合这两种情况,同步流密码的密钥生成器,采用的是非线性和线性结合的方式。

至于分组密码,需要说的可能比较多,会在下次分享的时候单独开篇详细介绍。

再来说一下关于双钥体制:

双钥密码算法,又称公钥密码算法:是指加密密钥和解密密钥为两个不同密钥的密码算法。公钥密码算法不同于单钥密码算法,它使用了一对密钥:一个用于加密信息,另一个则用于解密信息,通信双方无需事先交换密钥就可进行保密通信。其中加密密钥不同于解密密钥,加密密钥公之于众,谁都可以用;解密密钥只有解密人自己知道。这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。若以公钥作为加密密钥,以用户专用密钥(私钥)作为解密密钥,则可实现多个用户加密的信息只能由一个用户解读;反之,以用户私钥作为加密密钥而以公钥作为解密密钥,则可实现由一个用户加密的信息而多个用户解读。前者可用于数字加密,后者可用于数字签名。

注:

1.双钥密码体制又称非对称密钥加密。

2.双钥体制中,有一个很著名的算法:RSA公钥加密算法。就是我们常用的用于数字签名的算法。


最后,分享一下保密系统的设计原则:

1.系统即使达不到理论上不可破的,也应为实际上不可破的。就是说,从截获的密文或某些明文密文对,想要确定密钥或任意明文,在理论上是不可行的。

2.系统的保密性不依赖于对加密体制或者算法的保密,而依赖于密钥。这是著名的Kerckhoff原则。

3.加密和解密算法适用于密钥空间的所有元素。

4.系统便于实现和使用。


注:

实际上不可破的,可以理解为,破译密码所用的时间,超过了信息需要保密的时限。也可以理解为,如果正版软件密码系统设计的破译或破解成本比重新开发一款这样的软件还要高,也可以成为实际上不可破译的。这是我自己的理解~



你可能感兴趣的:(密码学基础介绍)