SSL,数字签名,证书,公钥分配 的思考

SSL,数字签名,证书,公钥分配 的思考

SSL

  • SSL作用在端系统应用层的HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障 如图

    • image-20220721110024753
  • 当使用普通不加密的浏览器查看网页时,HTTP就直接使用TCP连接,这时SSL不起作用。但使用信用卡进行网上支付,要键入信用卡密码时,就需要使用安全的浏览器。这时,应用程序HTTP就调用SSL对整个网页进行加密。网页上会提示用户,同时网址栏原来显示http的地方,现在变成了https。在http后面加上的s代表security,表明现在使用的是提供****安全服务 的HTTP协议(TCP的HTTPS端口号是443,而不是平时使用的端口号80)。这时在发送方,SSL从SSL套接字接收应用层的数据(如HTTP或IMAP报文),对数据进行加密,然后把加密的数据送往TCP套接字;在接收方,SSL从TCP套接字读取数据,解密后,通过SSL套接字把数据交给应用层。

  • 下面以万维网应用为例来说明SSL的工作过程。

    销售商的万维网服务器B使用SSL为顾客A提供安全的在线购物。当顾客点击该网站链接建立TCP连接后,先进行浏览器和服务器之间的握手协议,完成加密算法的协商和会话密钥的传递,然后进行安全数据传输。其简要过程如下(实际步骤要复杂得多):

    (1)协商加密算法 。➊浏览器A向服务器B发送浏览器的SSL版本号和一些可选的加密算法。➋B从中选定自己所支持的算法(如RSA),并告知A。

    (2)服务器鉴别 。➌服务器B向浏览器A发送包含其RSA公钥的数字证书。➍A使用该证书的认证机构CA公开发布的RSA公钥对该证书进行验证。

    (3)会话密钥计算 。由浏览器A随机产生一个秘密数。➎用服务器B的RSA公钥进行加密后发送给B。➏双方根据协商的算法产生共享的对称会话密钥。

    (4)安全数据传输 。➐双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。

  • 上述的SSL安全会话建立过程如图7-18所示。

    • image-20220721110858871

数字签名

  • 数字签名必须保证能够实现以下三点功能:

    • (1)接收者能够核实发送者对报文的签名。也就是说,接收者能够确信该报文的确是发送者发送的。其他人无法伪造对报文的签名。这叫做报文鉴别

      (2)接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过。这叫做报文的完整性

      (3)发送者事后不能抵赖对报文的签名。这叫做不可否认

  • 简单的理解就是说, 要确保报文是可追述且不可否认, 你发的就是你发的

  • 数字签名实现

    • 具有保密性的数字签名实现

证书

  • 为什么需要证书

    • 设想用户A要欺骗用户B,A可以向B发送一份伪造是C发送的报文,A用自己的私钥进行数字签名,并附上A自己的公钥,谎称这公钥是C的。B如何知道这个公钥不是C的呢?

      • 那假如说你(客户端)拿到的公钥并不是服务端给的呢,而是黑客塞给你的呢?而你却把这个假公钥当成真的,那么当你使用这个假公钥加密一些敏感信息时,黑客就可以截取你的这段信息,由于这信息是用黑客自己的公钥加密的,这样一来,黑客拿自己的私钥就能解密得到你的敏感信息。

        这就是问题所在。

        要解决这个问题,其实只要保证『公钥』是可信的。只有服务端发给你的公钥你才能拿,而坏人给你的公钥,你要懂得识别并丢弃它。

    • 显然,这需要有一个值得信赖的机构来将公钥与其对应的实体(人或机器)进行绑定 (binding)

    • 这样的机构就叫做认证中心CA (Certification Authority),它一般由政府出资建立

    • 数字证书是什么东西?其实它就是一个 .crt 文件

    • 证书针对的是非对称加密体系

  • 证书包含的信息

    • 公钥的提供方信息
    • 公钥
      • 数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密
    • CA机构的签名
    • 证书有效时间
    • 证书采用的加密算法
  • 证书生成过程

    • 在自己的服务器上生成一对公钥和私钥。然后将域名、申请者、公钥(注意不是私钥,私钥是无论如何也不能泄露的)等其他信息整合在一起,生成.csr 文件。
    • 将这个 .csr 文件发给 CA 机构,CA 机构收到申请后,会通过各种手段验证申请者的组织信息和个人信息,如无异常(组织存在,企业合法,确实是域名的拥有者),CA 就会使用散列算法对.csr里的明文信息先做一个HASH,得到一个信息摘要,再用 CA 自己的私钥对这个信息摘要进行加密,生成一串密文,密文即是所说的 签名。签名 + .csr 明文信息,即是 证书。CA 把这个证书返回给申请人。
    • image-20220721114007066

对称加密公钥分配安全问题

  • 公钥分配纯在问题

    • 由于加解密的安全性完全依赖秘钥, 而网络传输的不安全性, 容易被拦截获取
  • 如何处理

      1. 通过非对称加密体系加密公钥
        • image-20220721121138462
      1. 让密钥分配中心KDC 分配秘钥。 KDC 如何分配
      • KDC是大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)

      • image-20220721114737954

      • 如图假定用户A和B都是KDC的登记用户。A和B在KDC登记时就已经在KDC的服务器上安装了各自和KDC进行通信的主密钥 (master key)K AK B 。为简单起见,下面在叙述时把“主密钥”简称为“密钥”。密钥分配分为三个步骤(如图7-11中带箭头直线上的➊,➋和➌所示)

      • ➊ 用户A向密钥分配中心KDC发送时用明文,说明想和用户B通信。在明文中给出A和B在KDC登记的身份。

        ➋ KDC用随机数产生“一次一密”的会话密钥K AB 供A和B的这次会话使用,然后向A发送回答报文。这个回答报文用A的密钥K A 加密。这个报文中包含这次会话使用的密钥K AB 和请A转给B的一个票据 (ticket)(3) ,该票据包括A和B在KDC登记的身份,以及这次会话将要使用的密钥K AB 。票据用B的密钥K B 加密,A无法知道此票据的内容,因为A没有B的密钥K B ,当然A也不需要知道此票据的内容。

        ➌ 当B收到A转来的票据并使用自己的密钥K B 解密后,就知道A要和他通信,同时也知道KDC为这次和A通信所分配的会话密钥K AB

        此后,A和B就可使用会话密钥K AB 进行这次通信了


    参考文献

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinBin_Bang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值