密码技术之认证

第二部分:认证

  当比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就行了。

  一、单向散列函数(one-way hash function)

    单向散列函数也称为消息摘要函数(message digest function)、哈希函数或者杂凑函数。

    单向散列函数有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)也称为消息摘要(message digest)或者指纹。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。所谓完整性是指有没有被篡改,或称为一致性。

    这里的消息可以是文字,图片或者文件等。并且散列值的长度和消息的长度无关,无论消息的大小是多少,散列函数都会计算出固定长度的散列值。如SHA-256单向散列函数,它计算出的长度永远

是256bit。

  单项散列函数的性质

  (1)、根据任意长度的消息计算出固定长度的散列值

  (2)、能够快速计算出散列值

  (3)、消息不同,散列值也不相同(哪怕1bit,散列值也不同),难以发现碰撞的性质称为抗碰撞性,密码技术中所使用的单向单列函数,都具备抗碰撞性。也就是说难以找到两条消息的散列值相同。

  (4)、具备单向性,指无法通过散列值反算出消息的性质。破镜不能重圆

  单项散列函数的实际应用

  1、检测软件是否被篡改

  2、基于口令的加密

    单向散列函数也被用于基于口令的加密(Password Based Encryption,PBE)。PBE的原理是将口令和盐(slat,通过伪随机数生成器产生的随机值)混合后计算其散列值,然后将这个散列值用过加密的密钥。

  3、消息认证码

    消息认证码是将“发送者和接收者之间的共享密钥”和“消息”混合后计算其散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装

  4、数字签名

    数字签名的处理非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后再对这个散列值施加数字签名。

  5、一次性口令

    一次性口令经常被用于服务端对客户端的合法性认证。在这种方式中,通过使用单向散列函数可以保证口令只在通信链路上传送一次,因此即使窃听者窃取了口令,也无法使用。

  常用的单向散列函数

  推荐使用SHA-2、SHA-3

  1、MD4,MD5,MD(Message Digest的缩写)

  MD4,能够产生128bit的散列值,已经不安全了

  MD5,能够产生128bit的散列值,不过MD5的强碰撞性已经被攻破,也就是说,现在能够产生具备相同散列值的两条不同的消息,因此也已经不安全了。

  2、SHA-1、SHA-256、SHA-384、SHA-512

  SHA-1:能够产生160bit的散列值的单向散列函数,其强碰撞性已于2005年被攻破,目前已经不推荐使用

  SHA-256、SHA-384、SHA-512,它们的散列值长度分别是256bit、384bit和512bit,这些单向散列函数合起来统称为SHA-2。它们的消息长度也存在上限(SHA-256的上限接近于2^64bit,SHA-384和SHA-512的上限接近于2^128bit)

  3、PIPEMD-160

  能够产生160bit的单向散列函数,其强碰撞性已于2004年被攻破,除了以兼容性为目的外,其他情况下都不推荐使用。比特币中使用的就是PIPEMD-160。

  3、SHA-3

  2012年确定了Keccak算法作为SHA-3的标准。

  其采用了与SHA-2完全不同的结构、并且结构清晰,易于分析、能够适用于各种设备,也适用于嵌入式应用、在硬件上的实现显示了很高的性能、比其他最终候选算法安全性边际更大。

  Keccak

  Keccak可以生成任意长度的散列值,但为了配合SHA-2的散列值长度,SHA-3标准中共规定了SHA3-224、SHA3-256、SHA3-384、SHA3-512这个4个版本。在输入长度上限方面没有长度限制。

  单向散列函数无法解决的问题

  使用单向散列函数可以实现完整性也叫一致性的检查,但有些情况下即便能够检查完整性也是没有意义的。比如攻击者伪装成发送者向接收者发送了消息和散列值。这时接收者能够通过单向散列函数检查消息的完整性,但是却无法检查出发送者的身份是否被伪装了。也就是说,单向散列函数能够辨别出”篡改“,但无法辨别出”伪装“

  因此,仅仅确认消息的完整性是不够的,还需要进行认证。用于认证的技术包括消息认证码和数字签名。

  二、消息认证码(Message Authentication Code)

  使用消息认证码可以判断消息是否被篡改,以及是否有人伪装成发送者发送了该消息。

  如针对汇款请求,我们需要关注汇款请求的完整性和认证这两个性质。完整性,要能够确认汇款请求的内容没有被篡改,如收款账号和收款金额。认证,要能够确认消息是谁发送的,没有被攻击者伪装。

  消息认证码是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC。

  消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据成为MAC值。

  根据任意长度的消息输出固定长度的数据,这一点和单向散列函数很类似。但是单向散列函数中计算散列值时不需要密钥,相对地,消息认证码中则需要使用发送者与接收者之间共享的密钥。

  可以理解为,消息认证码是一种与密钥相关联的单向散列函数。

  消息认证码的密钥配送问题

    消息认证码的发送者和接收者之间需要共享密钥,这与对称密码类似,密钥配送方式和对称密码也相同,如使用公钥密码、Diffie-Hellman密钥交换、密钥分配中心,或者使用其他安全的方式发送密钥等。

  消息认证码的应用实例

    1、SWIFT

      Society for Worldwide Interbank Financial Telecommunication,环球银行金融电信协会的简称,其目的是为国际银行间的交易保驾护航。银行与银行之间是通过SWIFT来传递交易消息的,而为了确认消息的完整性以及对消息进行认证,SWIFT中使用了消息认证码。

    2、IPsec  

      是对互联网基本通信协议——IP协议增加安全性的一种方式。在IPsec中,对通信内容的认证和完整性校验都是采用消息认证码来完成的

    3、SSL/TLS

      是安全通信协议,对通信内筒的认证和完整性校验也使用了消息认证码

  消息认证码的实现方法

    (1)使用SHA-2之类的单向散列函数可以实现消息认证码,其中一种实现方法称为HMAC

    (2)使用AES之类的分组密码实现,将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密,初始化向量IV是固定的,将最后一个分组密文作为MAC值。AES-CMAC(RFC4493)就是一种基于AES来实现的消息认证码。

  消息认证码无法解决的问题

    1、对第三方证明

    假设Bob在接收了来自Alice的消息之后,想要向第三方验证者Victor证明这条消息的确是Alice发送的,但是用消息认证码无法进行这样的证明,因为,首先,Victor要校验MAC值,就需要知道Alice和Bob之间共享的密钥。能够计算出正确MAC值的人只有Bob和Alice,在他们两个人之间进行通信时,可以断定是对方计算出了MAC值,这是因为共享这个密钥的双方之中,有一方就是自己。然而,对于第三方Victor,Alice和Bob却无法证明是对方计算出了MAC值,而不是自己。

    2、防止否认

    假设Bob收到了包含MAC值的消息,这个MAC值是用Alice和Bob共享的密钥计算出来的,因此Bob能够判断这条消息的确来自Alice。但是上面说的Bob无法向Victor证明这一点,也就是说,发送者Alice可以向Victor声称:我没有向Bob发送过这条消息,这样的行为就称为否认

  三、数字签名

   消息认证码无法防止否认

原文地址:https://www.cnblogs.com/yangyongjie/p/11728135.html

时间: 2024-12-10 04:05:43

密码技术之认证的相关文章

《图解密码技术》[01] 密码概述

<图解密码技术>(点击查看详情) 1.写在前面的话 因为接触了微信公众号开发,之中涉及支付功能时用到了大量签名加密之类的东西,对于密码安全这一块,其实一直不是很明白,大部分方法自己在用到时也是去直接google,然后复制粘贴,可以说完全不知其所以然. 加密这一块查了下有很多人推荐这本书,于是就决定看看.我个人涉及到真正的加密技术的实际应用可能不算那么多,所以这里笔记准备记录一些浅显和核心的东西. 2.加密和解密 发送信息和接受信息的过程中,因为传递过程涉及多方,可能会存在窃听者.就像你给别人写

如何为VPN选择合适的动态密码双因素认证方案

CKEY动态密码认证是双因子认证的一种方式,VPN用户增加动态密码认证,借助此方案可以提升VPN远程拨入安全,加强登陆用户审计. CKEY为VPN提供短信密码.硬件令牌.软件令牌.短信密码+硬件令牌混合四种双因素认证方案,相比传统VPN采用硬件令牌或USB KEY方式在便携性及用户体验都有其瑕疵,该方案可满足不同类型企业对于安全性.便捷性.可管理性.成本多种考虑,广泛被政府.运营商.金融.制造业.内外资企业等不同领域所采纳. 与传统方式相比,北京中科恒伦科技有限公司提出四种VPN结合动态密码双因

深入理解密码技术

对称加密: DES DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用. 不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了.不过这里我们可以用它来了解下什么是对称加密. <!--more--> 加密和解密 DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特.结果DES密钥总长度为64比特. 分组密码 DES以64比特明文为一个单位进行加密,这64比特单位称为分组.so,

什么是私有密钥密码技术——密钥加密算法采用同一把密钥进行加密和解密

什么是私有密钥密码技术 私有密钥(Symmetric Key),又叫对称密钥.密钥加密算法采用同一把密钥进行加密和解密.它的优点是加密和解密速度非常快,但密钥的分发和管理比较困难.信息的发送者和接收者必须明确同一把密钥.因此,必须进行密钥交流,这通常需要其他更安全的信道来传送密钥.另外,每一对用户都需要有自己的一个独一无二的密钥.因此,如果一个发送者与很多人通信,就需要管理很多密钥.主要的对称密钥加密算法有DES.3DES.RC2.RC4.RC5.Blowtish和CAST等.在VPN中常用的有

《图解密码技术》-1.环游密码世界

1.对称密码和公钥密码 对称密码:是指在加密和解密时使用同一秘钥的方式 公钥密码:又称非对称加密,指在加密和解码时使用的不是用一秘钥的方式 2.混合密码系统 将对称密码和非对称密码结合起来的密码方式称为混合密码系统, 这种系统结合了对称加密和非对称加密的优势. 3.其他密码技术 1.单项散列函数:是一种保证完整性的密码技术. 2.消息认证码:消息认证码是一种能够保证完整性和提供认证的密码技术. 3.数字签名:能够防止伪装.篡改.和否认等威胁的技术. 4.伪随机数生成器:是一种能够模拟产生出随机数

阅《图解密码技术》一笔记1

1.密码保证了消息的机密性 2.密码算法:由将明文生成密文的加密算法和由密文解密成明文的解密算法组成. 密钥是密码算法中进行运算的key. 3.对称密码(symmetric cryptography):是指在加密和解密时使用同一密钥的方式. 4.公钥密码(public-key crypography):是指在加密和解密时使用不同密钥的方式.也称非对称密码(asymmetric cryptography) 5.其它密码技术 a.单向散列函数    ------>不保证机密性,保证完整性,用于检测数

密码技术小总结

密码技术与编码技术不同,但现在很多人把两者的技术混在一起,但两者某些地方界限确实有些模糊.密码技术与信息隐藏也不同,密码技术是让你看得到但是看不懂,信息隐藏是让你看不到找不到 参考和查看更多内容推荐 本文只是简要总结 http://www.mamicode.com/info-detail-2252602.html https://blog.csdn.net/pdsu161530247/article/details/75667218 <码书 解码与编码的战争> <图解密码技术 第三版&g

图解密码技术一些笔记

因为明年的工作可能要涉及到加密的问题,所以要看一下加密方面,刚好之前对于web开发方面的加密,https也一直有疑问,于是就买了本图解密码技术来看看 1.如何保证数据只能单向解密: 比较流行的一个就是公钥和私钥,公钥负责加密,私钥负责解密,只要私钥没有被拿到,数据就不会被破解,比较流行的 就是RSA算法,公司项目也用过,不过当时搞不清公钥和私钥,迷迷糊糊的 2.如何保证收到的数据没有被修改过利用私钥加密,然后用公钥解密 这个就是数字签名,在发送给客户端的时候,除了原有的数据以外,还要再发送一个对

软考之路(5)——计算机组成原理之加密技术和认证技术

在软考的题目中总会出现一两道关于加密技术和认证技术的题目.比如:2012年11月的上午题的第(8)和第(9)题: 用户B收到用户A带数字签名的消息M,为了验证M的真实性,首先须要从CA获取用户A的数字验证书,并利用( 8 )验证该证书的真伪,然后利用( 9 )验证M的真实性. (8)A.CA的公钥   B.B的私钥   C.A的公钥   D.B的公钥 (9)A.CA的公钥   B.B的私钥   C.A的公钥   D.B的公钥 这类题目绝对不难.仅仅要你弄清楚了加密技术与认证技术,这样的题目应该是