密码学主要包括两个既对立又统一的分支:密码编码学(Cryptography)和密码分析学(Cryptanalysis)。研究密码编制的科学称为密码编码学,研究密码破译的科学称为密码分析学,密码编码学和密码分析学共同组成密码学(Cryptology)。
密码技术的基本思想是伪装信息,使未授权者不能理解它的真实含义。所谓伪装就是对数据进行一组可逆的数学变换。密码技术的一个基本功能是实现保密通信,经典的保密通信系统模型如图1-3所示。不过,仅用一个保密通信系统模型来完整描述密码系统,可能是并不全面和准确的,因为现在的密码系统不单单只提供信息的保密性服务,保密通信仅是密码技术的一个基本功能。
图1-3 保密通信系统模型
图1-3所示的保密通信系统有三方参与者:发送者(密码编码者)、接收者以及攻击者。发送方要通过加密算法,并借助于加密密钥对明文加密,然后把得到的密文传送给接收方。接收方将收到的密文,用相应的解密算法,并借助于自己拥有的秘密解密密钥来对密文解密。攻击者截获的是密文消息,他要想方设法在不拥有解密密钥的情况下,从密文恢复出明文。
为了更好地理解保密通信系统模型,这里介绍几个常用的基本概念与符号。
●明文(Plaintext):待伪装或加密的消息(Message)。在通信系统中它可能是比特流,如文本、位图、数字化的语音流或数字化的视频图像等。明文常用m或p表示。
●密文(Ciphertext):对明文施加某种伪装或变换后的输出,也可认为是不可直接理解的字符或比特集。密文常用c表示。
●加密(Encrypt):将原始消息(明文)转换为密文消息的变换过程。
●解密(Decrypt):将已加密的消息(密文)恢复成明文的过程。
●加密算法(Encrypt Algorithm):对原始消息加密使其变成密文消息的算法。
●解密算法(Decrypt Algorithm):对密文消息解密使其变成明文消息的算法。
●密钥(Secret Key):加密/解密算法中的一个可变参数,通常是一组满足一定条件的随机序列。用于加密算法的密钥叫做加密密钥;用于解密算法的密钥叫做解密密钥。加密密钥和解密密钥可能相同,也可能不相同。密钥常用k表示。在密钥k的作用下,加密变换通常记为Ek(),解密变换通常记为Dk()。
因为数据以密文形式在网络中传输或存入计算机文件,而且只给合法接收者分配密钥。这样,即使密文被非法窃取,因为未授权者没有密钥而不能得到明文,因此也不能理解它的真实含义,从而达到确保数据秘密性的目的。同样,因为未授权者没有密钥也不能伪造出合理的明、密文,更改数据必然被发现,从而达到确保数据真实性的目的。与能够检测发现更改数据的道理相同,如果密文数据中发生了错误或毁坏也将能够检测发现,从而达到确保数据完整性的目的。
1.密码体制的定义
一个密码系统,通常简称为密码体制(Cryptosystem),由五元组{M,C,K,E,D}组成:
●明文空间M,它是全体明文m的集合。
●密文空间C,它是全体密文c的集合。
●密钥空间K,它是全体密钥k的集合。其中每一个密钥k均由加密密钥ke和解密密钥kd组成,即k=(ke,kd)。
●加密算法E,它是一族由M到C的加密变换。
●解密算法D,它是一族由C到M的解密变换。
对于明文空间M中的每一个明文m,加密算法E在加密密钥ke的控制下将明文m加密成密文c;而解密算法D则在解密密钥kd的控制下将密文c解密成同一明文m,即:
对m∈M,(ke,kd)∈K,有(www.xing528.com)
从数学的角度来讲,一个密码系统就是一族映射,它在密钥的控制下将明文空间中的每一个元素映射到密文空间上的某个元素。这族映射由密码方案确定,具体使用哪一个映射由密钥决定。
在图1-3所示的保密通信系统模型中,还存在一个密码攻击者或破译者可从普通信道上拦截到密文c,其工作目标就是要在不知道密钥k的情况下,试图从密文c恢复出明文m或密钥k。如果密码分析者可以仅由密文推出明文或密钥,或者可以由明文和密文推出密钥,那么就称该密码系统是可破译的。相反地,则称该密码系统不可破译。
2.密码体制的安全性
一个密码体制的安全性涉及以下两方面的因素。
(1)所使用的密码算法的保密强度
密码算法的保密强度取决于密码设计水平、破译技术等。密码系统所使用的密码算法的保密强度是该系统安全性的技术保证。
(2)密码算法之外的不安全因素
即使密码算法能够达到实际不可破译,攻击者也有可能通过其他非技术手段(例如用金钱收买密钥管理人员)攻破一个密码系统。这些不安全因素来自于管理或使用中的漏洞。
因此,密码算法的保密强度并不等价于密码系统整体的安全性。一个密码系统必须同时完善技术与管理要求,才能保证整个密码系统的安全。本书仅讨论影响一个密码体制安全性的技术因素,即密码算法本身。对于一个密码体制来说,若攻击者在得到密文的情况下对确定明文没有任何帮助,这种密码体制就是理论上不可破译的,或者称该密码体制具有完善保密性或无条件安全性。实际使用中,一个密码体制的安全性应该不依赖于对密码算法的保密(Kerckhoffs原则),而仅依赖于对密钥的保密。
Kerckhoffs原则:假定密码攻击者知道加密数据所使用的算法,数据的安全性应当取决于密钥的选择。这并不是说必须公开加密算法,而是因为加密算法在其出现时已经是公开的。
3.密码体制的分类
对密码体制的分类方法有多种,常用的分类方法有以下三种。
(1)根据加密/解密算法使用的密钥是否相同
根据加密算法与解密算法所使用的密钥是否相同,可将密码体制分为对称密码体制和非对称密码体制。
对称密码体制(Symmetric Cipher):也叫单钥或秘密密钥密码体制,在对称密码体制中,加密密钥和解密密钥是完全相同的或彼此之间容易互相推导。
非对称密码体制(Asymmetric Cipher):也称为双钥或公钥密码体制。在非对称密码体制中,加密密钥和解密密钥是不同的,从加密密钥难以推导出解密密钥,加密和解密变换分开实现。
(2)根据对明文信息的处理方式
根据密码算法对明文信息的处理方式,可将对称密码体制分为分组密码和流密码。
分组密码(Block Cipher):将明文消息进行分组,一次对一个输入分组数据块进行处理,产生一个等长的输出块。在用分组密码加密时,使用的分组大小是64 bit或128 bit。
流密码(Stream Cipher,也称为序列密码):连续地处理输入元素,并随着处理过程的进行,一次产生一个元素的输出,在用流密码加密时,一次加密1 bit或1 Byte。
(3)根据加密过程中是否使用随机数
按照在加密过程中是否使用除了密钥和明文外的随机数,可将密码体制区分为概率密码体制和确定性密码体制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。