Java加密与解密的艺术(第2版)
上QQ阅读APP看书,第一时间看更新

2.2 密码学定义、术语及其分类

历经四千多年的风风雨雨,密码学逐步发展成为一门学科,对于它的定义也越来越清晰,那么什么是密码学呢?

❑ 密码学:主要是研究保密通信和信息保密的学科,包括信息保密传输和信息加密存储等。密码学包含密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个分支。编码学与分析学相互促进,又相互制约。一方面,两者在加强密码分析的安全上相互促进;另一方面,两者在实施更为有效的攻击方面也相互影响。

❑ 密码编码学:主要研究如何对信息进行编码,如何实现对信息的隐蔽,是密码学理论的基础,也是保密系统设计的基础。

❑ 密码分析学:主要研究加密消息的破译或消息的伪造,是检验密码体制安全性最为直接的手段,只有通过实际密码分析考验的密码体制,才是真正可用的。

2.2.1 密码学常用术语

在简要了解了密码学的一些基本概念后,让我们来看一下密码学常用术语,如下所示:

❑ 明文(Plaintext):指待加密信息。明文可以是文本文件、图片文件、二进制数据等。

❑ 密文(Ciphertext):指经过加密后的明文。密文通常以文本、二进制数据等形式存在。

❑ 发送者(Sender):指发送消息的人。

❑ 接收者(Receiver):指接收消息的人。

❑ 加密(Encryption):指将明文转换为密文的过程。

❑ 加密算法(Encryption Algorithm):指将明文转换为密文的算法。

❑ 加密密钥(Encryption Key):指通过加密算法进行加密操作用的密钥。

❑ 解密(Decryption):指将密文转换成明文的过程。

❑ 解密算法(Decryption Algorithm):指将密文转换为明文的算法。

❑ 解密密钥(Decryption Key):指通过解密算法进行解密操作用的密钥。

❑ 密码分析(Cryptanalysis):指截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。

❑ 密码分析者(Cryptanalyst):等同于密码破译者,指从事密码分析的人。

❑ 被动攻击(Passive Attack):指对一个保密系统采取截获密文并对密文进行分析和攻击的行为。这种攻击对密文没有破坏作用。

❑ 主动攻击(Active Attack):指攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗的行为。这种攻击对密文具有破坏作用。

❑ 密码体制(Cipher System):由明文空间、密文空间、密钥空间、加密算法和解密算法五部分构成。

❑ 密码协议(Cryptographic Protocol):有时又称安全协议,是指以密码学为基础的消息交换的通信协议,其目的是在网络环境中提供各种安全服务。密码协议与密码算法同等重要,是当今密码学研究的两大课题。密码学是网络安全的基础,但网络安全不能单纯依靠安全的密码算法。密码协议是网络安全的一个重要组成部分,通过密码协议可以进行实体之间的认证、在实体之间安全地分配密钥或其他各种秘密、确认发送和接收的消息的不可否认性等。

❑ 密码系统(Cryptography):指用于加密和解密的系统。加密时,密码系统输入明文和加密密钥,进行加密变换后,输出密文;解密时,密码系统输入密文和解密密钥,进行解密变换后,输入明文。一个密码系统由信源、加密变换、解密变换、信宿和攻击者组成。密码系统强调密码方案的实际应用,通常应当是一个包含软、硬件的系统。

❑ 柯克霍夫原则(Kerckhoffs'Principle):又称柯克霍夫假说、公理或定律,是由奥古斯特·柯克霍夫(Auguste Kerckhoffs)在19世纪提出的密码理论,即数据的安全基于密钥而不是算法的保密。换句话说,系统的安全性取决于密钥,对密钥保密,对算法公开。信息论始祖克劳德·艾尔伍德·香农(Claude Elwood Shannon)将其改为“敌人了解系统”,这样的说法称为香农箴言。柯克霍夫原则是现代密码学设计的基本原则。

柯克霍夫原则:

❑ 即使非数学上不可破解,系统也应在实质(实用)程度上无法破解。

❑ 系统内不应含任何机密物,即使落入敌人手中也不会造成困扰。

❑ 密匙必须易于沟通和记忆,而无须写下,且双方可以很容易地改变密匙。

❑ 系统应可以用于电讯。

❑ 系统应可以携带,不应需要两个人或两个人以上才能使用(应只要一个人就能使用)。

❑ 系统应容易使用,不致让使用者的脑力过分操劳,也无须记得长串的规则。

2.2.2 密码学分类

密码学起源于古代,发展于现代。随着时间的推移,密码学不断完善,逐步拥有了众多分类。对密码学进行分类时,可以按时间划分,也可以按保密内容的算法划分,还可以按密码体制划分,下面详细介绍。

1.按时间划分

从时间上密码学可以分为古典密码学和现代密码学,古典密码学以字符为基本加密单元,2.4节中会有详细的阐述;现代密码以信息块为基本加密单元。

2.按保密内容的算法划分

根据保密内容的算法密码学可分为受限制算法密码学和基于密钥算法密码学。

❑ 受限制(Restricted)算法:算法的保密性基于保持算法的秘密。一般不赞成使用这种算法,除非应用于类似军事一类的应用,算法由专业机构开发、验证,确保其算法的安全性。这是古典密码学的主要特征。

❑ 基于密钥(Key-Based)算法:算法的保密性基于对密钥的保密。这其实是基于柯克霍夫原则设计的算法,这样做不但算法的公开有助于算法安全性的验证,算法的漏洞得以及时修正,还避免了算法的设计者在算法上留下后门。这正是现代密码学的主要特征。

3.按密码体制划分

根据密码体制密码学可分为对称密码体制密码学和非对称密码体制密码学。

❑ 对称密码体制(Symmetric Cryptosystem):又称单钥密码体制或私钥密码体制,将在2.5节详细阐述。该密码体制中的加密密钥与解密密钥相同,即加密过程与解密过程使用同一套密钥。

❑ 非对称密码体制(Asymmetric Cryptosystem):又称双钥密码体制或公钥密码体制。该密码体制中的加密密钥与解密密钥不同,密钥分为公钥与私钥。公钥对外公开,私钥对外保密。

与上述密码体制对应的算法有对称密码算法和非对称密码算法。

❑ 对称密码算法(Symmetric Cipher):又称单钥密码算法或私钥密码算法,指对应于对称密码体制的加密、解密算法。常见的DES、AES算法都是对称密码算法的典范。

❑ 非对称密码算法(Asymmetric Cipher):又称双钥密码算法或公钥密码算法,指对应于非对称密码体制的加密、解密算法。大名鼎鼎的RSA算法就是非对称密码算法,多应用于数字签名、身份认证等。当然,非对称密码算法相对于对称密码算法有着更高的安全性,但也有着不可回避的加密、解密耗时长的问题。

4.按明文的处理方法划分

根据明文的处理方法密码学可分为分组密码学和流密码学。

❑ 分组密码(Block Cipher):指加密时将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。分组密码多应用于网络加密。

❑ 流密码(Stream Cipher):又称序列密码,指加密时每次加密一位或一个字节的明文。手机平台对应用使用的系统资源有着极为苛刻的要求,这恰恰给了对系统资源要求极低的流密码以用武之地。RC4是相当有名的流密码算法。

在手工加密阶段和机械加密阶段,流密码曾是当时的主流。现代密码学的研究主要关注分组密码和流密码及其应用。在对称密码体制中,大部分加密算法属于分组密码。关于分组密码和流密码的详细内容,请阅读2.5节。