消息认证

用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时的一样(没有修改、插入、删除或者重放),且发送方声称的身份是真实有效的。

什么是消息认证

用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时的一样(没有修改、插入、删除或者重放),且发送方声称的身份是真实有效的。

消息认证关心的问题

  • 保护消息的完整性
  • 验证发起方身份
  • 消息源的不可否认

消息认证的方法

消息加密

  • 对称加密
  • 要求明文具有某种易于识别的结构,如在加密前对每个消息符加一个帧校验序列FCS(分为先加密再FCS和先FCS再加密)

公钥加密作为认证手段

  • 若要提供认证,发送方用自己的私钥对消息加密,接收方用发送方的公钥解密(认证),就提供了认证功能
  • 如果发送方用私钥加密消息,再用接收方的公钥加密,就实现了既保密又认证的通信
  • 既保密又认证的通信的代价是需要执行四次复杂的公钥算法而不是两次

消息认证码(MAC)

MAC不提供数字签名,因为双方共享密钥

MAC的特点

  • 使用一个私密密钥K,浓缩一个变长的消息M,产生一个固定长度的认证子
  • MAC是一种多对一的函数(若N为100,n为10,共有222100" role="presentation" style="position: relative;">100100100条不同的消息,22210" role="presentation" style="position: relative;">101010种不同的MAC,平均而言同一MAC可由222100" role="presentation" style="position: relative;">100100100/22210" role="presentation" style="position: relative;">101010=22290" role="presentation" style="position: relative;">909090条不同的消息产生,若密钥长度为5,则从消息集合到MAC的值的集合有2225" role="presentation" style="position: relative;">555=323232不同的映射)
  • CBC加密方式
  • 三种认证方式
    1. 直接生成MAC加到报文后面发送
    2. 生成MAC加到报文之后再加密发送
    3. 先对报文进行加密再把生成的MAC加到加密后的报文后面发送

MAC应具有以下性质

  • 如果一个攻击者得到M和CK(M)CK(M)C_K(M),则攻击者构造一个消息M’,使得CK(M′)=CK(M)CK(M′)=CK(M)C_K(M')=C_K(M)应在计算上不可行
  • CK(M)CK(M)C_K(M)应均匀分布,即随机选择消息M和M’,CK(M)=CK(M)CK(M)=CK(M)C_K(M)=C_K(M)的概率应该是222−n" role="presentation" style="position: relative;">−n−n-n,其中n是MAC的位数
  • 令M’为M的某些变换,即M′=f(M)M′=f(M)M'=f(M),在这种情况下Pr(CK(M)=CK(M′))=2Pr(CK(M)=CK(M′))=2P_r(C_K(M)=C_K(M'))=2−n−n-n

哈希函数(散列函数)

H(M):输入为任意长度的消息M,输出为一个固定长度的散列值,称为消息摘要
H(M)是消息M的所有位的函数并提供错误检测能力:消息中的任何一位或多位的变化都将导致该散列值的变化

六种方式

  • 先把散列值加到明文后面再加密发送
  • 先对散列值进行加密再加到明文后面发送
  • 先对散列值用发送方的私钥加密再加到明文后面发送
  • 先对散列值用发送方的私钥加密再加到明文后面然后再加密发送
  • 明文先与一个发送方和接收方都知道的一个秘密值S连接作为输入值产生哈希值,然后加到明文后面
  • 明文先与一个发送方和接收方都知道的一个秘密值S连接作为输入值产生哈希值,然后加到明文后面再加密发送

散列函数的要求

  • H能用于任意大小的分组
  • H能产生定长的输出
  • 对任何给定的X,H(X)要相对容易计算,使得硬件和软件实现成为实际可能
  • 对任何给定的码h,寻找x使得H(x)=h在计算上是不可行的,即单向性
  • 对任何给定的分组x,寻找不等于x的y,使得H(x)=H(y)在计算上是不可行的
  • 寻找对任何的(x,y)对使得H(x)=H(y)在计算上是不可行的,即强抗冲突性

生日攻击

给定一个散列函数,有n个可能的输出,输出值为H(x),如果H有k个随机输入,k必须为多大才能使至少存在一个输入y,使得H(y)=H(x)的概率大于0.5
对长度为m位的散列码,共有2m2m2^m个可能的散列码,若要使任意的x,y,有H(x)=H(y)的概率为0.5,只需k=2k=2k=2m/2m/2m/2

哈希函数的分类

根据安全水平
  • 弱无碰撞:给定消息xxx∈X" role="presentation" style="position: relative;">XXX,在计算上几乎找不到异于xxx的x′" role="presentation" style="position: relative;">x′x′x'∈XXX使h(x)=h(x′)" role="presentation" style="position: relative;">h(x)=h(x′)h(x)=h(x′)h(x)=h(x')
  • 强无碰撞:在计算上几乎找不到异于xxx的x′" role="presentation" style="position: relative;">x′x′x'∈XXX使h(x)=h(x′)" role="presentation" style="position: relative;">h(x)=h(x′)h(x)=h(x′)h(x)=h(x')
根据是否使用密钥
  • 带密钥的Hash函数:消息的散列值由只有通信双方知道的私密密钥K控制。此时散列值叫做MAC
  • 不带私密密钥的Hash函数:消息的散列值的产生无需使用密钥。此时散列值称为MDC

网络信息安全:消息认证相关推荐

  1. 信息安全——消息认证与数字签名

    消息认证和数字签名是为防止以下情况: (1)伪造:从假冒信源向网络插入消息. (2)内容修改:消息内容被插入.删除.变换等. (3)顺序修改:重组消息序列. (4)时间修改:消息延迟或重放. (5)否 ...

  2. 网络与信息安全身份证认证技术分析

    认证技术是信息安全中的一个重要内容,在"网络与信息安全"课程中我们学习了两种认证技术:消息认证与身份认证,消息认证用于保证信息的完整性与抗否认性,身份认证则用于鉴别用户身份.在网上 ...

  3. 2022年网络信息安全工程师(NSACE)认证招生简章

    2022年网络信息安全工程师(NSACE)认证招生简章 为促进网络及信息化产业快速发展,保障建设中信息化发展的有效规范,响应国家和地区对网络信息安全的要求,工信部教育与考试中心大力培养网络信息安全人才 ...

  4. 计算机消息认证的主要方法,事业单位考试计算机网络知识:网络认证技术之消息认证技术...

    [导语]在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公为计算机网络知识的复习为考生提供知识点梳理,帮助考生备考! 随着网络技术的发展,对网络传输过程中信息的保密性提出 ...

  5. 【信息安全】MD(消息摘要)、MAC(消息认证码)、数字签名的区别

    MD MAC 数字签名 是否对摘要加密 不加密 加密 加密 对摘要进行加密的算法 无 对称加密 公钥加密 是否可以防止耍赖 否 否 是 从上表可以看出,从MD到MAC再到数字签名,它的安全性越来越高. ...

  6. IT运维和信息安全网络安全相关的认证培训有哪些 ?

    IT运维类: 1.国内认证 中国电子技术标准化研究院 ITSS服务项目经理 ITSS服务工程师 工信部考试中心 IT运维工程师 2.国际认证 ITIL 由英国政府于上世纪80年代为了标准化IT管理而创 ...

  7. 【期末复习】带着问题看网络信息安全

    网络信息安全需求包含哪六个基本方面?分别简单说明它们的含义. 机密性:防止未授权用户非法获得保密信息. 完整性:在未经许可的情况下,保证数据不会被他人删除或修改(至少能发现被修改过). 身份认证:用户 ...

  8. 《NJUPT》网络信息安全_期末PPT整理笔记

    零.基础知识 信息安全包括:信息安全管理.物理场所安全.设备的硬件安全.软件安全(操作系统/其他系统软件应用软件).网络信息安全(TCP/IP ).密码学的应用.信息隐藏.其他不常见技术 不同的研究方 ...

  9. 《网络信息安全》作业题和考试复习题

    开卷必备! 网络信息安全需求包含哪六个基本方面?分别简单说明它们的含义. 机密性:防止未授权用户非法获得保密信息. 完整性:在未经许可的情况下,保证数据不会被他人删除或修改(至少能发现被修改过). 身 ...

最新文章

  1. OC之NSArray/NSMutableArrray
  2. 015_视图(Views)
  3. linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
  4. 笔记-信息化与系统集成技术-区块链的特征
  5. 设计友好的错误信息页面
  6. java选择是否弹窗_java Swing 点击对话框选择是或者否后又再次弹出刚才关闭的对话框...
  7. OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印
  8. ECC椭圆曲线加密算法原理 | 比特币加密算法
  9. 大数据的搜索引擎——Elasticsearch
  10. python windows 消息通讯_如何使用python與windows中的事件/消息掛鈎
  11. 关于Google神牛Jeff Dean的笑话,非程序员勿入
  12. 【STM32 .Net MF开发板学习-09】AD模拟量采集
  13. Integer 十六进制
  14. 【笔记】效率脑科学:卓有成效地完成每一项工作
  15. Java经典300例-基础篇-001:Hello Kitty
  16. 马斯洛“需求层次理论” 在《植物大战僵尸》中的运用
  17. CMOS 和CCD的区别
  18. ASP.NET验证控件祥解 (选择自 rko 的 Blog )
  19. 清华大学刘知远:知识指导的自然语言处理
  20. 对于ssd对小目标检测效果的思考

热门文章

  1. 福昕阅读器中,如何令两个pdf文件分别在两个不同的窗口显示?
  2. Flutter的android项目跳转谷歌市场
  3. java JLabel改变大小后如何刷新_java实习面经整理
  4. 在线调试工具BTrace 的使用--例子
  5. 【学习总结】Apsara Clouder云计算技能认证:网站建设:简单动态网站搭建+思维导图
  6. P3400 仓鼠窝 (单调栈 dp
  7. Tableau雷达图和凹凸图
  8. 关于一个ISE错误XST:899的错误判断的讨论
  9. 使用极狐GitLab CI/CD部署应用到Kubernetes集群的方案
  10. 个人日记—《日俄战争》的故事—20200802