SSL安全原理

公式密码体制

  RSA密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。 由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。 

  使用不同的加密密匙与解密密匙。这种密码体制的产生是因为对称密匙密码体制的分配和数字签名的需求。

  在公钥密码体制中,加密密钥PK(public key,即公钥)是公开的,而解密密钥SK(secret key,即私钥)是需要保密的。假设A向B使用公钥密码体制发送消息,主要过程如下:

  1. 密钥对产生器产生接受者B的一对密钥,加密密钥PKb和解密密钥SKb。B将PKb公开,发送者所用的加密密匙PBk就是接收着B的公匙,他向公众公开,而B所用的解密密匙SKb就是接受者B的私钥,对其他人都保密
  2. 发送者A用B的公钥 PBk通过E运算对明文X加密,得出密文Y发送给B:Y=Epkb(X);
  3. 用自己的私钥SKb通过D运算进行解密,恢复出明文:Dskb(Y)=Dskb(Epkb(X))=X;
  4. 虽然计算机上很容易产生PKb和SKb,但从已知的PKb实际上不能导出SKb,即从PKb到SKb是“计算上不可能的”
  5. 虽然公钥可以用来加密,但不能用来解密:Dpkb(Epkb(X))!=X
  6. 先对X进行D运算和E运算或进行E运算和D运算结果是一样的:Epkb(Dskb(X))=Dskb(Epkb(X))=X

信息摘要

  将消息哈希转换成一个固定长度的值唯一的字符串。值唯一的意思是不同的消息转换的摘要是不同的,并且能够确保唯一。该过程不可逆,即不能通过摘要反推明文(似乎SHA1已经可以被破解了,SHA2还没有。一般认为不可破解,或者破解需要耗费太多时间,性价比低)。利用这一特性,可以验证消息的完整性。

数字签名

  作用:为了向“客户”证明自己是“服务器”, “服务器”把一个字符串(也就是信息摘要)用自己的私钥加密——即数字签名,把明文和加密后的密文一起发给“客户”。

  “客户”收到信息后,用自己持有的公钥解密密文,和明文进行对比,如果一致,说明信息的确是由服务器发过来的。因为由“服务器”用私钥加密后的内容,由并且只能由公钥进行解密,私钥只有“服务器”持有,所以如果解密出来的内容是能够对得上的,那说明信息一定是从“服务器”发过来的。

  RSA加密算法在这个通信过程中所起到的作用主要有两个:

  1. 因为私钥只有“服务器”拥有,因此“客户”可以通过判断对方是否有私钥来判断对方是否是“服务器”。——数字签名的应用
  2. 客户端通过RSA的掩护,安全的和服务器商量好一个对称加密算法和密钥来保证后面通信过程内容的安全。

数字签名的三个功能

  1. 接收者核实发送者对报文的签名,因为除了A外没有被人持有A的私钥,所以除了A外没有别人产生密文Dska(X)的能力,所以B相信报文X是A签名发送的——报文鉴别
  2. 接收者确信所收到的数据和发送者发送的完全一致而没有被篡改过,因为如果其他人篡改了报文,无法用A的私钥SKa对X进行加密,那么B对篡改的报文进行解密将会得到不可读的明文,就知道报文被篡改过,这可保证——报文的完整性
  3. 发送者事后不能对报文签名的抵赖,若A要想抵赖曾发送报文给B,B可把X及Dsk(X)出示进行给公证的第三者——不可否认

数字证书

  数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的

  1. Issuer (证书的发布机构):指出是什么机构发布的这个证书,也就是指明这个证书是哪个公司创建的(只是创建证书,不是指证书的使用者)。对于上面的这个证书来说,就是指"SecureTrust CA"这个机构。
  2. Valid from , Valid to (证书的有效期):也就是证书的有效时间,或者说证书的使用期限。 过了有效期限,证书就会作废,不能使用了。
  3.  Public key (公钥):这个我们在前面介绍公钥密码体制时介绍过,公钥是用来对消息进行加密的,第2章的例子中经常用到的。这个数字证书的公钥是2048位的,它的值可以在图的中间的那个对话框中看得到,是很长的一串数字。
  4. Subject (主题):这个证书是发布给谁的,或者说证书的所有者,一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。 对于这里的证书来说,证书的所有者是Trustwave这个公司。
  5. Signature algorithm (签名所使用的算法):就是指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名(第1.5节中解释过数字签名)。
  6. Thumbprint, Thumbprint algorithm (指纹(hash值)以及指纹算法(hash算法)):这个是用来保证证书的完整性的,也就是说确保证书没有被修改过,这东西的作用和2.7中说到的第3个问题类似。 其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。 注意,这个指纹会使用"SecureTrust CA"这个证书机构的私钥用签名算法(Signature algorithm)加密后和证书放在一起。

数字证书申请

  1. 自己本地先生成一对密匙,然后拿着自己的公匙以及其他信息(比如说企业名称啊什么的)去CA申请数字证书。
  2. CA在拿到这些信息后,会选择一种单向Hash算法(比如说常见的MD5)对这些信息进行加密,加密之后的东西我们称之为摘要:
  3. 单向Hash算法有一种特点就是单向不可逆的,只要原始内容有一点变化,加密后的数据都将会是千差万别,这样就防止了信息被篡改。
  4. 生成摘要后还不算完,CA还会用自己的私匙对摘要进行加密,摘要加密后的数据我们称之为数字签名。
  5. 最后,CA将会把我们的申请信息(包含服务器的公匙)和数字签名整合在一起,由此而生成数字证书。
  6. 然后CA将数字证书传递给我们。

posted on 2019-06-01 17:06  tianzeng  阅读(489)  评论(0编辑  收藏  举报

导航