机密性
为防止安全威胁,在计算机网络中需要提供许多基本的安全服务,其中最基本的一项服务就是机密性。
机密性(Confidentiality):确保计算机系统中的信息或网络中传输的信息不会泄露给非授权用户。
机密性与密码学
我们通过计算机传输数据时,如果无法防止他人窃听,可以利用密码学技术将发送的数据转换成任何不知道如何做逆变换的人都不可理解的形式,从而保证数据的机密性。
这种变换称为加密(Encryption),加密后的数据称为密文(Ciphertext),而加密前的数据称为明文(Plaintext),接收方通过某种逆变换将密文重新变换回原来的明文称为解密(Decryption)。
密码学家发现,加密和解密的过程可以用一个密钥(Key) 作为参数,并且加密和解密的过程可以公开,只有密钥需要保密。即只有知道密钥的人才能解密密文,而任何人,即使知道加密和解密算法也无法解密密文。
采用这种方式的原因是,如果你依靠密码算法保密,一旦密码算法泄露就必须放弃该算法。这意味着要频繁的修改密码算法,而开发一个密码算法的难度是很大的。另外,密钥空间很大,用密钥将密码算法参数化,同一个算法可以为大量用户提供加密服务。
加密与解密过程
待加密的明文X用加密算法E和加密密钥KA得到密文Y。
利用解密算法D和解密密钥KB可解出明文X。
这里的加密密钥和解密密钥可以相同,也可以不同,取决于采用的是对称密钥密码体制还是公开密钥密码体制。
对称密钥密码体制
数据加密和解密用的是同一个密钥。在通信前,双方都需要知道这个密钥,因此如何传送密钥也是一个很关键的问题,如果通过网络传送,很可能会被截获。并且密钥一旦泄露,加密数据将受到威胁,因此必须以绝对安全的方式传送密钥才能保证安全。
密钥的传输方法可以通过非常可靠的信使携带密钥分发给互相通信的各用户。这种方法称为网外分发。但随着用户的增多和通信量的增大,密钥更换频繁(密钥必须定期更换才能保证安全可靠),派信使的问题将不再适用。
因此常用的对称密钥分发方式是设立密钥分发中心(KDC),KDC是一个大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分发一个会话密钥。
假设A需要把一份明文M发送给B。通信双方已经有了密钥KA。
A通过密钥KA对明文M使用加密算法E得到密文Y
B也用密钥KA通过解密算法D对密文Y进行解密得到明文M
主要的加密算法有:
- DES
- 3DES
公开密钥密码体制(非对称密钥密码体制)
使用不同的密钥对数据进行加密和解密。每个通信方都有一对密钥,一个公钥,可以公布出来,一个私钥,需要保密。其他想要给该方发送数据,都可以用公钥进行加密,然后发送。
公钥只能用于加密,无法用于解密,因此公钥可以公开出来。所有的解密都依赖于接收方自己的私钥,只要保护好这个私钥,即使别人知道你的公钥并获取了你的密文也无法对密文解密。
在这里,自己的私钥自己知道就行,别人无需知道,因此可以避免传输泄露的问题。
公钥算法有以下特性:
- 发送方用公钥PK对明文加密后,接收方用私钥SK解密即可得到明文。即
此外加密和解密运算可以对调,即
- 加密不可用于解密,即
- 在计算机上可以容易地产生成对的PK和SK。
- 从已知的公钥在计算上不可能推导出私钥,即从PK到SK是“计算上不可能的”。
- 加密算法和解密算法公开。
Q&A
Q1: 如何保证这个公布的公钥不是伪造的?
A1: 通过一个可信的中介机构。对于公开密钥密码体制,认证中心(Certification Authority,CA) 来实现公钥的签发和认证。。
主要的加密算法: