对称加密
对称加密也称为常规加密、私钥或单钥加密,在公钥加密开发之前,是唯一被使用的加密类型。
对称加密原理
一个对称加密方案由5部分组成:
- 明文:原始消息或数据,作为算法的输入。
- 加密算法:加密算法对明文进行各种替换和转换。
- 秘密密钥:密码密钥也是算法的输入。算法进行的具体替换和转换取决于这个密钥。
- 密文:这是产生的已被打乱的消息传输。它取决于明文和秘密密钥。对于一个给定的消息,两个不同的密钥会产生两个不同的密文。
- 解密算法:本质上是加密算法的反向执行。它使用密文和同一密钥产生原始明文。
对称加密的安全使用有如下两个要求:
- 强加密算法:当攻击者拥有很多密文以及每个密文对应的明文时,他依然不能够破译密文或者解出密钥。
- 安全的密钥获取方式:发送者和接收者必须通过一个安全的方式获得密钥并且保证密钥安全。
公认:对称加密的安全取决于密钥的保密性而非算法的保密性,即通常认为在已知密文和加密/解密算法的基础上不能够破译消息。即不需要使算法保密,只需保证密钥保密。
公钥密码
公钥密码原理
关于公钥密码的几种常见误解:
- 第一种:
- 误解:公钥密码比传统密码更抗密码分析。
- 正解:任何加密方案的安全性取决于:1) 密钥长度;2)攻破密码所需的计算量。从抗密码分析的角度来说,原则上不能说传统密码优于公钥密码,也不能说公钥密码优于传统密码。
- 第二种:
- 误解:认为公钥密码是一种通用技术,传统密码则过时了。
- 正解:公钥密码方案的计算(CPU)开销太大,传统密码被淘汰似乎不太可能。
- 第三种:
- 误解:传统密码中与密钥分配中心的会话是很麻烦的事情,而用公钥密码实现的密钥分配非常简单。
- 正解:公钥密码也需要某种形式的协议,该协议包含一个中心代理。所以与传统密码相比,公钥所需的操作并不简单或者高效。
公钥密码方案由6个部分组成:
- 明文:算法的输入,它是可读的消息或数据。
- 加密算法:加密算法对明文进行各种形式的变换。
- 公钥和私钥:算法的输入,一个用于加密,一个用于解密。
- 密文:算法的输出,取决于明文和密钥。对于给定的消息,不同的密钥将产生不同的密文。
- 解密算法:该算法接收密文和匹配的密钥,生成原始的明文。
传统密码算法中使用的密钥被特别地称为密钥。用于公钥密码的两个密钥被称为公钥和私钥。私钥总是保密的,但仍然被称为私钥而不是密钥,这是为了避免与传统密码混淆。
公钥密码系统的应用
公钥密码系统
- 加密/解密:发送者使用接收者的公钥加密消息。接收者用私钥解密消息。
- 数字签名:发送者使用私钥"签名"消息。接收者使用发送者的公钥解密"签名",从而可以核对消息是否遭篡改。
- 密钥交换:通信双方交换公钥密码系统会话密钥。
数字签名
- 假设,Bob想给Alice发送消息,且消息的保密性并不重要,但消息确实来自Bob非常重要。
- 那么,Bob可以使用私钥对消息进行加密,Bob将明文和密文一并发送给Alice,Alice使用Bob的公钥对密文进行解密,Alice将解密后的明文和实际明文进行比对,便可确保消息是来自Bob。
- 因为,没有其他人拥有Bob的私钥,所以其他任何人都不能创建由Bob的公钥能够解密的密文。因此,整个加密的消息就称为一个数字签名(digital signature)。
- 此外,由于没有Bob的私钥就不可能篡改消息,所以数字签名不仅认证了消息源,还保证了数据的完整性。
密钥分配
对称加密的密钥分配
对于对称加密,加密双方必须共享同一密钥,而且必须保护密钥不被他人读取。此外,尝尝需要频繁地改变密钥来减少某个攻击者可能知道密钥带来的数据泄露。因此,任何密码系统的强度取决于密钥分发技术。
对于通信双方A和B,密钥分发技术有下列选择:
- A能够选定密钥并通过物理方法传递给B。(DTLS握手)
- 第三方可以选定密钥并通过物理方法传递给A和B。
- 如果A和B不久之前使用过一个密钥,一方能够把使用旧密钥加密的新密钥传递给另一方。
- 如果A和B各自有一个到达第三方C的加密链路,C能够在加密链路上传递密钥给A和B。(密钥分发中心:省去握手的RTT,加快流媒体首帧)
第四种选择,需要用到两种类型和密钥:
- 会话密钥:A和B通信的一个一次性的会话密钥。
- 永久密钥:A和C、B和C之间的永久密钥,用于分发会话密钥。(可以使用公钥建立分发会话密钥的安全传输信道)
第四种选择,需要一个密钥分发中心(Key Distribution Center, KDC)。密钥分发中心决定哪些系统之间允许互相通信。当两个系统被允许建立连接时,密钥分发中心就为这条连接提供一个一次性会话密钥。
KDC的操作过程如下:
- 当一个主机A期望与另外一个主机建立连接时,它传递一个连接请求给 KDC。主机 A 和 KDC 之间的通信使用一个只有此主机 A 和 KDC 共享的主密钥 (master key)加密。
- 如果KDC同意建立连接请求,则它产生一个唯一的一次性会话密钥。它用主机A与之共享的永久密钥加密这个会话密钥,并把加密后的结果发送给主机A。类似地,它用主机B与之共享地永久密钥加密这个会话密钥,并把加密后地结果发送给主机B。
- A和B现在可以建立一个逻辑连接并交换消息和数据,其中所有的消息或数据都使用临时性会话密钥加密。
非对称加密的密钥分配
公钥的分发
公钥证书被用于公钥的分发。公钥证书主要包含:
- 公钥
- 公钥所有者的用户ID
- 可信的第三方签名的整个数据块。
第三方就是用户团体所信任的认证中心(CA),如政府机构或金融机构。用户可通过安全渠道把自己的公钥提交给这个CA,获取证书。然后用户就可以发布这个证书。任何需要该用户公钥的人都可以获取这个证书,并且可以通过所附的签名验证该证书的有效性(见数字签名小节)。
基于公钥密码的密钥(对称加密的密钥)分发
当Bob想要与Alice通信时,可以按下面的步骤获取对称加密的密钥:
- 准备对称加密的密钥。
- 利用 Alice 的公钥,使用公钥加密的方法加密会话密钥(对称加密的密钥)。
- 把加密的会话密钥发送给 Alice 。
- Alice 使用私钥解密得到会话密钥。
- Alice 使用会话密钥和 Bob 通信。
公钥证书的标准——X.509
主要包含以下内容:
- 版本号
- 序列号
- 签名算法标识符(用于识别CA签写证书时所用的算法)
- 签发人姓名
- 有效期
- 主体名
- 主体公钥信息(公钥及公钥算法)
网友评论