HTTPS 之二HMAC浅谈

一、前言

信息在传输过程中,因为各种各样的原因容易存在不仅仅存在这丢失的问题,还存在着被篡改的问题,以前看古装电视剧,为了防止信件被打开,用蜜蜡封着口,然后再盖上印,如果蜜蜡被破坏了或印记不完整,就说明信内容可能被篡改了。

而对于现在机制来说HMAC就是传输的信息的蜜蜡+盖章,防止了数据被篡改。

二、看下工作原理

数据在传输过程中,数据有可能字节丢失,这就首先保证数据的完整性,这个用普通的HASH算法就可以办到。

  • 数据完整性保证 HASH算法
    对信息进行hash算法运算,运算结果就是hash码,hash算法计算速度非常快,而且对数据非常敏感,信息一点有一点变动,hash的结果是不同的。
    有没有可能不同的信息产生相同的hash码那,有可能,这就叫hash碰撞,不过密码学里面用的hash是至少是强抗碰撞的,也就是很难找到两个不同的信息其hash结果是相同的。
    HASH计算

数据完整是不是就代表数据没有被篡改那,不是,因为还有可能是信息整体包括hash的计算值都被替换了,那如何验证数据是否被篡改那。


Hash算法无法保证
  • 数据防篡改和验证保证 HMAC
    MAC是Message Authentication Code即消息验证码,这个类比是古代的盖章的蜜蜡。
    MAC的两个作用:
    1) 保证消息的完整性,防止消息被篡改。
    2) 验证消息来源的真实性。
    在HASH算法下,第三方可以修改消息,但是在MAC中,由于第三方不知道密钥,所以无法修改消息,也就防止了消息的被篡改,像古代蜜蜡很容易重新点上,但是上面的印章却无法伪造,这就保证了消息的准确性。

MAC(值) = MAC(信息、密钥)


MAC验证过程

这个前提是,通信双方拥有共同的密钥,才可以进行通信,MAC值一般和消息一起传递,消息可以选择加密也可以选择不加密。

三、MAC种类

MAC算法包括CBC-MAC、HMAC。HTTP中多少HMAC。
HMAC 是Hase Base MAC 基于Hash算法的MAC。
HMAC-SHA-1 、HMAC-SHA-256、HMAC-SHA-512

目前我在写的代码解析HTTPS 的TLS1.2中从pre-master key 得到masterkey是需要HMAC算法迭代计算获得的。

四、OpenSSL计算HMAC

1)简单例子

openssl dgst -sha1 private.pem
SHA1(private.pem)= 6707a668c83580ff4dec81241c1d0316539038ed

#计算hash值输出到文件
 openssl dgst -sha1 -out digest.txt private.pem

#根据密钥key 来计算hmac
openssl dgst -sha1 -hmac "key" private.pem

HTTPS是将加密和HMAC结合起来的,加密来保证数据机密性,数据机密性不代表不能修改,HMAC来保证数据的完整性。

来一段代码看看:


image.png

说明

文章部分内容和图来自书《深入浅出HTTPS》
读深入浅出HTTPS书笔记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 3,018评论 0 6
  • 加密与解密 对称密码体制的保密性主要取决于密钥的保密性,与算法的保密性无关 非对称加密算法与对称加密算法的区别: ...
    peerless_1024阅读 2,227评论 0 0
  • 目录 一、https概述 1. 什么是HTTP? 2. 什么是HTTPS? 3. SSL/TLS...
    出走的流星阅读 13,150评论 4 27
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 7,533评论 1 25
  • 心里想做的事情 时间都按下了暂停 以为自己是独自无二的 会毫无意外的被宠 其实时间 只对压榨它的人多情 我在时间那...
    路是人的心阅读 92评论 0 1

友情链接更多精彩内容