IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 消息认证码 -> 正文阅读

[系统运维]消息认证码

消息认证码

一 消息认证要求
在网络环境中,可能有下述攻击:
1.消息透露给没有合法密钥的任何人或程序。
2.传输分析, 分析通信双方的通信方式。在面向连接的应用中,确定连接的频率和持续时间;在面向连接的应用中,确定双方的消息数量和长度。
3.伪装,欺诈源向网络中插入一条消息。如攻击这产生一条消息并声称这条消息来自某合法实体,或者非消息接收方发送的关于收到或未收到消息的欺诈应答。
4.内容修改,对消息的内容修改,包括插入、删除、转换和修改。
5.顺序修改,对通信双方消息顺序的修改,包括插入、删除和重新排序。
6.计时修改,对消息的延时和重播。在面向连接的应用中,整个消息序列可能是前面某合法消息序列的重播,也可能是消息序列中的一条消息被延时或重播;在面向无连接的应用中,可能是一条消息(如数据报)被延时或重播。
7.发送方否认,发送方否认发送过某消息。
8.接收方否认,接收方否认接收到某消息。

对付前两种攻击的方法属于消息保密性范畴;对付(3)到(6)种攻击的方法一般称为消息认证;对付(7)种攻击方法的属于数字签名。一般而言,数字签名方法也能够抗第(3)至第(6)种攻击种的某些或全部攻击;对付第(8)种攻击需要使用数字签名和为抗此种攻击而设计的协议。
归纳起来,消息认证就是验证所收到的消息确实是来自真正的发送方,且是未被修改的消息,它也可验证消息的顺序和及时性。

二 消息认证码
消息认证码(英语:Message authentication code,缩写为MAC),也是一种认证技术,它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。在这种方法中,假定通信双方,比如A和B,共享密钥K。若A向B发送消息时,则A计算MAC,它是消息和密钥的函数,即MAC=C(K,M)
其中,M为输入消息;C为MAC函数;K为共享的密钥;MAC为消息认证码。
消息和MAC一起被发送接收方。接收方对收到的消息用相同的密钥K进行相同的计算,得出新的MAC,并将接收到的MAC与其计算出的MAC进行比较。
在这里插入图片描述

三 基于HASH函数的MAC:HMAC
实现MAC的一个选择就是使用密码学哈希函数作为基本块,比如SHA-1.HMAC方案由一个内部HASH和一个外部HASH组成,如图所示
在这里插入图片描述

H为嵌入的HASH函数(如MD5,SHA-1, RIPEMD-160)
IV为HASH函数输入的初始值
M为HMAC的消息输入(包括由嵌入HASH函数定义的填充位)
xi为M的第i个分组,1≤i≤n
n为分组数
b为每一分组包含的位数
K为密钥;建议密钥长度≥n。若密钥长度大于b,则将密钥的hash函数的输入,来产生一个n位的密钥。
K+为使K为b位长而在K左边填充0后的结果
ipad是将00110110这一比特序列(16进制的36)重复b/8次的结果
opad是将01011100这一比特序列(16进制的5C)重复b/8次的结果
算法描述如下:
在K边填充0,得到b位K+(例如,若K是160位,b=512,则在K中加入44个字节的0)
K+与ipad执行异或运算(位异或)产生b位的分组Si。
将M附于Si后。
将H作用于步骤(3)得出的结果。
K+与opadipad执行异或运算(位异或)产生b位的分组S0
将步骤(4)的HASH码附于S0后。
将H作用于步骤(6)所得出的结果,并输出该函数值。
注意,K与ipad异或后,其信息位有一半发生了变化;同样K与opad异或后信息位另一半也发生了变化,这样通过将Si与S0传递给hash算法中的压缩函数,我们可以从K伪随机地产生出两个密钥。
HMAC多执行了三次HASH压缩函数(对Si、S0和内部的hash产生的分组),但是对于长消息,HMAC和嵌入的HASH函数执行时间大致相同。

四 基于分组密码的消息认证码(CMAC,CBC-MAC)
基于分组密钥的消息认证码,对AES,3DES都是适用的
计算方式如下图所示:

在这里插入图片描述
在这里插入图片描述

首先,当消息长度是分组长度b的n倍时,我们考虑CMAC的运算情况。对AES, b=128,对于3DES,b=64。这个消息被划为n组(M1,M2,M3…,Mn)。算法使用k位的加密密钥K和b位的常数K1。对于AES,密钥长度k为128位,192位或256位,对于3DES,密钥长度为112位或168位
如果消息不时密文分组长度的整数倍,则最后分组的右边(低有效位)填充一个1和若干个0使得最后得分组长度为b。除了使用一个不同的b位密钥K2代替K1外,其他一样。
计算子密钥K1和K2使用如下算法这相当于在有限域 GF(2^b) 中乘以 x 和 x2)。让 ? 表示标准的左移运算符,⊕ 表示按位互斥,或者:
1.计算一个临时变量值 K0 = E(k,0^b)
2.如果msb(K0) = 0, 那么K1 = K0 ? 1, 否则K1 = (K0 ? 1) ⊕ C; 这里C 是某个常数,仅取决于 b。(具体来说,C 是字典序第一个不可约 b 次二元多项式的非前导系数,其中 1 的个数最少:0x1B 表示 64 位,0x87 表示 128 位,0x425 表示 256 位块。)
3.如果msb(K1) = 0,那么K2 = K1 ? 1,否则K2 = (K1 ? 1) ⊕ C。
4.返回 MAC 生成过程的密钥 (K1, K2)。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:28:17  更:2022-01-29 23:29:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 7:51:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码