消息认证
portal认证消息流程
portal认证消息流程Portal认证消息流程在当今数字化时代,我们越来越多地依赖于互联网来进行各种活动,例如购物、银行业务、社交媒体等。
然而,随着在线服务日益增多,用户的账户安全和身份验证也变得越来越重要。
为了保护用户的数据和隐私,许多网站和应用程序采用了认证流程,其中一种常见的方式是Portal认证消息流程。
在本文中,我们将逐步探讨Portal认证消息流程的详细步骤和功能。
第一步:用户请求认证在Portal认证消息流程的开始阶段,用户通过输入用户名和密码的方式请求认证。
这些凭据通常用于用户身份验证,并用于验证用户是否具有访问权限。
用户发送的请求将被传送到认证服务器,其中包含了认证消息。
第二步:认证服务器接收请求认证服务器是一个专门负责处理认证消息的服务器。
一旦认证服务器接收到用户的请求,它将开始验证用户的身份和凭据。
为了确保安全性,通常会使用加密协议,例如SSL(Secure Sockets Layer)或TLS(Transport Layer Security)来对认证消息进行保护。
第三步:验证用户凭据认证服务器将针对用户提供的凭据进行验证。
这通常涉及将用户提供的用户名和密码与存储在服务器上的数据库中的数据进行比对。
如果凭据匹配成功,服务器会生成一个令牌并将其发送回给用户。
第四步:生成令牌在Portal认证消息流程中,令牌被用于在用户和服务器之间进行安全通信。
认证服务器将生成一个令牌,并将其与用户的身份信息关联起来。
这个令牌具有一个唯一标识符,用于识别用户和用户的权限。
在实践中,一般会使用JSON Web Token(JWT)或OAuth令牌来生成和传输令牌。
第五步:令牌传递给用户认证服务器将生成的令牌发送给用户。
这通常是通过在HTTP响应中包含令牌的方式进行传递。
用户在收到令牌后,可以将其保存在本地,以便将来的请求中使用。
第六步:用户使用令牌访问资源一旦用户收到令牌,他们可以使用它来访问受保护的资源。
消息认证的概念
消息认证的概念
消息认证是指通过特定的算法和方法,确保消息的完整性和可信性,以防止消息被篡改、伪造或替换。
认证机制可以验证消息的真实性和发送者的身份,并确认消息在传输过程中未被篡改。
消息认证的概念通常包括以下几个方面:
1. 数据完整性:认证机制使用哈希函数等算法,对消息进行计算和生成摘要,将该摘要附加到消息中。
接收者可以使用同样的算法计算摘要,比对发送者附加的摘要,以判断消息是否在传输过程中被篡改。
2. 数据源认证:认证机制使用数字签名等方法,发送者使用私钥来对消息进行签名,接收者使用对应的公钥来验证签名的有效性。
通过验证签名,接收者可以确认消息的来源和发送者的身份。
3. 重播攻击防护:认证机制可能使用时间戳或随机数等方法,防止重放攻击的发生。
接收者会检查消息的时间戳或随机数,确保消息不是之前发送的重复消息。
4. 防止伪造:认证机制使用加密算法或密钥交换协议等方法,确保通信的安全性,防止第三方伪造消息,窃听通信或篡改通信内容。
消息认证在保障通信安全性和防范网络攻击方面起着重要的作用。
它可以用于保护重要数据和信息的传输,确保消息的可信度和完整性。
消息认证和杂凑函数课件
MAC算法的安全性基于哈希函数的不可逆性和加密 算法的强度。
MAC算法可以防止消息被篡改、伪造和重放攻击, 因为任何对消息的修改都会导致MAC标签验证失败 。
04
杂凑函数的实现
Hale Waihona Puke MD5杂凑算法摘要长度
MD5算法生成的摘要长度 为128位。
输入
MD5算法的输入为一个消 息。
处理过程
MD5算法首先将消息填充 至长度为512位,然后通 过一系列的压缩函数和模 运算,最终得到128位的 消息摘要。
THANK YOU
感谢观看
密码存储
杂凑函数可以将密码转化为固定 长度的摘要值,方便存储和比较
,同时保护密码的安全性。
数据完整性校验
杂凑函数可以用于数据完整性校 验,通过计算数据的哈希值并与 事先存储的哈希值进行比较,判
断数据是否被篡改。
数字签名
杂凑函数可以用于生成数字签名 ,用于鉴别消息的发送者身份并
防止消息被篡改。
消息认证和杂凑函数在物联网中的应用
03
消息认证码的生成
MAC算法的原理
消息认证码(MAC)是一种基于密钥的认证方法,用于验证消息的完整 性和真实性。
MAC算法基于哈希函数和对称加密算法,其中哈希函数用于生成固定长 度的摘要,对称加密算法用于加密消息和MAC标签。
MAC算法原理包括三个主要步骤:密钥生成、消息处理和MAC标签验证 。
应用
MD5广泛应用于数据完整 性验证和密码存储等领域 。
SHA-1杂凑算法
摘要长度 SHA-1算法生成的摘要长度为 160位。
应用 SHA-1广泛应用于数据完整性验 证和密码存储等领域,且在安全 性上比MD5更高。
输入 SHA-1算法的输入为一个消息。
消息认证(Message Authentication)
Message Digest
目标:确保信息的完整性(Integrity) 特色: (1) 不需密钥 (2) 任意长信息输入,固定长摘要输出 (3) 找出两个不同的输入,使输出相同在计算上很难 常用系統: MD5 (RFC 1321) SHA-1 (FIPS 180-1)
Structure of Message Digest
Message authentication code
• Prerequisite: A and B shares a key K
– Can be a session key
• MAC: a short fixed-size data block, depending on the message M and the shared key K • MAC(K,M)=CK(M) • Sender: M||CK(M) • Receiver: on receiving M’|C’
HMAC的设计目标
• Hash函数不使用密钥,不能直接用于MAC • HMAC要求 –可不经修改使用现有hash函数 –其中嵌入的hash函数可易于替换为更快和更安 全的hash函数 –保持嵌入的hash函数的最初性能,不因适用于 HAMC而使其性能降低 –以简单方式使用和处理密钥 –在对嵌入的hash函数合理假设的基础上,易于 分析 HMAC用于认证时的密码强度
MD5不再安全!?
安全的杂凑函数在设计时必须满足两个要求
● ●
找到两个不同输入而得到相同的输出值在计算上是不可行的—— 抗碰撞
给定一输出值找出输入值在計算上是不可行的——单向性
2004年在Crypto會議,來自山東大學的王出一种可以快速找到碰撞的方法 受影响的算法—— MD5、HAVAL-128、MD4、RIPEMD SHA-0及減弱条件下的SHA-1不安全——在任何初始值下 用240次hash运算可以找出SHA-0的碰撞 SHA-1预计至2010年也会被破解
消息认证(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)
请简述消息认证码的使用步骤 -回复
请简述消息认证码的使用步骤-回复消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的技术。
它是一种基于密钥的哈希函数,用于生成消息的固定长度校验码。
在使用消息认证码时,需要经历以下步骤:1. 选择适当的哈希函数:首先,需要选择适合的哈希函数。
常用的哈希函数有MD5、SHA-1、SHA-256等。
在选择时,需考虑哈希函数的安全性和效率,并根据具体的应用场景来确定。
2. 选择合适的密钥:生成消息认证码需要使用密钥。
密钥的选择至关重要,必须保证足够长且随机性能良好。
一般情况下,密钥长度的选择要根据哈希函数的要求以及所需的安全性等因素来确定。
3. 消息处理:对待发送的消息进行预处理。
预处理的方式与所选择的哈希函数有关。
例如,使用SHA-1哈希函数时,可以先对消息进行填充和分块处理,再进行哈希运算。
4. 设置密钥:将所选的密钥与处理后的消息进行组合。
这一步通常是将密钥与消息进行异或运算,以确保消息与密钥之间的关联性,避免篡改。
5. 生成MAC:通过运用哈希函数对密钥和消息的组合进行计算,得到消息的MAC值。
具体的计算方式也与所选的哈希函数有关。
6. 传输消息:将生成的MAC值与消息一起传输给接收方。
可以将MAC 值直接附加在消息后面,或者通过其他方式传递。
7. 接收消息:接收方收到消息后,进行以下验证步骤:a. 选择相同的哈希函数和密钥:接收方需要选择与发送方相同的哈希函数和密钥。
只有相同的哈希函数和密钥才能正确地验证消息的完整性和真实性。
b. 消息处理:接收方对接收到的消息进行预处理,与发送方的处理方式一致。
c. 设置密钥:接收方将所选的密钥与处理后的消息进行组合,并与接收到的MAC值进行比较。
d. 验证MAC:接收方通过对组合后的消息和密钥进行哈希计算,得到新的MAC值。
然后,将新的MAC值与接收到的MAC值进行比较。
如果两者一致,则说明消息未被篡改,否则说明消息已被更改。
25消息认证过程
第十章 认证、哈 希算法
1. Message Authentication
消息认证包括: 消息完整性 身份识别 不可否认性
2. 消息认证码 (MAC)
message authentication code (MAC) 签名的电子等价形式 与消息同时发送 通过一些算法, 依赖于消息及双方共享的秘密 消息可以是不任意长 MAC 可以是任意长,但常选固定长度 这需要hash function “压缩”消息成固定长度
3. 消息认证过程
4. 利用对称密码进行认证
利用对称密码加密的消息可以作为认证 内容 因为只有密钥的拥有者才可以生成 (要求消息有一定的冗余度) 但不能解决消息的不可否认性 (无法证明谁生成的消息)
5. Hashing Functions
把任意长的消息“压缩”成固定长 的消息的算法 数字签名时,常被使用 通常,HASH 函数是公开的 输出长度应足够大,防止生日攻击 64-bits 认为太小 通常 128-512bits
6. Hash 函数设计原理
H能用于任何大小的数据分组;
H产生定长输出; 对任意给定的x, H(x)要相对易于计算,使得软硬件 实现都实际可行; 对任意给定的码h, 寻求x使得H(x)=h在计算上是不 可行的(单向性); 任意给定分组x, 寻求不等于x的y, 使得H(y)= H(x) 在计算上不可行(弱抗攻击性); 寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可 行(强抗攻击性);
故存在一天中至少有两个人生日的概率 为 J −1 j
⎛ ⎞ p = 1 − ∏ ⎜1 − ⎟ N⎠ j =1 ⎝
由于, e x 1 − x ≈ e −。因此有 故当x较小时有 p ≈ 1− ∏e = 1− e (11.6)
消息认证码
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的分组密码算法。
消息认证和数字签名
可编辑ppt
4
1 消息认证
消息认证
消息认证就是验证消息的完整性.当接收方 收到发送方的报文时,接收方能够验证收到 的报文是真实的未被篡改的。
保密和认证同时是信息系统安全的两个方面, 但它们是两个不同属性的问题,认证不能自 动提供保密性,而保密性也不能自然提供认 证功能。
可编辑ppt
5
1 消息认证
可编辑ppt
15
2 数字签名
消息认证与数字签名的区别:
前者能验证消息来源及完整性,防范第三者; 后者在收发双方产生利害冲突时,解决纠纷。
可编辑ppt
16
2 数字签名
数字签名需要解决的一些问题
1.签字后的文件可能被B重复使用。如果签字 后的文件是一张支票,B很容易多次用该电子 支票兑换现金,为此A需要在文件中加上一些 该支票的特有的凭证,如timestamp等,以防 止上述情况发生。
可编辑ppt
13
2 数字签名
数字签名的设计要求 签名必须是依赖于被签名信息的一个位串模板 签名必须使用某些对发送者是唯一的信息,以防止 双方的伪造与否认 必须相对容易生成该数字签名 必须相对容易识别和验证该数字签名 伪造该数字签名在计算复杂性意义上具有不可行性, 既包括对一个已有的数字签名构造新的消息,也包 括对一个给定消息伪造一个数字签名 在存储器中保存一个数字签名副本是现实可行的
送过消息
可编辑ppt
3
1 消息认证
认证则主要是为了防止第三方的主动攻击 。 认证系统的目的有两个: 第一, 信源识别,即验
证发信人确实不是冒充的; 第二, 检验发送信息 的完整性, 也就是说, 即使信息确实是经过授权 的信源发送者发送的, 也要验证在传送过程中 是否被篡改, 重放或延迟。 在认证理论中一般将信源识别和发送信息的完 整性检验两者作为一个整体进行讨论。
消息认证的三种方法
消息认证的三种方法
消息认证的三种方法包括:
1. 密码认证:使用预先共享的密码或密钥来验证消息的完整性和真实性。
发送方使用密钥对消息进行加密,并将其与消息一起发送。
接收方使用相同的密钥对消息进行解密,并验证消息是否与发送方发送的密文匹配。
2. 数字签名认证:使用公钥密码学技术创建和验证数字签名来验消息的完整性、真实性和身份。
发送方使用其私钥对消息进行数字签名,然后将消息和签名一起发送。
接收方使用发送方的公钥来验证签名,以确保消息是由发送方提供且未被篡改的。
3. 消息认证码(MAC)认证:使用一个密钥和散列函数来创
建和验证MAC来验证消息的完整性和真实性。
发送方使用密
钥和散列函数对消息进行计算,并将生成的MAC与消息一起
发送。
接收方使用相同的密钥和散列函数对收到的消息进行计算,并验证计算出的MAC是否与发送方发送的MAC匹配。
这种方法还可以防止消息被篡改,因为即使消息的内容被轻微更改,计算出的MAC也会与发送方发送的MAC不匹配。
这些方法可以单独或结合使用,以提供更强的消息认证和安全性。
举例说明消息认证的三种方法
举例说明消息认证的三种方法消息认证是确保消息的完整性、真实性和不可否认性的重要手段。
下面就来举例说明消息认证的三种方法。
第一种方法是基于密码的消息认证码。
它的步骤呢,就是发送方和接收方共享一个密钥,发送方利用这个密钥和要发送的消息计算出一个认证码,然后将消息和认证码一起发送给接收方。
接收方收到后,用同样的密钥和收到的消息计算出认证码,与接收到的认证码进行比较。
这其中要注意密钥的安全性,可不能轻易泄露呀!在这个过程中,只要密钥不被破解,那安全性可是相当高的呀,稳定性也很不错呢。
这种方法适用于很多场景,比如网络通信中对数据的认证。
想想看,要是没有它,那网络上的信息还不知道会乱成啥样呢!比如说在网上银行转账时,利用这种方法就能保证交易信息的准确无误,不会被篡改。
第二种方法是数字签名。
这就好像是给消息盖上一个独一无二的印章!发送方用自己的私钥对消息进行处理,得到数字签名,接收方用发送方的公钥来验证签名的真实性。
这里面的关键就是保护好私钥哦!这过程的安全性那是杠杠的,稳定性也没得说。
它的应用场景也很多呀,比如电子合同的签署,这多靠谱呀!就好像你签了一份重要合同,别人想假冒可没那么容易。
第三种方法是哈希函数。
发送方对消息计算哈希值,然后把消息和哈希值一起发送,接收方收到后重新计算哈希值进行比较。
这个简单又好用呢!注意哈希函数的选择要合适哦。
它的安全性和稳定性也不错呢。
常用于文件完整性的验证,你想想,下载一个大文件,用它来验证一下是不是完整的,多放心呀!就拿我们平时用的手机支付来说吧,这里面肯定用到了消息认证的方法呀,不然我们怎么能放心地付钱呢?正是因为有了这些可靠的消息认证方法,我们的信息安全和交易安全才有了保障呀!所以说呀,消息认证真的是太重要啦!消息认证就是我们信息世界的守护神呀,保护着我们的信息不被侵犯,让我们能安心地在信息的海洋里遨游!。
信息安全实际原理及具体应用第5章消息认证
消息认证码的基本用途
• 只提供消息认证,不提供保密性。(见前) • 提供消息认证和保密性:
A
B
MKC||KE KDCM KC 比较 1
2 2 EK2[M || CK1 (M )]
– 与消息认证码不同的是, hash码的产生过程中并不使用 密钥。
– Hash码是所有消息的函数,改变消息的任何一位或多位, 都会导致hash码的改变。
– Hash算法通常是公开的。 – 又称为:哈希函数、数字指纹(Digital finger print)、压
缩(Compression)函数、紧缩(Contraction )函数、 数据鉴别码DAC(Data authentication code)、篡改 检验码MDC(Manipulation detection code)
• 平均来讲,若k=x*n,则需x次循环才能找到正确的密钥。 • 所以,用穷举法攻破MAC比攻破加密算法要困难得多。
对MAC的攻击—攻击算法
• 考虑下面的算法:
消息M=(X1‖X2‖…‖Xm)是由64比特长的分组Xi(i=1,…,m)链接而成 MAC算法是:
(M ) X1 X2 Xm
CK (M ) EK (M )
消息认证码用于认证
MMCKA比C 较
• A和B共享密钥K • A计算MAC=Ck(M),
• M和MAC一起发送
到B
• B对收到的M,计算 MAC,比较两个 MAC是否相同。
如果两个MAC相等,则:
1. 接收方可以相信消息未被修改,因为如果攻击者改变了消 息,由于不知道k,无法生成正确的MAC。
消息认证与数字签名
生日攻击实例
A准备两份合同M和M′,一份B会同意,一份会 取走他的财产而被拒绝 A对M和M′各做32处微小变化(保持原意),分别产 生2^32个64位hash值 根据前面的结论,超过0.5的概率能找到一个M和一 个M′,它们的hash值相同 A提交M,经B审阅后产生64位hash值并对该值签名, 返回给A A用M′替换M
消息认证与数字签名
计算机科学系 邹瑞源
问题提出
密码学被应用到哪些方面?
信息认证
消息认证的含义 数据起源认证 验证信息在传送过程中的正确性 消息认证的检验内容 报文的源,内容真伪,时间有效性等 验证数据完整性的方法 检错码和纠错码 消息认证模式
消息认证
消息认证技术 (1)消息加密函数(Message encryption)
返回
需仲裁的签名
X
A
Y
使用对称密码算法,明文传输 密文传输? XA: M || EkXA[ IDx || H(M) ] AY: EkAY[ IDx || M || EkXA[ IDx || H(M) ] ||T] 说明:kXA ,kAY 分为X和A、A和Y的共享密钥
T:时戳(不是旧消息的重放) Idx:x的标识符 H(M):M的摘要 方法缺陷:若A不公正,与X共谋否认签名,或与Y串 通伪造签名
数字签名
消息认证与数字签名的区别: 前者能验证消息来源及完整性,防范第三 者;后者在收发双方产生利害冲突时,解 决纠纷。 应用 数字水印
摘要签名
过程
H2
消息M 消息M 消息M
比较
Dk2
H
Ek1
S
S
H1
把签名过程从对原文件转移到一很短的hash值上,可以提高效率
消息认证和散列(Hash)函数
消息认证和散列(Hash)函数1 散列函数1.1散列函数的概念1.2 简单散列函数的构造1.3 作为消息认证的散列函数应具有的特性2 基于散列函数的消息认证方式2.1 对称密钥加密方式2.2 公开密钥与对称密钥结合的加密方式2.3公共秘密值方式在网络通信环境中,可能存在下述攻击:1.泄密:将消息透露给没有合法密钥的任何人或程序。
2.传输分析:分析通信双方的通信模式。
在面向连接的应用中,确定连接的频率和持续时间;在面向业务或无连接的环境中,确定双方的消息数量和长度。
3.伪装:欺诈源向网络中插入一条消息,如攻击者产生一条消息并声称这条消息是来自某合法实体,或者非消息接受方发送的关于收到或未收到消息的欺诈应答。
4.内容修改:对消息内容的修改,包括插入、删除、转换和修改。
5.顺序修改:对通信双方消息顺序的修改,包括插入、删除和重新排序。
6.计时修改:对消息的延时和重放。
7.发送方否认:发送方否认发送过某消息。
8.接收方否认:接收方否认接收到某消息。
其中,对付前两种攻击的方法属于消息保密性范畴;对付第3种至第6种攻击的方法一般称为消息认证;对如第7种攻击的方法属于数字签名;对付第8种攻击需要使用数字签名和为抗此种攻击而涉及的协议。
这样归纳起来,消息认证就是验证所收到的消息确实来自真正的发送方且未被修改的消息,它也可验证消息的顺序和及时性。
任何消息认证在功能上基本可看做有两层。
下层中一定有某种产生认证符的函数,认证符是一个用来认证消息的值;上层协议中将该函数作为原语使接收方可以验证消息的真实性。
产生认证符的函数类型通常可以分为以下三类:1.消息加密:整个消息的密文作为认证符。
2.Hash函数:它是将任意长的消息映射为定长的hash值得公开函数,以该hash 值作为认证符。
3.消息认证码(MAC):它是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。
实际上消息认证码也属于Hash函数的范畴,它是带密钥的Hash函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
消息认证方式
(3) 对散列值使用公开密钥密码算法进行加密,并将 结果连接到消息之后,密钥为发送方A私有。
消息认证方式
(4) 通信双方共享一个秘密值S,将S串接到消息头部,然后 计算散列值,该散列值作为消息认证码。
散列算法SHA-1
散列函数的安全要求
1. H能用于任何大小的数据分组能产生定长的输出; 2. 对于任何给定的x, H(x)要相对易于计算; 3. 对任何给定的散列码h 寻找x使得H(x)=h在计算 上不可行(单向性); 4. 对任何给定的分组x ,寻找不等于x的y ,使得 H(x)=H(y)在计算上不可行(弱抗冲突); 5. 寻找任何的(x,y) 使得H(x)=H(y)在计算上不可行 (强抗冲突)。
散列算法SHA-1
SHA-1中迭代过程
• 每个循环以当前处理的512比特分组Yq和160比特的缓存值
ABCDE为输入,然后更新缓存的内容,每个循环也使用一 个额外的常数值Kt ,其中0 ≤ t ≤ 79。Kt值用十六进制表示。
散列算法SHA-1
SHA-1中的Wt 产生
• 80个32比特字Wt 的值是通过如下过程由512比特的分组
消息认证方式
(1) 消息经过散列运算后,将散列值连接到消息之后, 然后对所有数据(原消息+对应散列值)使用单钥加 密,密钥为发送方A和接受方B共享,保证消息来自 A并且不被篡改。
消息认证方式
(2) 仅仅对散列值使用对称密码算法加密,并将结果 连接到消息之后,密钥为发送方A和接受方B共享, 保证散列值来自A并且不被篡改 。
消息认证的练习题
Alice希望通过长度为2bit的信息发送单位信息(1或0)给Bob,他 们有4种可能的密钥进行认证,请问: (1) 下表对于A的操作是必需的,请为Bob构造类似的表格用于 认证
(2)攻击者冒充Alice的成功概率是多少?
(3)攻击者对截获的消息进行替代的成功概率是多少?
密钥/消息 1 0 00 1 01
数字签名
• RSA数字签名的安全性质
依赖性。散列函数取得报文的信息摘要,从而使对之 进行加密产生的签名依赖于消息。
唯一性。RSA私钥的保密性使得签名是唯一的。 可验证。Hash函数的输出信息摘要的字节数很少如 SHA的160字节,产生签名相对简单;同样地签名的识别 与证实相对简单。 抗伪造。散列函数的单向性与抗冲突性,还有RSA私 钥的保密性,使得伪造数字签名不可行。
散列算法SHA-1
SHA-1输出(散列值)
• 输出:所有L个512比特的分组处理完成之后,第L
阶段产生的输出便是160比特的报文摘要。
散列算法SHA-1
SHA-1的安全性(和MD5以及 RIPEMD-160的比较)
1. 抗强力攻击的能力:对与弱碰撞攻击这三个算法都是无懈可击 的,MD5 很容易遭遇强碰撞的生日攻击,而SHA-1和 RIPEMD-160目前是安全的*。 2. 抗密码分析攻击的能力:对MD5的密码分析已经取得了很大的 进展,RIPEMD-160 设计时就考虑了抗已知密码分析攻击, SHA-1也有很高的抗密码分析攻击的能力,RIPEMD-160 应该 比SHA-1有更强的抗密码分析攻击的能力。 3. 计算速度:三个算法的主要运算都是模232加法和按位逻辑运算, 因而都易于在32 位的结构上实现,但SHA-1和RIPEMD-160的 迭代次数较多、复杂性较高,因此速度较MD5慢。 4. 存储方式:低位字节优先与高位字节优先都没有明显的优势。 • *2005年山东大学王小云教授给出一种攻击方法,用269次操作可 以找到两个独立的消息使得它们有相同的SHA-1值,而此前认为 需要280的操作。
日攻击的方法无法奏效。
散列算法SHA-1
• 散列函数的安全要求(判断题)
1. 使用接收者的公钥加密信息可以实现信息认证。 2. 消息认证码是在一个公开函数作用下,产生固定 长度的数值作为认证码。 3. 设强抗碰撞的散列函数h(.)可以将任意长的消息 散列成定长的n比特散列值,对于所有的消息x, x’,x≠x’,都有h(x) ≠h(x’). 4. 如果散列函数h(.)是强抗冲突的,那么h(h(.))也是 强抗冲突的。
散列算法SHA-1
• SHA-1中的数据处理框架
处理512比特分组 序列核心是一个包含 四个循环的模块,每个 循环由20个处理步骤 组成,四个循环结构相 似但使用不同的原始 逻辑函数。
散列算法SHA-1
• SHA-1中单个步骤处理过程
A,B,C,D,E←(E+ft(B,C,D)+S5(A)+Wt+Kt),A,S30(B),C,D
• 给定消息M,进行下述工作。 (1) 选择秘密随机数k∈Zp*;
(2) 计算 H(M);
(3) 计算
• r=gk mod p • s=(H(M)-xr)k--1 mod (p-1) • (r,s)作为数字签名.
2
3 4
10
01 11
00
11 10
数字签名
安全目标
前面介绍的消息认证能保护通信双方以防止第三方的 攻击,却无法防止通信双方的一方对另一方的欺骗,因此除 了认证之外还需要其它机制来防止通信双方的抵赖行为,最 常见的解决方案就是采用数字签名。
数字签名
数字签名的要求
• 传统签名的基本特点: • 能与被签的文件在物理上不可分割 • 签名者不能否认自己的签名 • 签名不能被伪造 • 容易被验证 • 数字签名是传统签名的数字化,基本要求: • 能与所签文件“绑定” • 签名者不能否认自己的签名 • 签名不能被伪造 • 容易被自动验证
散列算法SHA-1
散列函数的安全要求:第二类生日攻击
• (由存在碰撞转化成特定碰撞)
• 敌手对消息M(m比特)产生2m /2个变形,同时准备
一个假冒的M’,并对M’产生2m /2个变形。 • 敌手分别在两个消息集合中找到散列值相同的m1 和m2,概率大于0.5 • 将m1交给A签名,由于m1 和m2的散列值相同,所 以A对两个消息的签名也相同。 • 敌手将此签名和M’一起交给欲接受者。
散列算法SHA-1
散列函数的安全要求:第一类生日攻击
• H有n个输出,H(x)是一个特定的输出,如果对H随
机取k个输入,至少有一个y使H(y)=H(x)的概率为 0.5时,k有多大?
• H(y)=H(x)的概率为1/n,不等的概率为1-(1/n)。取
k个值都不等的为[1-(1/n)]k.至少有一个相等的概率 为1-[1-1/n]k,近似等于k/n。所以概率为0.5,k为 n/2。
数字签名
ElGamal签字体制
参数 • p:一个大素数; • g:是Zp中乘群Zp*的一个生成元或本原元素; • M:消息空间,为Zp*; • S:签字空间,为Zp*×Zp-1; • x:用户私钥x属于Zp*; • y:用户公钥,y=gx mod p • p,g,y为公钥,x为私钥。
数字签名
ElGamal签名过程
散列算法SHA-1
迭代型散列函数的一般结构
散列算法SHA-1
• SHA-1工作过程示意图
散列算法SHA-1
SHA-1中的数据填充
• SHA-1算法的输入为不超过264比特长的任意消息,
输出为一个160 比特长的消息摘要。输入按512比 特长的分组进行处理处理过程如下: 对消息进行填充在原始的消息后面附加填充比特 串(填充是必须的),使得数据长度比特数与448 模512同余,填充的比特数规定第1位是1,其余各 位是0;
散列算法SHA-1
SHA-1中的数据预处理
附加消息的长度:用64比特的二进制数表示原始消息的 长度后,所得的64 比特数据附加在第1步所得的数据后 面,高位字节优先; 初始化MD缓存:使用一个160比特的缓存来存放该散列 函数的中间及最终结果,该缓存可以表示为5个32比特 的寄存器,这些寄存器被初始化为以下32比特长的整数 (十六进制表示): • A=67452301 B=EFCDAB89 C=98BADCFE • D=10325476 E=C3D2E1F0
散列算法SHA-1
发展历史
Ron Rivest于1990 提出了一个称为MD4的散列函数,它的设计 没有基于任何假设和密码体制,这种直接构造方法受到人们的 广泛关注,不久它的一些缺点也被提出。为了增强安全性和克 服MD4的缺陷,Rivest于1991年对MD4 作了六点改进,并将改 进后的算法称为MD5。 MD5曾经是使用最普遍的安全散列算法,然而随着对MD5分析 的深入,从密码分析和强力攻击的角度来看,MD5也被认为是 易受攻击的。 安全散列算法SHA (Secure Hash Algorithm), 由美国国家标 准和技术协会NIST 提出并作为联邦信息处理标准(FIPS PUB 180 )在1993年公布。1995年又发布了一个修订版FIPS PUB 180-1 通常称为SHA-1 ,SHA是基于MD4算法的。
散列算法SHA-1
散列函数的安全要求:第一类生日攻击
• 会场参加会议的人中,问使参会人员中至少有两个同
日生的概率超过0.5的参会人数仅为23人。 t个人都不同时生日概率为 至少有两人同日生的概率为 解之,当t= 23时,p>0.5。 对于n比特散列值的生日攻击,由上式可计算出,当 进行2n/2次的选择明文攻击下成功的概率将超过0.63。
散列算法SHA-1
• 利用散列函数的HMAC
MAC可用分组加密算法产生, ANSI标准(X9.17): M=(X1,X2,…,Xt)ΔM1=EK(X1), ΔMj+1=EK(Xj+1⊕ΔMj), 1≤j<t 缺点:速度慢,加密算法出口受 限制 hash函数可用来构造MAC: HMAC作为RFC2104并在 SSL中使用
消息认证方式
消息散列码
•
散列函数(又称杂凑函数)是对不定长的输入, 产生定长输出的一种特殊函数h = H ( M ), 其中M是变长的消息,h是定长的散列(码) 值或称为消息摘要,散列函数H 是公开的。 散列值在信源处被附加在消息上。