消息认证码 - MAC (Message Authentication Code)
消息认证包括两个目标
1消息完整性认证: 确保张三发给我的消息是完整的,在传输过程中没有被第三方篡改
2消息的来源认证: 确保这个数据是张三发给我的,而不是李四发给我的
第一个目标通常使用散列函数来达成
常见用例: 张三把要发送的数据通过散列函数比如md5提取数据的摘要,让后将摘要和数据一起发送给我
我接收到数据后将数据部分进行同样的md5散列方法,得到的摘要和收到的摘要做对比,如果
两个摘要相同,那证明这个数据是没有被篡改的
第二个目标通常使用密匙来达成
我们在回过头看一下上面的那个例子,会发现一个大问题,那就是我们认定了收到摘要没有问题,这个逻辑
才讲得通,但实际中的黑客比你想象中更聪明,他不仅改了数据,连同摘要一起篡改了。
这个时候就需要密匙了
这个密匙只有我和张三知道,张三将密匙追加在数据后面进行摘要提取,然后将摘要和数据发送给我,
我方收到数据后,将我本地存储的密匙追加在数据后面,进行摘要提取,对比收到的摘要,如果可以吻合,
那么数据就是未被篡改且一定是张三发给我的
再来回味一下这个过程,发现数据在传输过程中没有暴漏出密匙,黑客拿不到密匙就无法伪造摘要,摘要无法伪造,
他篡改了数据就会被我方轻易识破
结论
在设计消息认证码的时候,至少要实现这两个目标才算安全合格,密匙要定期更换,降低密匙泄露造成的危害
扩展
上面的一通可以认为是消息认证码的底层原理,实际中有很多已经设计好的方案可供使用,比如使用广泛的 HMAC,
HMAC可以看成是一个消息认证码接口,其中H代表Hash,意味着HMAC需要和一个hash函数搭配才能使用,
常见的hash函数: md5,sha1,sha256,sha512....
比如常见的 HS256 就是 HMAC + SHA256
大部分编程语言都提供相关函数,调用类似于这样 hmac(数据,hash方法,密匙)
消息认证码 - MAC (Message Authentication Code)的更多相关文章
- MAC (Message Authentication Code,消息认证码算法)
需要将密钥发送到对方,对方用该密钥进行摘要处理,进行摘要验证. //初始化KeyGenerator KeyGenerator keyGenerator= KeyGenerator.getInstanc ...
- 29.密码学知识-消息认证码MAC-6——2019年12月19日
1. 消息认证码 1.1 消息认证 消息认证码(message authentication code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC. 思考改进方案? 从哈希函数 ...
- 密码学奇妙之旅、03 HMAC单向散列消息认证码、Golang代码
HMAC 单向散列消息认证码 消息认证码MAC是用于确认完整性并进行认证的技术,消息认证码的输入包括任意长度的消息和一个发送者和接收者之间共享的密钥(可能还需要共享盐值). HMAC是使用单向散列函数 ...
- 密码学初级教程(五)消息认证码MAC-Message Authentication Code
密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包 ...
- Algorithm:Java加密解密之MAC(消息认证码)
MD5 消息摘要(数字摘要) 它是把一个文本/文件 通过摘要函数(hash函数)计算出一个结果.然后把文本/文件和摘要结果一同发给接受者接受者接收到文件之后,也进行摘要,把两个摘要结果进行对比.如果一 ...
- 为什么要使用消息认证码(MAC)而非对称密钥?
问题: 看了消息认证码的介绍后,小丽心想"如果用对称密码将消息加密后再发送的话,是不是就不需要消息认证码了呢?"原因有下: 1.对称密码的密文只有使用和加密时相同的密钥才能正确解密 ...
- HMAC哈希消息认证码
收藏 137 14 hmac 编辑 HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出. 中文名 哈希消息认证码 外文名 H ...
- HMAC(Hash-based Message Authentication Code)实现原理
1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...
- hmac库 密钥相关的哈希运算消息认证码
# -*- coding: cp936 -*- #xiaodeng #python 2.7.10 #HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一 ...
随机推荐
- 在Modelsim波形窗口复制信号
可以通过张贴复制变量名在Modelsim波形窗口复制信号.
- windbg预览版,windbg preview配置win7x64双机调试
目录 一丶简介 二丶步骤 1.下载Windbg Preview (windbg预览版本) 2.配置虚拟机端口 3.虚拟机设置调试湍口 4.windbg preview开始调试. 一丶简介 Windbg ...
- solr(一) 单节点安装部署
一.solr简介 1.什么是solr? Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件 ...
- [后渗透]Metasploit使用基础
0x00 简介 Metasploit是一个免费的.可下载的框架,通过它可以很容易地获取.开发并对计算机软件漏洞实施攻击.它本身附带数百个已知软件漏洞的专业级漏洞攻击工具.当H.D. Moore在200 ...
- ICEM-一种网格画法的思考
原视频下载链接:https://pan.baidu.com/s/1kV4Zj3x 密码: uthc
- 20189220 余超《Linux内核原理与分析》第四周作业
构造一个简单的Linux系统MenuOS 第三章基础知识 计算机的三大法宝:存储计算机,函数调用堆栈,中断. 操作系统的两把宝剑:中断上下文,进程上下文. Linux内核源码的目录结构: arch目录 ...
- 【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop
作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 4.简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中 ...
- python复合数据类型以及英文词频统计
这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753. 1.列表,元组,字典,集合分别如何增删改查及遍历. 列 ...
- InvalidSelectorError: Compound class names not permitted报错处理
InvalidSelectorError: Compound class names not permitted报错处理 环境:python3.6 + selenium 3.11 + chromed ...
- openSTack备份恢复