图解系列--认证

单向散列函数

1.什么是单向散列函数
单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
在指定的散列函数处理下,无论输入的字节序列尺寸如何,输出的尺寸是固定的。

应用:
1.对输入的字节序列1,采用单向散列函数计算出散列值。将散列值1保存到可信的安全位置。
2.之后某个时刻,再次对字节序列2输入,采用单向散列函数计算散列值2。
3.若散列值1等于散列值2,则可认为字节序列1和字节序列2是一致的。即每个字节都是相等的,且长度一致。

2.单向散列函数需具备的性质
_1.根据任意长度的消息计算出固定长度的散列值
_2.能够快速计算出散列值
_3.消息不同散列值也不同
弱抗碰撞性:要找到和该指定消息具有相同散列值的另外一条消息是非常困难的。
强抗碰撞性:要找到散列值相同的两条不同的消息是非常困难。
_4.具备单向性
即无法通过散列值反算出输入消息。

单向散列过程,有时也叫消息摘要过程。

3.常用的单向散列函数
_1.MD4、MD5
能够产生128比特的散列值。MD是消息摘要的缩写。
_2.SHA-1、SHA-256、SHA-384、SHA-512
在这里插入图片描述
_3.SHA-3
最新的标准

4.应该使用哪种单向散列函数呢
MD5是不安全的,因此不应该使用。
SHA-1除了用于对过去生成的散列值进行校验之外,不应该被用于新的用途,而是应该迁 移到 SHA-2。
SHA-2 有效应对了针对 SHA-1 的攻击方法,因此是安全的,可以使用。
SHA-3 是安全的,可以使用。

5.攻击
_1.原像攻击,第二原像攻击
原像攻击是指给定一个散列值,找出具有该散列值的任意消息;第二原像攻击是指给定一条消息1,找出另外一条消息2,消息2的散列值和消息1相同。
_2.生日攻击
生日攻击或者冲突攻击,这是一种试图破解单向散列函数的“强抗碰撞性”的攻击。找到散列值相同的两条消息,而散列值则可以是任意值。

6.总结
单向散列函数可以解决消息完整性(一致性)验证,但无法解决验证消息发送者是合法发送者。验证消息发送者是否合法,是认证的任务。

消息认证码

消息认证码,可以同时识别出篡改和伪装。
1.什么是消息认证码
消息认证码是一种确认完整性并进行认证的技术。
消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值。
消息认证码中则需要使用发送者与接收者之间共享的密钥。

2.消息认证码的实现方法
_1.使用单向散列函数实现
HMAC 是一种使用单向散列函数来构造消息认证码的方法。使用SHA-1 、SHA-224 、SHA-256 、SHA-384 、SHA-512 所构造的 HMAC, 分别称为 HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。

_2.使用分组密码实现
将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密。
此时,初始化向量(IV)是固定的。由于消息认证码中不需要解密,因此将除最后一 个分组以外的密文部分全部丢弃,而将最后一个分组用作MAC 值。由于CBC模式的最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息认证码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/194443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot中实现支付宝、微信和银联支付的功能

Spring Boot中实现支付宝、微信和银联支付的功能 在Spring Boot中实现支付宝、微信和银联支付的功能,通常需要使用它们各自的SDK(Software Development Kit)。以下是一个简单的示例代码,演示了如何在Spring Boot项目中集成支付宝…

Flutter笔记:拖拽手势

Flutter笔记 拖拽手势 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134485123 目 录 1. 概述2. 垂直拖…

Flutter笔记:缩放手势

Flutter笔记 缩放手势 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134485138 目 录 1. 概述2. 缩放手…

BatchNormalization:解决神经网络中的内部协变量偏移问题

ICML2015 截至目前51172引 论文链接 代码连接(planing) 文章提出的问题 减少神经网络隐藏层中的”内部协变量偏移”问题。 在机器学习领域存在“协变量偏移”问题,问题的前提是我们划分数据集的时候,训练集和测试集往往假设是独立同分布(i.i.d)的,这种独立同分布更有利于…

RabbitMQ消息的可靠性

RabbitMQ消息的可靠性 一 生产者的可靠性 生产者重试 有时候由于网络问题,会出现连接MQ失败的情况,可以配置重连机制 注意:SpringAMQP的重试机制是阻塞式的,重试等待的时候,当前线程会等待。 spring:rabbitmq:conne…

OSI参考模型

目录 一. OSI参考模型的各层功能二. 网络排错三. 网络安全四. 实体、协议、服务和服务访问点SAP五. TCP IP体系结构 一. OSI参考模型的各层功能 \quad \quad \quad \quad 我们首先来看应用层实现的功能 每个字段的各种取值所代表的意思 \quad \quad 比如要保存的文件内容是ab…

Linux 网络:PMTUD 简介

文章目录 1. 前言2. Path MTU Discovery(PMTUD) 协议2.1 PMTUD 发现最小 MTU 的过程 3. Linux 的 PMTUD 简析3.1 创建 socket 时初始化 PMTUD 模式3.2 数据发送时 PMTUD 相关处理3.2.1 源头主机发送过程中 PMTU 处理3.2.2 转发过程中 PMTUD 处理 4. PMTUD 观察5. 参考链接 1. 前…

配置VNC环境时,出现xauth: file /root/.Xauthority does not exist的解决方案。

问题描述 在配置VNC(Virtual Network Computing)环境的过程时,首先安装了tigervnc-server包。在使用: vncserver命令创建VNC会话号的时候出现了一个报错:xauth: file /root/.Xauthority does not exist 原因分析&…

【Linux进阶之路】动静态库

文章目录 回顾一. 静态库1.代码传递的方式2.简易制作3.原理 二. 动态库1.简易制作2.基本原理 尾序 回顾 前面在gcc与g的使用中,我们简单的介绍了动态库与静态库的各自的优点与区别: 动态链接库,也就是所有的程序公用一份代码,虽然方便省空间&…

SpringBoot 整合 JdbcTemplate

数据持久化有几个常见的方案,有 Spring 自带的 JdbcTemplate 、有 MyBatis,还有 JPA,在这些方案中,最简单的就是 Spring 自带的 JdbcTemplate 了,这个东西虽然没有 MyBatis 那么方便,但是比起最开始的 Jdbc…

Go——一、Go语言安装及介绍

Go 一、Windows下安装Go1、下载Go2、配置环境变量3、下载Jetbrain下的GoLang4、编写hello world5、编译和执行 二、Go语言介绍1、开发文档2、Go语言核心开发团队3、为什么要创建Go4、Go语言发展史5、Go语言特点6、Golang执行过程6.1 执行过程分析6.2 编译是什么 7、开发注意事项…