09-消息认证码

合集下载

密码学基础(四)-消息验证码

密码学基础(四)-消息验证码

密码学基础(四)-消息验证码消息的完整性保密性与完整性考虑⼀个现实模型:⼀个⽤户想要与银⾏在internet上进⾏通信,当银⾏收到⼀条消息说要从这个⽤户的账户上转1000$到另⼀个账户上,那么银⾏必须确认两件事:1. 请求是否被验证,也就是说这个⽤户是否真的发起了这个请求,还是说是这个请求是由某个敌⼿发起的。

2. 假设这个请求确实是由合法⽤户发起的,那么这个请求的详细细节是否⼜真的是这个⽤户请求的内容呢?需要注意的是,在⽹络通信中的纠错码并不能保证确认上⾯的第⼆个要求,因为纠错码是⽤来检测并纠正影响通信的⼀⼩部分随即发⽣的错误,但是⽆法抵抗能够⾃由选择在任何地⽅出现任意数量错误的恶意敌⼿。

消息认证码的定义⽬前所讨论的消息认证码(Message Authentication Codes, MAC)可以⽤于检测消息是否被敌⼿修改,带并不具备公开可认证性,因为这⾥的消息认证码是基于通信双⽅共享同⼀个密钥⽽设计的。

⼀个MAC有三个PPT上的算法构成的MAC := (Gen, Mac, Vrfy):密钥⽣成算法Gen:将安全参数1n作为输⼊然后输出⼀个密钥 k ,并且密钥长度 |k| ≥ n。

标签⽣成算法Mac:将密钥 k 以及明⽂m∈{0, 1}*作为输⼊,然后输出标签 t 。

这个算法可能是随机化的,所以记作 t ← Mac k(m)确定性认证算法Vrfy:将密钥 k ,⼀个明⽂m以及标签 t 作为输⼊,然后输出⼀个⽐特 b ,如果 b=1 则意味着这是有效的明⽂标签对。

记作b := Vrfy k(m, t)⼀个有效的消息认证码需要对所有 n ,任意⼀个由Gen(1n)输出的 k 以及任意的明⽂m∈{0, 1}*,都有Vrfy k(m, Mac k(m)) = 1。

如果存在⼀个函数 l 对所有由Gen(1n)⽣成的密钥 k ,算法Mack都是定义在明⽂m∈{0, 1}l(n)上的,则称这个算法是对于消息长度为 l(n) 的固定长度MAC。

国网376.1-2009规约报文解析

国网376.1-2009规约报文解析

2.应用层功能码 应用层功能码AFN=1 应用层功能码
复位命令(AFN=01H)复位命令分为 (AFN=01H)
68 8a 00 8a 00 68 41 31 07 14 00 02 01 e1 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 56 18 18 03 00 fc 16 • 68 ---起始字符 起始字符[68] 起始字符 • 8a 00 8a 00 --长度 长度L[8a 00]--->34 [8a 00]--->34 长度 • 68 ---起始字符 起始字符[68] 起始字符 • 41 ---控制域 控制域C[41]--->DIR=0,PRM=1,ACD=0,CID=1 控制域 • 31 07 ---行政区划码 行政区划码[31 07]--->0731 行政区划码 • 14 00终端地址 终端地址[14 00]--->20 终端地址 • 02 ---主站地址和组标志 主站地址和组标志[02]--->主站地址 组标志 主站地址(1),组标志 主站地址和组标志 主站地址 组标志(0) • 01 ---应用层功能码 应用层功能码[01]--->1 应用层功能码 • e1 ----帧序列域 帧序列域[e1]--->TpV=1,FIR=1,FIN=1,CON=0,SEQ=1 帧序列域 • 00 00 01 00 FN=0001,PN=0000--->(F1)全部确认 全部确认 • 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ---附加信息域 附加信息域AUX中的消息认证码字段 中的消息认证码字段PW 附加信息域 中的消息认证码字段 • 01 56 18 18 03 00时间标签 01为启动帧帧序号计数器 时间标签Tp 为启动帧帧序号计数器 为启动帧帧序号计数器PFC。56 18 18 03为启动帧发送时标,格 为启动帧发送时标, 时间标签 。 为启动帧发送时标 式为秒分时日。 为允许发送传输延时时间 为允许发送传输延时时间, 式为秒分时日。00为允许发送传输延时时间,单位为分钟 • fc • 16

消息认证码(MAC)

消息认证码(MAC)

消息认证码(MAC)⽬录消息认证码定义将通信双⽅共享的密钥K和消息m作为输⼊,⽣成⼀个关于K和m的函数值MAC,将其作为认证标记(Tag)。

发送时,将消息和认证码同时发送给接收⽅,若接收⽅⽤消息和共享密钥⽣成相同的消息认证码,则认证通过。

消息认证码⽤于保证数据的完整性。

即防⽌数据被⾮授权⽤户篡改。

需要注意的是:仅加密是⽆法保证数据的完整性的(如对ECB模式的攻击),因此需要认证。

常见的消息认证码包括以下⼏类:基于分组密码的MAC基于带密钥的Hash函数的MAC基于泛Hash函数的MAC认证的安全性模型攻击者选择消息发送给MAC,MAC将相应的Tag值返回,通过该⽅法可以得到任意消息的认证码。

若攻击者可以另外找⼀个其他的消息,并能够伪造其认证码,则攻击成功,MAC被攻破。

标准MAC算法基于分组密码的MACCBC-MAC对消息使⽤CBC模式进⾏加密,取密⽂的最后⼀块作为认证码(相当于⽤异或操作进⾏了压缩)优点:构造简单,底层算法具有⿊盒性质,⽅便替换。

缺点:⽆法处理变长消息;可以伪造消息通过认证,⽐如:已知:(M1,M2,M3,T)和(M1,M2,T1),可伪造(M1,M2,M3,M3\oplus T \oplus T1,T)通过认证。

EMACEMAC为CBC-MAC的改进。

利⽤1或0对明⽂消息进⾏填充,从⽽可以处理变长消息。

优点:可处理变长消息。

缺点:若消息是整分组,最后⼀块完全处理填充消息,会造成浪费。

XCBC->TMAC->OMACXCBC、TMAC、OMAC均为对CBC-MAC和EMAC的改进,结合了两者的优点。

若消息为整分组,则采取下图左边的⽅案;若消息不是整分组,则采取下图右边的⽅案。

XCBC:K_1,K_2,K_3均不相同TMAC:(K_2,K_3)=(K \cdot u, K)OMAC1 和OMAC2: (K_2,K_3)=(L\cdot u,L\cdot u^2)或(K_2,K_3)=(L\cdot u,L\cdot u^{-1}),L=E_K(0^n)CMAC=OMAC1下图中,(K_1,K_2)=(L\cdot u,L\cdot u^2),L=E_K(0^n)基于泛哈希函数(Universal Hash Function)的MAC基于泛哈希函数的MACRogaway : Bucket hashing (1995)Halevi-Krawczyk : MMH (1997)Black-Halevi-Krawczyk-Krovertz-Rogaway : UMAC (1999)Bernstein: Poly1305(2005)Almost Universal(AU) Hash Function 和 Almost Xor Universal(AXU) Hash FunctionAlmost Xor Universal hash function(AXU) 的定义如下图,即保证输出异或值的随机AXU函数举例例1H: \{0,1\}^n \times \{0,1\}^n \rightarrow \{0,1\}^nH(K,M) = K· M1/2^n-AXU例2Almost Universal(AU):只要保证对于不同输⼊,输出相同值的概率很低即可,不必保证输出异或值的均匀性。

信息安全 第5章消息认证

信息安全  第5章消息认证


所以许多不同的密钥(约2k-n个),计算出来的MAC都 等于MAC1。这些密钥中哪一个是正确的密钥不得而 知。这时需要新的M-MAC对来测试这2k-n个密钥, 于是有如下的重复攻击:
重复攻击

Step 1:
给定M1和MAC1 = C k1 (M1) 对所有2k个密钥,判断MACi = C ki (M1) 匹配数约为: 2k-n
没有消息认证的通信系统是极为危险的
消息M
用户A 用户B
篡改、伪造、重放、冒充
恶意者C
消息认证(Message Authentication)
消息认证用于抗击主动攻击
验证接收消息的真实性和完整性 真实性
的确是由所声称的实体发过来的
完整性
未被篡改、插入和删除
验证消息的顺序性和时间性(未重排、重放

MD5 hash算法 MD5 Hash Algorithm
MD4是MD5杂凑算法的前身, 由Ron Rivest于1990年10月作为RFC 提出,1992年4月公布的MD4的改进 (RFC 1320,1321)称为MD5。
M E K EK(M) D K M
由于攻击者不知道密钥K,他也就不知道如何改变密文中的 信息位才能在明文中产生预期的改变。 接收方可以根据解密后的明文是否具有合理的语法结构来进 行消息认证。 但有时发送的明文本身并名优明显的语法结构或特征,例如 二进制文件,因此很难确定解密后的消息就是明文本身。
提供消息认证和保密性:
K2
A
M
E C
K1
||
C K1
C K 1 [ E K 2 ( M )]
D 比较 K2
B
A和B共享K1和K2 K1:用于生成MAC K2:用于加密

简述消息认证码的使用步骤 -回复

简述消息认证码的使用步骤 -回复

简述消息认证码的使用步骤-回复消息认证码(Message Authentication Code,MAC)是一种用于保护通信数据完整性和防止数据篡改的技术。

它使用加密算法和密钥,生成一个固定长度的认证标记,用于验证发送者和接收者之间的数据完整性和真实性。

在本文中,我们将介绍消息认证码的使用步骤。

1. 选择合适的加密算法和密钥长度:首先,我们需要选择适合我们需求的加密算法和密钥长度。

常用的加密算法包括HMAC(Hash-based MAC)、CMAC(Cipher-based MAC)和GMAC(Galois/Counter Mode MAC)。

每种算法都有其特定的适用场景和安全性质,我们需要根据我们的需求选择适当的算法。

同时,我们需要确定密钥的长度,通常密钥长度越长,安全性越高。

2. 生成密钥:接下来,我们需要生成一个密钥。

密钥可以使用随机数生成器生成,确保其随机性和不可预测性。

密钥的安全性对于消息认证码的安全性至关重要,因此我们需要采取适当的措施来确保密钥的机密性,如使用安全的密钥交换协议或密钥派生函数。

3. 计算消息认证码:现在,我们可以使用选择的加密算法和生成的密钥来计算消息认证码。

计算消息认证码的过程通常包括以下几个步骤:a. 将待认证的消息按照预定的规则进行分组。

这个规则可以是固定长度的分组,也可以是根据消息内容进行动态的分组。

b. 对每个消息分组应用加密算法,将分组与前一个分组的认证标记进行混合计算。

计算的结果通常会作为下一个分组的认证标记。

c. 对最后一个分组计算完认证标记后,将其作为总体的消息认证码。

4. 传输消息和消息认证码:完成计算消息认证码后,我们需要将消息和消息认证码一起传输给接收者。

通常,消息认证码会作为消息的一部分附加在消息尾部或通过另外的信道传送给接收者。

我们需要确保消息和消息认证码在传输过程中不被篡改和修改。

5. 验证消息认证码:接收者在接收到消息和消息认证码后,需要进行消息认证码的验证。

Hash函数(消息认证)

Hash函数(消息认证)
14
3
应用
由于加密软件慢、硬件费用高、加密算法专利保护 和出口限制等因素, 人们倾向于不使用带有加密的认 证方法,愿意使用方法(3)。 数据源认证方案不能提供数据源的不可拒绝性,因 为任何一方都可以使用共享密钥创建一个消息及其 认证。如果需要解决这种潜在的争执,可以使用可 信第三方或公钥技术。 使用MAC能够确定数据是在过去某个时间由特定一 方生成的,但是不能提供唯一性和时间上的保证, 也不能发现消息是否重用或重发。为了解决这些问 题,必须使用随时间变化的参数,例如时间戳、序 列号和随机数等。
击者也能计算压缩函数的输出。 (2) 即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰 撞。
在目前的计算水平下,使用MD5和SHA-1等作为HMAC 算法所嵌入的Hash函数,HMAC的安全性是可以保证的。
10
3 应用
数据完整性 数据完整性是指数据在生成、传送或存储过程中没有 被非法篡改. 使用Hash函数可以保证数据的完整性 使用MAC
MD5-MAC软件实现比较容易,其运算速度与MD5 大体相近 .
5
2
HMAC算法
消息认证码HMAC(keyed-hashing for message authentication code)是Bellare等人于1996年提出, 1997年作为RFC 2104发表,成为事实上的Internet 标准,包括IPSec协议在内的一些安全协议都使用 了HMAC算法。 HMAC算法利用已有的Hash函数,关键问题是如何 使用密钥。使用不同的Hash函数,就可以得到不同 的HMAC。选用MD5时的HMAC记为HMAC-MD5, 选用SHA-1时的HMAC记为HMAC-SHA1。
发送方 A x hK’ x1 || EK C DK x 接收方B hK’

网上银行系统信息安全通用规范(2020年最新版)

网上银行系统信息安全通用规范(2020年最新版)
[GM/Z 0001—2013,定义4.4]
3.12 资金类交易 funds transaction
通过网上银行进行的资金操作交易。
注:例如,转账、订单支付、缴费等。本人名下的投资理财、托管账户以及本人签订委托代扣协议的委托代扣等风 险可控的资金变动不属于此范畴。
3.13 信息及业务变更类交易 information and business changing transaction
年版的 6.1.4、6.2); ——修改了客户端安全的表述,补充了自身防护、敏感信息保护等安全要求(见 6.2.1.1,2012 年
版的 6.1.1); ——增加了条码支付相关要求(见 6.2.1.1、6.2.4.3); ——修改了专用安全设备的安全要求,并改名为“专用安全机制”(见 6.2.2,2012 年版的 6.1.2); ——增加了安全单元和移动终端支付可信环境相关要求(见 6.2.2.1、6.2.2.5); ——增加了生物特征相关要求(见 6.2.2.5); ——增加了云计算安全相关要求(见 6.2.4.1、6.3.1); ——增加了 IPv6 相关要求(见 6.2.4.3); ——增加了虚拟化安全相关要求(见 6.2.4.4); ——增加了网上银行系统与外部系统连接安全的基本描述和安全要求(见 6.2.5); ——修改了业务连续性与灾难恢复安全要求(见 6.3.7,2012 年版的 6.2.6 中的 k、l); ——修改了安全事件与应急响应的安全要求(见 6.3.8,2012 年版的 6.2.6 中的 m、n); ——增加了Ⅱ、Ⅲ类银行结算账户及交易安全锁相关要求(见 6.4.1); ——删除了附录中的基本的网络防护架构参考图、增强的网络防护架构参考图和物理安全(2012
注1:本标准分为基本要求和增强要求两个层次,基本要求为最低安全要求,增强要求是进一步提升系统安全性的 要求。各单位应在遵照执行基本要求的同时,按照增强要求,积极采取改进措施,不断提高安全保障能力。

消息认证(Message Authentication)

消息认证(Message Authentication)

的功能
– 电子商务上的应用,如电子付款、电子投票
消息认证的功能(目的)
-验证信息来源的真实性,即信源识别 -验证信息内容的完整性,保证消息不被篡改
如何实现消息认证
• 消息认证码(Message Authentication Code)
• 发送方用双方都知道的密钥计算出
MAC值,并连同消息送給接收方
• Hash Message Authentication Code (HMAC)
– RFC 2104 标准 – 可嵌入多种杂凑函数算法:MD4、MD5 与 SHA-1
– 加入『秘密密钥』
发送方 M 消 息 M MAC 杂凑 算法 密钥 K MAC 接收方 M
HMAC 算法
消 息
HMAC 算法 杂凑 算法
一、Hash 函数(One-way Hash Function)
• 把任意长的消息“压缩”成固定长的消息的算 法 • 数字签名时,常被使用 • 通常,HASH 函数是公开的 • 输出长度应足够大,防止生日攻击 • 64-bits 认为太小 • 通常 128~512bits
1. Hash函数的概念
=
?
密钥 K
HMAC 算法
HMAC 结构
HMACK(M) = H [(K+ ⊕ opad) || H [(K+ ⊕ ipad) || M]]
• 密钥 K 以 0 填满 b bits产生K+ • ipad:將 00110110 重复 b/8 次 • opad:將 01011100重复 b/8 次
K+
如何实现消息认证
•MAC-BCB-AES算法
方法:
1. 消息认证码(Message Authentication Code, MAC)

MAP消息详解

MAP消息详解

MAP技术介绍2010-4-25一、MAP技术介绍MAP是为了完成移动台的自动漫游功能,在移动通信网络实体之间传递消息的信令。

是网络之间互联的一个特有的功能单元,MAP规范给出了移动网在使用No.7信令系统时所要求的必需的信令功能,以便提供移动网必需的业务, 如话音和非话音业务。

目前MAP信令的传输是以CCITT的No.7信令系列技术规范为基础的,实际上MAP 信令的交换也可基于其它符合OSI网络层标准的网络。

这样,网络运营公司就可以根据本地实际情况,混合匹配使用各种协议,以满足其需要,当然这还需要有关协议的制订与完善。

MAP负责以下过程中GSM各功能实体间的信息传递:----位置登记/删除----位置寄存器故障后的复原----用户管理----鉴权加密----IMEI的管理----路由功能----接入处理及寻呼----补充业务的处理----切换----短消息业务----操作和维护在GSM系统中,MAP信令就如同人的血液一样,在各个功能实体之间,通过GSM的血管(No.7 CCS系统),传递着与上述规程有关的信息。

MAP协议也分为phase1,phase2,phase2+三个阶段,分别以3.x.y, 4.x.y, 5.x.y 标识协议版本号;(各个阶段的区别这里暂时不做介绍)二、MAP消息和会话MAP由业务提供者向其用户提供各种专门业务。

业务用户和业务提供者通过收发MAP 业务原语而相互作用。

一个MAP用户可同时接受来自不同的MAP业务提供者的业务,全部程序由业务用户来进行同步;MAP业务原语命名“类型”描述:请求(req)指示(ind)响应(rsp)确认(cnf)一个MAP对话定义为两个MAP用户之间为进行一个公共任务而进行的信息交换,它由一个或若干个MAP业务组成;TC:用来传送执行一个操作的请求或应答的方式,是TCAP的成分子层,用于承载MAP 消息。

一个操作是由远端要执行的一个动作,可以带相关参数。

消息认证码算法

消息认证码算法

消息认证码算法摘要:1.消息认证码算法的概述2.消息认证码算法的分类3.消息认证码算法的工作原理4.消息认证码算法的应用实例5.消息认证码算法的优缺点正文:【1.消息认证码算法的概述】消息认证码算法(Message Authentication Code,简称MAC)是一种用于验证消息真实性和完整性的加密技术。

在通信过程中,消息认证码算法可以确保接收方收到的消息与发送方发出的消息一致,防止消息被篡改或伪造。

消息认证码算法不同于加密算法,其主要目的是验证消息的真伪,而非加密消息的内容。

【2.消息认证码算法的分类】根据算法的特性和应用场景,消息认证码算法主要分为以下几类:(1)对称密钥算法:使用相同的密钥进行加密和解密,如:DES、AES 等。

(2)非对称密钥算法:使用不同的密钥进行加密和解密,如:RSA、ECC 等。

(3)哈希算法:将任意长度的消息映射为固定长度的摘要,如:SHA-1、SHA-256 等。

【3.消息认证码算法的工作原理】消息认证码算法通常采用“加密- 解密”的方式进行验证。

发送方首先使用密钥对消息进行加密生成认证码,然后将认证码与消息一同发送给接收方。

接收方收到消息后,使用相同的密钥对认证码进行解密,比较解密后的认证码与接收到的认证码是否一致,以此判断消息的真实性和完整性。

【4.消息认证码算法的应用实例】消息认证码算法广泛应用于各种通信场景,例如:网络数据传输、电子商务、数字签名等。

以数字签名为例,发送方首先使用哈希算法对消息进行摘要,然后使用私钥对摘要进行加密生成数字签名,将数字签名与消息一同发送给接收方。

接收方使用发送方的公钥对数字签名进行解密,比较解密后的数字签名与接收到的摘要是否一致,以此判断消息的真实性和完整性。

【5.消息认证码算法的优缺点】优点:(1)算法简单,计算量小,易于实现。

(2)可以有效防止消息被篡改或伪造。

缺点:(1)无法保证消息的保密性,仅能验证消息的真实性和完整性。

消息认证码

消息认证码

MAC使用的一个例子
MAC使用的一个例子
在此示例中,消息的发送方通过MAC算法运行它以生成MAC数据标记。然后将消息和MAC标签发送到接收器。 接收器依次使用相同的密钥通过相同的MAC算法运行传输的消息部分,产生第二MAC数据标签。接收器然后将在传 输中接收的第一MAC标签与第二生成的MAC标签进行比较。如果它们相同,则接收器可以安全地假设在传输期间消 息未被改变或篡改(数据完整性)。
MIC
MIC
消息完整性代码(MIC)经常替代术语MAC,尤其是在通信中,其中首字母缩写词MAC传统上代表MAC(媒体 访问控制)。但是,一些作者使用MIC来引用消息摘要,这与MAC不同,消息摘要不使用密钥。这种缺乏安全性意 味着任何旨在用于衡量消息完整性的消息摘要都应加密或以其他方式防止篡改。创建消息摘要算法,使得给定消 息将始终产生相同的消息摘要,假设使用相同的算法来生成两者。相反,MAC算法被设计为仅当相同的消息,秘 密密钥和初始化向量被输入到相同的算法时才产生匹配的MAC。消息摘要不使用密钥,因此,当它们自己使用时, 它们比MAC更不可靠地衡量消息完整性。因为MAC使用密钥,所以它们不一定需要加密以提供相同级别的保证。
另外,MAC算法可以有意地组合两个或更多个加密原语,以便即使后来发现其中一个易受攻击也能保持保护。 例如,在传输层安全性(TLS)中,输入数据被分成两半,每个半部用不同的散列原语(MD5和SHA-1)处理,然 后一起进行异或输出以输出MAC。
标准
标准
存在定义MAC算法的各种标准。这些包括:
ISO / IEC 9797-1和-2定义了可用于任何分组密码或散列函数以及各种不同参数的通用模型和算法。这些 模型和参数允许通过指定参数来定义更具体的算法。例如,FIPS PUB 113算法在功能上等同于具有填充方法1的 ISO / IEC 9797-1 MAC算法1和DES的分组密码算法。

第8章 认证码

第8章 认证码

9
HMAC的安全性
由HMAC的结构可以发现,其安全性依赖于所嵌入散列函数的 安全性。 对HMAC的攻击等价于对内嵌散列函数的下列攻击之一: (1)攻击者能够计算压缩函数的一个输出,即使IV是机密的 或者随机的。 (2)攻击者能够找到散列函数的碰撞,即使IV是机密的或者 随机的。 第一种攻击可以认为压缩函数与散列函数等价,n 位 的初始链接变量IV可以看作HMAC的密钥。因此攻击可以通 过对密钥的穷举来进行攻击。对密钥穷举的计算复杂度为 O(2n)。 第二种攻击要求寻找两个具有相同散列值的消息,即 实施第Ⅱ类生日攻击,对于具有n位长散列值的散列函数而 言,其计算复杂度为O(2n/2)。
a)易计算—— 对于一个已知函数C,给定一个值k和一个输入 x,Ck(x)是容易计算的。这个计算的结果被称 为消息认证码值。 b) 压缩——Ck把任意具有有限长度(比特数)的一个输 入x映射成一个具有固定长度的输出Ck(x)。 c) 强抗碰撞性— 要找到两个不同消息x和y,使得 Ck(x)=Ck(y) 是计算上不可行的。
M
K
E
EK ( M )
K
D
M
对称加密:机密性和认证
3
基于加密技术的消息认证
• 2.利用公钥密码体制实现消息认证 • 发送方A用自己的私钥SKA对消息进行加密运算,再通过公开 信道传送给接收方B。接收方B用A的公钥PKA对得到的消息进 行解密运算并完成鉴别。
SK A
PK A
M
E
ESK (M)
D
M
公钥加密:认证和签名
• 在发送方A用自己的私钥SKA进行加密运算(实现数字签名) 之后,还要用接收方B的公钥PKB进行加密,从而实现机密性 和消息认证。
SK A

ssf09密码算法

ssf09密码算法

ssf09密码算法
SSF33密码算法是中华人民共和国在2009年发布的一种国密算法标准,全称为“保密系统密码算法要求”。

该标准规定了保密系统中使用的下列几种密码算法:
1. 分组密码算法:SMS4
SMS4是对称分组密码算法,分组长度128位,密钥长度128位,采用Feistel网络结构。

2. 基于分组密码的MAC算法:XCBC-SMS4
XCBC-SMS4是基于SMS4的消息认证码算法。

3. 基于分组密码的键控算法:KCDSA
KCDSA是基于SMS4的密钥派生算法。

4. 数字签名算法:SM2
SM2是基于椭圆曲线密码的公钥算法,提供签名和密钥交换功能。

5. 公钥密码算法:SM2
SM2也可以用于加密,提供基于公钥的保密功能。

6. 密钥协商算法:DH
DH是基于整数离散对数难题的密钥协商算法。

SSF33为保密系统定制的这些密码算法标准,在性能、安全性上都经过专门评估,适合在对保密性要求极高的场景中使用。

网络安全讲义11章消息认证和散列函数

网络安全讲义11章消息认证和散列函数

第11章消息认证和散列函数内容1.对认证和数字签名的要求;2.可能遇到的攻击类型;3.基本方法。

11.1对认证的要求一、信息安全的需求•保密性(Confidentiality)•完整性(Integrity)–数据完整性,未被未授权篡改或者损坏–系统完整性,系统未被非授权操纵,按既定的功能运行•可用性(Availability)•鉴别(Authenticity)–实体身份的鉴别,适用于用户、进程、系统、信息等•不可否认性(Non-repudiation)–防止源点或终点的抵赖•……归纳:1.消息认证:2.数字签名11.2认证函数一、功能(两层)1.下层:产生认证符的函数2.上层:将函数作为原语验证消息的真实性二、函数类型1.消息加密:密文作为认证符2.消息认证码(MAC):是消息和密钥的公开函数,产生定长的认证符3.Hash函数:是消息的公开函数,将任意长的消息映射为定长的Hash值,作为认证符11.2.1 消息加密●消息的自身加密可以作为一个认证的度量●对称密钥模式和公开密钥模式有所不同(一) 对称加密(1)作用:加密和认证(2)前提:明文具有可读性(3)困难:如明文为二进制文件或数字化X射线,攻击者可以发假消息●如何自动确定是否收到的密文可解密为可懂的明文?●一种解决办法是强制明文有某种结构(4)措施:错误检测码(帧校验序列、校验和,FCS):内部错误控制和外部错误控制(5)特点:A→B:C=E K(M)●提供保密性:只有A和B共享K;●提供认证只能发自A;传输中未被改变;需要某种数据组织形式/冗余;●不能提供数字签名接收方可以伪造消息;发送方可以否认消息。

(二) 公钥加密(1)(公钥)加密:保密性●提供保密性:●不提供认证,不保证真实性:(2)(私钥)加密:认证与签名●提供认证(明文要有某种结构以便区分真实的明文和随机的位串);●此时的加密结果即是签名;●不提供保密性。

(3)公钥加密:保密、认证与签名●用私钥签名,公钥加密●缺点:一次通信执行4次公钥算法11.2.2 消息认证码[1:234](一) 概述●消息认证码:使用一个密钥生成一个固定大小的小数据块,并加入到消息中,称为消息认证码(Message Authentication Code,MAC)或密码校验和(Cryptographic Chechsum)接收者可以确信消息M未被改变还可以确信消息来自所声称的发送者如果消息中包含顺序码(如HDLC,X.25,TCP),则接收者可以保证信息的正常顺序●特征:利用密钥生成一个固定长的(短)数据●假定:双方共享密钥K●类似于加密函数,但不需要可逆性,故从数学角度,比加密算法被攻击的弱点要少(二) 基本用法(a):认证●提供认证:只有A和B共享K(三) 基本用法(b):认证和保密——与明文有关的认证●提供认证:只有A和B共享K1●提供保密性:只有A和B共享K2(四) 基本用法(c):认证和保密——与密文有关的认证●提供认证:使用K1●提供保密性:使用K211.2.3 散列函数(一) (通过加密得到信息真实性的)问题●保密性与真实性是两个不同的概念●本质上,信息加密提供的是保密性而非真实性●加密代价大(公钥算法代价更大)●鉴别函数与保密函数的分离能提供功能上的灵活性●某些信息只需要真实性,不需要保密性广播的信息难以使用加密(信息量大)网络管理信息等只需要真实性政府/权威部门的公告(二) 概述●概念:hash码,也称为:哈希函数、hash值、消息摘要、数字指纹(Digitalfinger print)、压缩(Compression)函数、紧缩(Contraction )函数、数据鉴别码DAC(Dataauthentication code)、篡改检验码MDC(Manipulationdetection code)● H(M): 输入为任意长度的消息M; 输出为一个固定长度的散列值,称为消息摘要(MessageDigest)。

消息认证码算法范文

消息认证码算法范文

消息认证码算法范文消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的算法。

它使用一个密钥来计算一个固定长度的摘要,这个摘要可以用于验证消息是否被篡改过。

本文将介绍一些常用的消息认证码算法。

1.哈希函数哈希函数是一种将任意长度的输入映射成固定长度输出的函数。

常用的哈希函数有MD5、SHA-1、SHA-256等。

使用哈希函数作为消息认证码算法时,只需将消息与密钥一起输入哈希函数计算摘要,然后将摘要附加在消息末尾一起发送。

接收方通过相同的密钥和哈希函数计算摘要,并将计算得到的摘要与接收到的摘要进行比较,若一致则消息未被篡改。

2. HMAC(Hash-based Message Authentication Code)HMAC是基于哈希函数的消息认证码算法。

它通过使用两个不同的密钥对消息进行两次哈希计算,从而提高了消息认证的安全性。

具体的计算过程为,先将密钥进行hash补位得到两个长度相同的密钥K1和K2,然后将消息与K1进行hash计算得到中间结果,最后将中间结果与K2进行hash计算得到最终的摘要。

3. CMAC(Cipher-based Message Authentication Code)CMAC是基于对称加密算法的消息认证码算法。

它使用一个密钥和一个分组密码算法(如AES)来计算摘要。

具体的计算过程为将消息按照分组长度划分成若干分组,然后将第一个分组与密钥进行异或运算得到中间结果,接着将中间结果与后续的每个分组进行分组密码算法的加密操作,最后返回最后一个分组的结果作为摘要。

4. GMAC(Galois Message Authentication Code)总结:消息认证码算法是一种用于验证消息完整性和真实性的重要技术。

本文介绍了一些常用的消息认证码算法,包括哈希函数、HMAC、CMAC和GMAC。

不同的算法在实现细节和安全性上有所差异,选用合适的算法需要根据具体的应用场景和安全需求。

哈希函数与消息认证码MDSHA等的原理与应用

哈希函数与消息认证码MDSHA等的原理与应用

哈希函数与消息认证码MDSHA等的原理与应用在当今数字化的时代,信息的安全传输和存储变得至关重要。

哈希函数和消息认证码作为保障信息完整性和真实性的重要技术手段,发挥着不可或缺的作用。

接下来,让我们深入了解一下哈希函数与消息认证码 MDSHA 等的原理与应用。

哈希函数,简单来说,就是一种将任意长度的消息压缩成固定长度摘要的函数。

它具有一些独特的特性,比如单向性,即从哈希值很难反推出原始消息;抗碰撞性,意味着很难找到两个不同的消息产生相同的哈希值。

常见的哈希函数有 MD5、SHA-1、SHA-256 等。

以 SHA-256 为例,它会对输入的消息进行一系列复杂的位运算和逻辑操作,最终生成一个 256 位的哈希值。

无论输入的消息有多长,输出的哈希值长度始终固定。

这种特性使得哈希函数在很多领域都有广泛的应用。

在数据完整性验证方面,哈希函数大显身手。

比如,当我们从网上下载一个软件时,发布者通常会同时提供软件的哈希值。

我们在下载完成后,可以对软件计算哈希值,并与发布者提供的哈希值进行对比。

如果两者一致,那么就可以确认软件在传输过程中没有被篡改,保证了数据的完整性。

在密码存储中,哈希函数也起着关键作用。

我们不会直接将用户的密码明文存储在数据库中,而是存储密码的哈希值。

这样,即使数据库被攻击者获取,由于哈希函数的单向性,攻击者也很难从哈希值反推出原始密码,从而保护了用户的密码安全。

消息认证码(MAC)则是一种用于验证消息来源和完整性的机制。

它与哈希函数有相似之处,但又有所不同。

MDSHA 就是其中一种常见的消息认证码算法。

消息认证码的生成通常需要一个共享密钥。

发送方使用这个密钥和要发送的消息计算出一个认证码,并将消息和认证码一起发送给接收方。

接收方使用相同的密钥和接收到的消息重新计算认证码,如果计算出的认证码与接收到的认证码一致,就可以确认消息的来源和完整性。

在网络通信中,消息认证码可以防止恶意攻击者篡改或伪造消息。

基于分组密码的消息认证码研究

基于分组密码的消息认证码研究

基于分组密码的消息认证码研究基于分组密码的消息认证码研究随着互联网和信息技术的快速发展,网络通信已成为人们生活中不可或缺的一部分。

无论是个人通信还是商业交易,数据的安全性起着至关重要的作用。

为了确保数据在传输过程中不被篡改或伪造,消息认证码(Message Authentication Code,MAC)应运而生。

MAC是一种基于密码学技术的安全保障机制,用于验证信息的完整性和真实性。

分组密码是构建MAC算法的重要组成部分。

分组密码是一种对输入数据按块进行加密或解密的算法,其核心思想是把长的输入数据切分成一系列的块,并对每个块进行加密或解密操作。

常见的分组密码算法有DES(Data Encryption Standard)、AES(Advanced Encryption Standard)和3DES 等。

在分组密码的基础上,我们可以构建用于实现数据完整性检查的MAC算法,以保证数据在传输过程中不被恶意篡改。

一个常见的MAC算法是HMAC(Hash-based Message Authentication Code),它使用一个加密散列函数,将密钥与消息进行混合运算,并生成一个固定长度的认证码。

HMAC算法有以下几个主要步骤:首先,将密钥进行补位和规范化;然后,通过对补位后的密钥进行异或运算,生成两个内部密钥;接下来,将要认证的消息与内部密钥进行串联,然后对串联结果进行哈希运算;最后,根据哈希结果生成认证码。

虽然HMAC算法在实际应用中具有较好的安全性和可靠性,但它并非无懈可击。

因此,研究人员致力于提出新的基于分组密码的MAC算法,以增加系统的安全性和抵抗力。

其中,一个有潜力的改进是GCM(Galois/Counter Mode)模式。

GCM模式结合了AES分组密码算法和GMAC(Galois Message Authentication Code),可以在提供加密服务的同时实现数据完整性。

GCM模式通过在加密操作的同时计算消息的认证码,使得数据在传输过程中无法被篡改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2015-6-30
华中农业大学信息学院
25
K+ + Si
ipad
x1
x2
„„
xL
K+ opad + Hash函数
填充到b比特
S0
h(Si||x)
Hash函数 HMACk(x)
HMAC算法的流程图
2015-6-30 华中农业大学信息学院 26
HMAC

作为RFC2104
HMACK = Hash[(K+ XOR opad)||

MAC算法是一个多对一的函数

2015-6-30
华中农业大学信息学院
16
Message Authentication Code
2015-6-30
华中农业大学信息学院
17

若相同,则有:
接收方可以相信消息未被修改。 接收方可以相信消息来自真正的发送方。 接收方可以确信消息中含有的序列号是正确 的。
Hash[(K+ XOR ipad)||M)]] 其中 K+ 为在K左边填充0后所得的b位长的结果(b为每 一消息分组的位数) opad, ipad 都是指定的填充常量 多执行了3次hash压缩函数 算法可用于MD5, SHA-1, RIPEMD-160中的任何一个


2015-6-30
华中农业大学信息学院
12
2015-6-30
华中农业大学信息学院
13
2015-6-30
华中农业大学信息学院
14
12.2.2 消息认证码 (MAC)

一种认证技术


利用密钥来生成一个固定长度的短数据块(MAC), 并将该数据块附加在消息之后。
MAC的值依赖于消息和密钥
MAC = Ck(M)=C(M,K)

MAC 函数于加密类似,但 MAC 算法不要求可逆 性,而加密算法必须是可逆的。
2. 3.
2015-6-30
华中农业大学信息学院
19
2015-6-30
华中农业大学信息学院
20
2015-6-30
华中农业大学信息学院
21
§12.3 HMAC
密码hash函数作为MAC:
不用分组密码,而用hash函数来产生MAC
因为hash函数一般都较快 没有出口限制,(分组密码有出口限制)
( M1, M 2 ,..., M n )
为n个消分组,k位加密
密钥和n位的常数K1 T为消息认证码,也称为tag; Tlen是T的位长度;MSBs(X)是 位串的X最左边的s位。
2015-6-30
华中农业大学信息学院
37
12.7 认证加密

在通信中同时提供保密性和认证性的加密系统 提供认证和加密的通用方案

2015-6-30
华中农业大学信息学院
3

消息认证:验证所收到的消息确实是来自真 实的发送方且未被修改的消息,它也可验证 消息的顺序和及时性。 数字签名:是一种认证技术,其中的一些方 法可用来抗发送方否认攻击。(接收者可验 证但不能伪造)

消息认证
数字签名
2015-6-30
华中农业大学信息学院
4
HMAC 的强度与所嵌入 Hash 函数强度之间的关系。 Bellare 等人 (1996年)已经证明,如果攻击者已知若干(时间、消息-MAC)
对,则成功攻击 HMAC 的概率等价于对所嵌入 Hash 函数的下列
攻击之一: ① 即使对于攻击者而言,IV是随机的、秘密的和未知的,攻击
者也能计算Hash函数的压缩函数的输出。
华中农业大学信息学院
9
2015-6-30
华中农业大学信息学院
10
消息加密
公钥体制中:
加密不能提供对发送方的认证(公钥是公开的)
发送方可用自己的私钥进行签名 接收方可用发送方的公钥进行验证 保密性和可认证性
2015-6-30
华中农业大学信息学院
11
2015-6-30
华中农业大学信息学院
基于DES实现的数据认证算法
2015-6-30
华中农业大学信息学院
35
① 置IV = 0,并把报文的最后一个分组用0填充成64比特; ② 采用DES的CBC模式加密报文;
③ 抛弃加密的中间结果,只将最后一组密文(或最后一组
密文的左边M (16≤M≤64)比特)作为原始报文的MAC。
2015-6-30
MD5 时 的 HMAC 记 为 HMAC-MD5 , 选 用 SHA-1 时 的
HMAC记为HMAC-SHA1。
2015-6-30
华中农业大学信息学院
24
HMAC的设计目标是:
① 可不经修改而使用现有的Hash函数,特别是那些易 于软件实现的、源代码可方便获取且免费使用的Hash 函数; ② 其中嵌入的Hash函数可易于替换为更快或更安全的 Hash函数; ③ 保持嵌入的Hash函数的最初性能,不因用于 HMAC而使其性能降低; ④ 以简单方式使用和处理密钥; ⑤ 在对嵌入的Hash函数合理假设的基础上,易于分析 HMAC用于鉴别时的密码强度。

消息认证函数是实现消息认证的基础
其工作原理和通信领域常见的差错控制编码函数类似,
都是通过对原始报文进行某种运算,产生一个定长的输 出,这个输出是原始报文的“冗余信息”,即消息认证 码,有时也被称为密码校验和。
2015-6-30
华中农业大学信息学院
5
常用的消息认证函数包括如下两类: ① 利用加密函数作为消息认证函数:这种方法把原

接收方进行同样的MAC码计算并验证是否与发送过 来的MAC码相同
2015-6-30
华中农业大学信息学院
15
MAC 特性

MAC码是一个密码校验和 MAC = CK(M)=C(K, M)


消息M的长度是可变的
密钥K是要保密的,且收发双方共享。 产生固定长度的认证码 多个消息对应同一MAC值 但是找到同一MAC值所对应的多个消息应该是 困难的。
《信息保障与安全》
Chapter 12
消息认证码



消息认证需求 消息认证函数 消息认证码 基于Hash函数的MAC 基于分组密码的MAC:DAA和CMAC
2015-6-30
华中农业大学信息学院
2
§12.1 对认证的需求

可能的攻击:
1. 泄密:将消息透漏给未授权方 2. 传输分析:分析通信双方的通信模式 3. 伪装:欺诈源向网络中插入一条消息 4. 内容修改:对消息内容的修改 5. 顺序修改:对通信双方消息顺序的修改 6. 计时修改:对消息的延时和重播 7. 发送方否认:对消息否认 8. 接收方否认:对消息否认
作为Hash函数h的输入,得到l比特的输出;
⑥ 将第5步的输出作为HMAC算法的最终输出结果,即为消息x的消息 认证码HMACk(x)。
2015-6-30 华中农业大学信息学院 28
建立在嵌入 Hash 函数基础上的所有 MAC ,其安全性在某种程
度 上 都 依 赖 于 该 Hash 函 数 的 强 度 。 对 于 HMAC , 可 以 给 出华中农业大学信息学院3612.6.2 CMAC

适用于AES和3DES的CMAC
C1 E ( K , M 1 ) C2 E ( K ,[ M 2 C1 ]) C3 E ( K ,[ M 3 C2 ]) ... Cn E ( K ,[ M n Cn 1 K1 ]) T MSBTlen (Cn )
两层:产生认证符 + 验证
产生认证符的函数类型:
消息加密:消息的密文作为认证符。 消息认证码:消息和密钥的公开函数,产生定长
的值作为认证符。 MAC: message authentication code
Hash函数:将任意长消息映射为定长的hash值
作为认证符。
2015-6-30
D1 (64bit) D2 (64bit) Dn-1 (64bit) Dn (64bit)
+ 56bit K 56bit K 56bit K
+ 56bit K
+
DES加密
DES加密

DES加密
DES加密
O1 (64bit)
O2 (64bit)
On-1 (64bit)
On (64bit) MAC(16 to 64 bit)
hash函数不依赖于秘密钥,所以不能直接用于MAC 建议:
KeyedHash = Hash( Key | Message )
2015-6-30
华中农业大学信息学院
22
发送方A
k
||
接收方B
M || H
M
H(M||k)
||
H
比较
k
利用带密钥的Hash函数实现消息认证
2015-6-30
华中农业大学信息学院




为什么需要使用MAC?
有些情况只需要认证(如广播) 文档的持续保护(例如解密后的保护) ……


由于收发双方共享密钥,所以 MAC 不能 提供数字签名
2015-6-30
华中农业大学信息学院
18


对MACs的要求:
抗多种攻击(例如穷举密钥攻击) 且满足:
1.
已知一条消息和MAC, 构造出另一条具有同样 MAC的消息是不可行的 MACs应该是均匀分布的 MAC应该依赖于消息的所有比特位
华中农业大学信息学院
7
12.2.1 消息加密
相关文档
最新文档