加密算法

返回目录

HTTPS 在传输的过程中使用到了 RSA 与 AES 加密算法。

密码学原理

数据在传输过程中,很容易被窃听。加密就是保护数据安全的措施。一般是利用技术手段把数据变成乱码(加密)传送,到达目的地后,再利用对应的技术手段还原数据(解密)。加密包含算法和密钥两个元素。算法将要加密的数据与密钥(一串数字)相结合,产生不可理解的密文。由此可见,密钥与算法同样重要。对数据加密技术可以分为两类:对称加密(对称密钥加密)和非对称加密(非对称密钥加密)。 SSL 采用了 非对称加密(Public-key cryptography )的加密处理方式。现在的加密方法中,加密算法都是公开的,网上都有各种算法原理解析的内容。加密算法虽然是公开的,算法用到的密钥却是保密的,以此来保持加密方法的安全性。加密和解密都会用到密钥。有了密钥就可以解密了,如果密钥被攻击者获得,加密也就没有意义了。

对称加密 / 非公开密钥加密

对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。此外,对于多个有数据交换需求的个体,两两之间需要分配并维护一把密钥,这个带来的成本基本是不可接受的。

非对称加密 / 公开密钥加密

非对称加密方式能很好地解决对称加密的困难。非对称加密方式有两把密钥。一把叫做私有密钥(private key ),另一把叫做非对称(public key )。私有密钥是一方保管,而非对称则谁都可以获得。这种方式是需要发送密文的一方先获得对方的非对称,使用已知的算法进行加密处理。对方收到被加密的信息后,再使用自己的私有密钥进行解密。这种加密方式有意思是的加密算法的神奇,经过这个公开的算法加密后的密文,即使知道非对称,也是无法对密文还原的。要想对密文进行解决,必须要有私钥才行。所以非对称加密是非常安全的,即使窃听到密文和非对称,却还是无法进行解密。

非对称加密算法用的一般是 RSA 算法(这可能是目前最重要的算法了)。这个算法由 3 个小伙子在 1977 年提出,它的主要原理是:将两个大素数相乘很简单,但想要这个乘积进行因式分解极其困难,因此可以将乘积公开作为非对称。不过随着目前的分布式计算和量子计算机的快速发展,说不定在将来也许能破解这个算法了。

证书

在测试的时候我们可以自己创建配置一个证书用于 HTTPS 认证,不过如果你要提供服务给普通用户使用,那么还是需要从可信的第三方 CA 机构来获取可信的证 书。对于很多开发者而言,一个免费的 CA 证书是个不错的选择。当你搜索 CA 的时候,你可能会遇到几个不同等级的证书。最常见的就是 Domain Validation(DV),用于认证一个域名的所有者。再往上就是所谓的 Organization Validation(OV) 与 Extended Validation(EV),包括了验证这些证书的请求机构的信息。虽然高级别的证书需要额外的消耗,不过还是很值得的。

证书格式

证书大概是这个样子:

( 1)证书版本号 (Version) 版本号指明 X.509 证书的格式版本,现在的值可以为 : 1) 0: v1 2) 1: v2 3) 2: v3 也为将来的版本进行了预定义

(2 )证书序列号 (Serial Number) 序列号指定由 CA 分配给证书的唯一的 " 数字型标识符 "。当证书被取消时,实际上是将此证书的序列号放入由 CA 签发的 CRL 中,这也是序列号唯一的原因。

( 3)签名算法标识符 (Signature Algorithm) 签名算法标识用来指定由 CA 签发证书时所使用的 " 签名算法 "。算法标识符用来指定 CA 签发证书时所使用的 : 1) 公开密钥算法 2) hash 算法 example: sha256WithRSAEncryption 须向国际知名标准组织 ( 如 ISO) 注册

(4 )签发机构名 (Issuer) 此域用来标识签发证书的 CA 的 X.500 DN(DN-Distinguished Name) 名字。包括 : 1) 国家 (C) 2) 省市 (ST) 3) 地区 (L) 4) 组织机构 (O) 5) 单位部门 (OU) 6) 通用名 (CN) 7) 邮箱地址

(5 )有效期 (Validity) 指定证书的有效期,包括 : 1) 证书开始生效的日期时间 2) 证书失效的日期和时间每次使用证书时,需要检查证书是否在有效期内。

( 6)证书用户名 (Subject) 指定证书持有者的 X.500 唯一名字。包括 : 1) 国家 (C) 2) 省市 (ST) 3) 地区 (L) 4) 组织机构 (O) 5) 单位部门 (OU) 6) 通用名 (CN) 7) 邮箱地址

(7 )证书持有者公开密钥信息 (Subject Public Key Info) 证书持有者公开密钥信息域包含两个重要信息 : 1) 证书持有者的公开密钥的值 2) 公开密钥使用的算法标识符。此标识符包含公开密钥算法和 hash 算法。

( 8)扩展项 (extension) X.509 V3 证书是在 v2 的基础上一标准形式或普通形式增加了扩展项,以使证书能够附带额外信息。标准扩展是指由 X.509 V3 版本定义的对 V2 版本增加的具有广泛应用前景的扩展项,任何人都可以向一些权威机构,如 ISO,来注册一些其他扩展,如果这些扩展项应用广泛,也许以后会成为标准扩展项。

( 9)签发者唯一标识符 (Issuer Unique Identifier) 签发者唯一标识符在第 2 版加入证书定义中。此域用在当同一个 X.500 名字用于多个认证机构时,用一比特字符串来唯一标识签发者的 X.500 名字。可选。

( 10)证书持有者唯一标识符 (Subject Unique Identifier) 持有证书者唯一标识符在第 2 版的标准中加入 X.509 证书定义。此域用在当同一个 X.500 名字用于多个证书持有者时,用一比特字符串来唯一标识证书持有者的 X.500 名字。可选。

( 11)签名算法 (Signature Algorithm) 证书签发机构对证书上述内容的签名算法 example: sha256WithRSAEncryption

(12 )签名值 (Issuer's Signature) 证书签发机构对证书上述内容的签名值

CA: 第三方可信证书颁发机构

其实,非对称加密方式还存在一个很大的问题:它无法证明非对称本身是真实的非对称。比如,打算跟银行的服务器建立非对称加密方式的通信时,怎么证明收到的非对称就是该服务器的密钥呢?毕竟,要调包非对称是极为简单的。这时,数字证书认证机构(CA , Certificated Authority)就出场了。数字证书认证机构是具有权威性、公正性的机构。它的业务流程是:首先,服务器的开发者向数字证书认证机构提出非对称(服务器非对称)的申请。数字证书认证机构在核实申请者的身份之后,会用自己的非对称(数字签名非对称)对申请的非对称做数字签名,再将 服务器非对称、数字签名以及申请者身份等信息放入公钥证书。服务器则将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行非对称加密方式通信。公钥证书也可做数字证书或简称为为证书。证书就相当于是服务器的身份证。客户端接到证书后,使用 数字签名非对称 对数字签名进行验证,当验证通过时,也就证明了:1 、真实有效的数字证书认证机构。2 、真实有效的服务器非对称。然后就可能与服务器安全通信了。其实这里还是有一个问题的。那就是如何将 数字签名非对称 安全地转给客户端?难道再去另一个认证机制那确认(现在是真有的)?无疑,安全转交是一件困难的事。因此,常用的认证机关的非对称会被很多浏览器内置在里面。

下面我们就来详细的叙述一下证书签名,证书分发以及证书验证的整个过程。

1、服务端人员使用 RSA 算法生成两个密钥,一个用来加密一个用来解密。将负责加密的那个密钥公布出去,所以我们称之为公钥(Public Key),而用来解密的那个密钥,不能对外公布,只有服务端持有,所以我们称之为私钥(Private Key)。服务端在将 Public Key 进行分发证书之前需要向 CA 机构申请给将要分发的公钥进行数字签名。(服务器公钥负责加密,服务器私钥负责解密) 2、生成数字签名公钥证书:对于 CA 机构来说,其也有两个密钥,我们暂且称之为 CA 私钥和 CA 公钥。CA 机构将服务端的 Public Key 作为输入参数将其转换为一个特有的 Hash 值。然后使用 CA 私钥将这个 Hash 值进行加密处理,并与服务端的 Public Key 绑定在一起,生成数字签名证书。其实数字签名证书的本质就是服务端的公钥+CA 私钥加密的 Hash 值。(CA 私钥负责签名,CA 公钥负责验证) 3、服务器获取到这个已经含有数字签名并带有公钥的证书,将该证书发送给客户端。当客户端收到该公钥数字证书后,会验证其有效性。大部分客户端都会预装 CA 机构的公钥,也就是 CA 公钥。客户端使用 CA 公钥对数字证书上的签名进行验证,这个验证的过程就是使用 CA 公钥对 CA 私钥加密的内容进行解密,将解密后的内容与服务端的 Public Key 所生成的 Hash 值进行匹配,如果匹配成功,则说明该证书就是相应的服务端发过来的。否则就是非法证书。 4、验证完服务端公钥的合法性后,就可以使用该公钥进行加密通信了。

Extended Validation SSL Certificate

证书作用这一是证明服务器是否规范,另一个作用是可以确认服务器背后的企业是否真实。具有这种特性的证书就是 EV SSL (Extended Validation SSL Certificate )证书。EV SSL 证书是基于国际标准的严格身份验证颁发的证书。通过认证的网站能获得更高的认可度。 EV SSL 证书在视觉上最大的特色在于激活浏览器的地址栏的背景色是绿色。而且在地址栏中显示了 SSL 证书中记录的组织名称。这个机制原本是为了防止用户被钓鱼攻击的,但效果如何还真不知道,目前来看,很多用户根本不清楚这是啥玩意儿。 EV SSL

混合加密

非对称加密很安全,但与对称加密相比,由于非对称加密的算法复杂性,导致它的加密和解密处理速度都比对称加密慢很多,效率很低。所以可以充分利用它们各自的优势,结合起来。先用非对称加密,交换对称加密会用的密钥,之后的通信交换则使用对称方式。这就是混合加密。

  1. 使用非对称加密方式安全地交换在稍后的对称加密中要使用的密钥 2)确保交换的密钥是安全的前提下,使用对称加密方式进行通信而下面所讲的具体的 SSL 协议的过程就是混合加密的一种体现。