消息认证与数字签名 您所在的位置:网站首页 数字签名技术是用来作为 消息认证与数字签名

消息认证与数字签名

2023-10-19 16:38| 来源: 网络整理| 查看: 265

消息认证消息认证函数消息加密对称加密公钥加密 消息认证码(MAC)消息认证码和数字签名的区别基于DES的消息认证码基于Hash的认证码 数字签名直接数字签名EIgamal数字签名方案算法描述生成签名对验证签名对验证正确性 Schnorr数字签名方案方案描述生成密钥对产生签名验证签名

在网络消息的传输过程中会遇到下述攻击:

泄密:将消息透露给未授权的单位。传输分析:即第三方分析通信双方的通信行为,作为推测通信消息的依据。伪装:第三方将信息发送源装作另一实体。内容修改:攻击者将发送中的消息拦截,并将消息删除、插入和重新排序。顺序修改:将通信双方的消息顺序修改。计时修改:将消息延时或重播。发送方否认:发送方否认发送了消息。接收方否认:接收方否认收到了消息。 消息认证

消息认证的左右主要有两个:(1)验证信息来源的真实性(2)验证信息的完整性。即防止上述的3-6的攻击。

消息认证函数

产生消息认证的函数类型共有三种:

Hash函数:利用Hash函数的collision-free 和 不可逆性,将任意长度的消息杂糅、映射为固定长度的消息特征。具体在细节在Hash函数消息加密:对整个消息加密的密文作为认证。消息认证码(MAC):他是消息和密钥的函数,它产生定长的值,作为认证符。 消息加密 对称加密

对称加密由于只有通信双方共享密钥,也就是说,收到消息的一方能够确信该消息是由发送方产生的。 但是,这存在一种问题便是,接收方不管收到什么消息都需要经过Y=(D,K),Y可能并非是合法密文。

解决该方法的问题之一便是,加入一个易于识别的结构,并且不能通过加密函数是不能重复这种结构的。例如:FCS(帧校验和)或校验和。

公钥加密

直接使用公钥加密可提供保密性,但是不能提供认证。用公钥加密确实能够保证消息在发送过程中不被盗取。 但是若是仅仅用B的公钥加密,由于公钥的公开性,所以不能确定发送方,第三方可以伪装合法用户发送消息。 为了避免以上的情况,可以先用A的私钥对消息进行加密,再用B的公钥加密。但是,这样的加密和解密一共需要四次复杂的公钥运算。

消息认证码(MAC)

消息认证码(Message authentication code,MAC)是经过特定算法后产生的一小段固定长度的信息,并附加在消息后面。用以检查某段消息的完整性,以及作身份验证。消息认证码的算法中,通常会使用带密钥的散列函数(HMAC),或者块密码的带认证工作模式(如GCM,CCM)。

要生成 Mac ,涉及三种算法:

一个密钥生成算法,用来生成密钥一个签名算法,根据密钥和信息来生成 Mac一个验证算法,给定密钥和 Mac ,验证是否正确

若A、B共享密钥K,A向B发送消息M,则A计算MAC=C(K,M),其中C为认证函数。消息与MAC一同发送给B。B收到M‘后用相同的密钥进行相同认证函数的计算得到MAC,将MAC进行比对,若相同,且当只有A、B知道密钥K的情况下,可知道: (1)接收方可以相信消息未被修改。因为,攻击者在不知道密钥的情况下修改消息,不知道如何才能修改MAC才能匹配。 (2)接收方可以确信消息的发送方,因为只有A和B知道密钥。 (3)若消息中含有序列号,则可以确信消息的顺序没有被修改。

消息认证码和数字签名的区别

Mac 跟数字签名也有很多区别和联系的。

Mac 跟数字签名也有类似的地方,因为都可以确认发出人身份,同时判断文件有无被篡改。

但是区别也是明显的,因为生成 Mac 和验证 Mac 需要的密钥是同一个,属于对称加密的范畴。而数字签名属于非对称加密,生成签名用私钥,而验证签名是否有效要用公钥。Mac 的工作方式决定了,发送方和接收方要事先共享同一个密钥,这也是对称加密算法的共性。数字签名的接收方是不能再生成签名的,也就是说不可伪造。但是 Mac 的接收方因为手里也有密钥,所以可以对其他信息生成 Mac 。

这就是 Mac 和数字签名的对比了。转自知乎

而消息认证码虽然属于对称加密的范畴,但是区别在于:MAC并不要求可逆,而加密要求。另外,MAC的输出是定长,而对称加密的输出与输入长度相关。

基于DES的消息认证码

CBC-MAC 建立在DES之上,是使用最为广泛的MAC算法之一。该认证算法采用DES运算的米文库链接(CBC)方式。其初始向量为0,需要认证的数据需分成连续的64位分组D1、D2、…DN,若最后一组不足64位,则以0填充。 其主要算法为: O 1 = E ( K , D 1 ) O_{1}=E(K,D_{1}) O1​=E(K,D1​) O 2 = E ( K , [ D 2 ⊕ O 1 ] ) O_{2}=E(K,[D_{2}⊕O_{1}]) O2​=E(K,[D2​⊕O1​]) . . . ... ... O N = E ( K , [ D N ⊕ O N − 1 ] ) O_{N}=E(K,[D_{N}⊕O_{N-1}]) ON​=E(K,[DN​⊕ON−1​]) 该加密算法也可以由AES等代替。考虑到DAC的安全性,分组长度应当选的更长,还可以在 第一块之前添加一个新块填入原始消息长度。

基于Hash的认证码

近些年,基于Hash的消息认证逐渐走进人们的视野。主要原因是SHA等Hash散列函数一般都比对称加密的执行速度快。在诸多的基于散列函数的消息认证码中,HMAC是使用最多的方案,如SSL就使用HMAC来完成认证。 HMAC的设计目标:

不用修改就可以使用合适的散列函数,并且散列函数在软件方面表现很好当发现有更快或更安全的散列函数时,能够很容易的完成底层替换密钥的使用与操作简单很好的保持原有散列函数的性能若知道已嵌入Hash的函数强度,则完全可以知道认证函数抗密码分析的强度 数字签名

消息认证可以保护消息不受第三方的恶意攻击,但是他不能保证通信的另一方的恶意攻击。 如:(1)A可以伪造一条消息说消息发自B。(2)因为A可以伪造消息,B可以否认他发送过某条消息。

所以数字签名的必须满足:

需要能够验证签名者、签名日期、时间还需要认证签名内容签名需要能被第三方仲裁,解决纠纷 直接数字签名

直接数字签名只涉及通信双方。

用共享的密钥(对称加密)对整个消息和签名加密,这里是先进行签名,然后再执加密。只有这样在发生争执时,第三方才可以查看消息,因为如果先加密再签名的话,第三方需要知道解密密钥才能知道消息。

但是这样的签名的安全依赖于发送方的密钥的保密性。如果发送方的密钥泄露,或者发送方声称密钥丢失否认发送了消息,我们可以要求签名的消息中包含一个时间戳,以及在密钥被泄密后立即向管理中心报告。即使用数字证书的证书管理中心(CA)。

EIgamal数字签名方案 算法描述

同EIGamal加密一致,其基本元素是素数q和α,其中,α是q的原根。 用户A产生私钥XA;A的公钥是{q,α,YA}。 具体的密钥产生细节在EIGamal算法概述

生成签名对

A为了对M进行签名,用户A首先计算m=Hash(M),m∈[0,q-1]。 (1)选择证书K,使得满足1≤K≤q-1以及gcd(K,q-1)=1。 (2)计算S1=αKmod q。 (3)计算K-1mod (q-1)。 (4)计算S2=K-1(m-XAS1)mod (q-1)。 (5)签名对(S1,S2)。

验证签名对

(1)计算V1=αmmod q。 (2)计算V2=(YA)S1 S1S2 若V1=V2则签名合法。

验证正确性

当V1=V2时, α m ≡ Y A S 1 S 1 S 2 m o d q α^{m} \equiv Y_{A}^{S_{1}} S_{1}^{S_{2}} mod q αm≡YAS1​​S1S2​​modq

已知, Y A ≡ α X A m o d q Y_{A} \equiv α^{X_{A}} mod q YA​≡αXA​modq S 1 ≡ α K m o d q S_{1}\equivα^{K} mod q S1​≡αKmodq 所以

V 2 ≡ α X A S 1 + K S 2 m o d q V_{2}\equivα^{X_{A}S_{1}+K S_{2}} modq V2​≡αXA​S1​+KS2​modq

又因为 S 2 ≡ K − 1 ( m − X A S 1 ) m o d ( q − 1 ) S_{2} \equiv K^{-1}(m-X_{A}S_{1})mod (q-1) S2​≡K−1(m−XA​S1​)mod(q−1) 所以 K S 2 ≡ m − X A S 1 m o d ( q − 1 ) KS_{2} \equiv m -X_{A}S_{1} mod (q-1) KS2​≡m−XA​S1​mod(q−1) 由上式可得, X A S 1 + K S 2 = t ∗ ( q − 1 ) + m X_{A}S_{1}+ KS_{2} = t*(q-1)+m XA​S1​+KS2​=t∗(q−1)+m

则 V 2 ≡ α X A S 1 + K S 2 ≡ α t ∗ ( q − 1 ) + m m o d q V_{2}\equivα^{X_{A}S_{1}+K S_{2}} \equiv α^{ t*(q-1)+m} modq V2​≡αXA​S1​+KS2​≡αt∗(q−1)+mmodq

由费马定理可得, α ( q − 1 ) ≡ 1 m o d q α^{ (q-1)} \equiv 1 modq α(q−1)≡1modq

所以, V 2 ≡ α m m o d q V_{2}\equiv α^{ m} mod q V2​≡αmmodq 得证V1=V2。

Schnorr数字签名方案

Schnorr数字签名方案也是基于离散对数的数字签名。但Schnorr数字签名方案所需消息计算量最小化,生成签名的主要工作不依赖于消息,可以等到处理器空闲时处理。

方案描述 生成密钥对

(1)素数p、q,且q是p-1的素因子。 (2)选择整数α,使得αq = 1 mod p 。 (3)选择随机整数s,0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有