zoukankan      html  css  js  c++  java
  • 消息认证码

    消息认证包括两个目标
      1消息完整性认证: 确保张三发给我的消息是完整的,在传输过程中没有被第三方篡改
      2消息的来源认证: 确保这个数据是张三发给我的,而不是李四发给我的

    第一个目标通常使用散列函数来达成
      常见用例: 张三把要发送的数据通过散列函数比如md5提取数据的摘要,让后将摘要和数据一起发送给我
              我接收到数据后将数据部分进行同样的md5散列方法,得到的摘要和收到的摘要做对比,如果
              两个摘要相同,那证明这个数据是没有被篡改的

    第二个目标通常使用密匙来达成
      我们在回过头看一下上面的那个例子,会发现一个大问题,那就是我们认定了收到摘要没有问题,这个逻辑
      才讲得通,但实际中的黑客比你想象中更聪明,他不仅改了数据,连同摘要一起篡改了。

      这个时候就需要密匙了

      这个密匙只有我和张三知道,张三将密匙追加在数据后面进行摘要提取,然后将摘要和数据发送给我,
      我方收到数据后,将我本地存储的密匙追加在数据后面,进行摘要提取,对比收到的摘要,如果可以吻合,
      那么数据就是未被篡改且一定是张三发给我的


      再来回味一下这个过程,发现数据在传输过程中没有暴漏出密匙,黑客拿不到密匙就无法伪造摘要,摘要无法伪造,
      他篡改了数据就会被我方轻易识破

    结论
      在设计消息认证码的时候,至少要实现这两个目标才算安全合格,密匙要定期更换,降低密匙泄露造成的危害

    扩展
      上面的一通可以认为是消息认证码的底层原理,实际中有很多已经设计好的方案可供使用,比如使用广泛的 HMAC,
      HMAC可以看成是一个消息认证码接口,其中H代表Hash,意味着HMAC需要和一个hash函数搭配才能使用,
      常见的hash函数: md5,sha1,sha256,sha512....
      比如常见的 HS256 就是 HMAC + SHA256

    大部分编程语言都提供相关函数,调用类似于这样 hmac(数据,hash方法,密匙)

  • 相关阅读:
    js数组与字符串的相互转换方法
    js页面跳转常用的几种方式
    js刷新页面方法大全
    IIS上开启反向代理实现Vue项目接口跨域处理
    【问题解决记录】vue解决低版本安卓与ios10以下系统兼容性问题
    【解决问题记录】https网站中请求http资源接口报错与netERRSSLPROTOCOLERROR错误的解决
    indexedDb数据库基本操作
    Object常用方法
    htmlToTex
    禁止鼠标右键保存/拖动/选中/复制 图片/文字
  • 原文地址:https://www.cnblogs.com/codeAB/p/12049245.html
Copyright © 2011-2022 走看看