文章目录

  • 1、认证概述
  • 2、散列函数(Hash)
    • 2.1、Hash的概念
    • 2.2、Hash的特点
    • 2.3、Hash的应用
    • 2.4、Hash函数需要满足的需求
    • 2.5、Hash函数的安全要求
  • 3、数字签名
    • 3.1、数字签名的概述
    • 3.2、数字签名的原理
    • 3.3、数字签名的要求及具有的性质
    • 3.4、数字签名的主要功能
    • 3.5、数字签名的实现方法

1、认证概述

在进行密钥分发的时候,如果没有身份认证,密钥的分发经常是不安全的。在通信过程中不但需要认证通信伙伴的身份,还需要确保消息在传输的过程中没有被修改、插入、删除或重放,即确认消息的完整性

认证是一种不同于保密的安全机制,也是一种安全服务

  • 用来防止恶意第三方冒充通信中的一方欺骗通信伙伴
  • 用来防止通信消息被伪造、被篡改

认证包含了两部分

  • 身份认证(确认消息源)
  • 消息完整性认证(确认消息是源发出的消息,内容没有改变、消息顺序没有改变,产生消息的时间等所有属性都没有改变)

加密与认证的区别

数据保密性
使用加密的安全机制,保护数据免于非授权泄露
认证
使用一些安全机制,保证通信实体是它所声称的实体,保证通信内容是发送者发出的内容

  • 对等实体认证:用于逻辑连接时连接的实体的身份提供可信性
  • 数据源认证:保证收到的信息来源是声称的来源

2、散列函数(Hash)

2.1、Hash的概念

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数

2.2、Hash的特点

散列函数必须具备两个基本特征:单向性、碰撞约束

  • 单向性是指其的操作方向的不可逆性,在散列函数中是指只能从输入推导出输出,而不能从输出计算出输入
  • 碰撞约束是指不能找到一个输入使其输出结果等于一个已知的输出结果 或者 不能同时找到两个不同的输入使其输出结果完全一致

2.3、Hash的应用

Hash算法在信息安全方面的应用主要体以下的3个方面

  • (1)文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

  • (2)数字签名

Hash算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对Hash值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

  • (3) 鉴权协议

如下的鉴权协议又被称作挑战—认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。以上就是一些关于hash以及其相关的一些基本预备知识。

2.4、Hash函数需要满足的需求

  • 1)输入可以为任意长度
  • 2)输出数据长度固定
  • 3)容易计算,给定任何x,容易计算出x的Hash值H(x)s
  • 4)单向函数:即给出一个Hash值,很难反向计算出原始输入
  • 5)碰撞性:即难以找到两个不同的输入会得到相同的Hash输出值(在计算上是不可行的)

2.5、Hash函数的安全要求

  • 单向性:已知y ,找出x,使得Hash k (x)=y困难
  • 弱碰撞:已知x ,找出x’≠x,使得Hash k(x’)= Hash k(x)困难
  • 强碰撞:找出任意x’≠x,使得Hash k(x’)= Hash k(x)困难·困难性具有递增关系

3、数字签名

3.1、数字签名的概述

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串
这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法

一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用

3.2、数字签名的原理

  • 所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换
  • 这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造
  • 它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名
  • 主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名
  • 普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等
  • 特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等
  • 与具体应用环境密切相关

3.3、数字签名的要求及具有的性质

对数字签名的要求:
1、必须有认证功能
2、必须能被第三方仲裁
3、必须能被验证
4、产生、识别、验证数字签名比较容易,保存副本可行
数字签名应该具有的性质
1、签名是对文档的一种映射,不同的文档内容所得到的映射结果是不一样的,即签名与文档具有――对应关系(精确性)
2、签名应基于签名者的唯一性特征(如私钥),从而确定签名的不可伪造性和不可否认性(唯一性)
3、签名应该具有时间特征,防止签名的重复使用(时效性)

3.4、数字签名的主要功能

网络安全,主要是网络信息安全,需要取相应的安全技术措施,提供适合的安全服务
数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题
数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用

  • 防冒充(伪造)

私有密钥只有签名者自己知道,所以其他人不可能构造出正确的

  • 可鉴别身份

由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份

  • 防篡改(防破坏信息的完整性)

对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性

  • 防重放

如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。在数字签名中,如果采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击

  • 防抵赖

如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的抵赖。在数字签名体制中,要求接收者返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖

  • 机密性(保密性)

手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名消息的杂凑值,不具备对消息本身进行加密,当然,如果签名的报名不要求机密性,也可以不用加密

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者用自己的公钥解密被加密的摘要信息,然后用Hash函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性

数字签名是个加密的过程,数字签名验证是个解密的过程

3.5、数字签名的实现方法

数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现

普通的数字签名算法包括三种算法:

  • 密码生成算法
  • 标记算法
  • 验证算法

数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现

如果签名者想要对某个文件进行数字签名,他必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到PKI技术

哈希算法的数字签名与验证

  • 哈希函数是一种“压缩函数”
  • 利用哈希函数可以把任意长度的输入经由散列函数算法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要
  • 在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的消息摘要( Message Digest)
  • 再用自己的私钥( Secret key,SK)对消息摘要进行签名,形成发送方的数字签名
  • 数字签名将作为队件和原文一起发送给接收方
  • 接收方首先用发送方的公钥对数字签名进行解密得到发送方的数字摘要
  • 然后用相同的哈希函数对原文进行哈希计算,得到一个新的消息摘要
  • 最后将消息摘要与收到的消息摘要做比较

具体过程如图所示

基于非对称密钥加密体制的数字签名与验证

  • 发送方首先将原文用自己的私钥加密得到数字签名,然后将原文和数字签名一起发送给接收方
  • 接收方用发送方的公钥对数字签名进行解密,最后与原文进行比较

【参考链接:百度百科】

认证概述散列函数数字签名相关推荐

  1. [XJTU计算机网络安全与管理]——第七讲消息认证码和数字签名

    文章目录 [XJTU计算机网络安全与管理]--第七讲消息认证码和数字签名 一.消息认证码 消息认证--MessageAuthentication 消息认证函数 消息加密 内部错误控制与外部错误控制(附 ...

  2. 怎样判断驱动程序是否有通过WHQL认证获得微软数字签名

    怎样判断驱动程序是否有通过WHQL认证获得微软数字签名 我们都知道通过了Windows徽标认证(WHQL)获得微软数字签名对于驱动程序的安装和使用是一个稳定象征. 然而,是不是所有微软数字签名的驱动程 ...

  3. [4G5G专题-122]:认证-华为认证概述

    1. 链接 https://e.huawei.com/cn/talent/#/cert?navType=authNavKey 2. 华为认证概述 3. 认证等级 HCIA:工程师等级 HCIP:高级工 ...

  4. 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书

    本文讲解对称加密.非对称加密.消息摘要.MAC.数字签名.公钥证书的用途.不足和解决的问题. 0.概述 当发送方A向接收方B发送数据时,需要考虑的问题有: 1.数据的安全性. 2.数据的完整性,即数据 ...

  5. 密码学专题 相关概念的解析 对称算法|算法的安全性|非对称算法存在的问题|单向散列函数|数字签名的弊端|密钥交换

    对称加密算法 对称加密算法又可以分成流加密算法和块加密 算法. 流加密算法又称为序列加密算法或序列密码,它每次只对明文中的单个位或单个字节 进行加密操作.这种算法的优点是能够实时进行数据传输和解密,缺 ...

  6. 【密码学原理】消息认证概述,Hash和MAC

    网络通信环境下可能存在的攻击: 泄密:将消息透露给没有合法密钥的第三方 传输分析:分析通信双方的通信模式,连接频率.持续时间.消息数量和长度 伪装:向网络中插入消息 内容修改:对消息内容修改 顺序修改 ...

  7. 时代亿信CA认证概述

    企业级CA系统(ETCA)是时代亿信在充分研究国内CA现状.结合PKI实际应用需求的基础上,独立研发的一套CA产品. 企业级CA系统采用国家密码局批准的国密算法,可挂接密钥管理中心(KMC)来管理用户 ...

  8. oracle ocm认证概述

    Oracle OCM认证指的是Oracle Certified Master,是Oracle公司提供的最高级别的专业认证,要求考生具备深入的Oracle数据库管理和开发知识和技能. OCM认证是Ora ...

  9. VMware认证概述

    认证简介 VMware培训服务和认证计划可为您提供行业领先的虚拟化技术培训和认证计划,这是实现云计算的重要入门条件.这些认证不但会考察您的知识掌握情况和经验水平,还将与您的实际工作职责挂钩. VMwa ...

最新文章

  1. JavaScript深入之执行上下文栈
  2. php session 域,PHP session 跨子域问题总结
  3. float与double的范围和精度
  4. Swift 3.0 beta 6权限访问修改
  5. 携程在线风控系统架构
  6. 正则表达式—leetcode10
  7. 爬虫系列---Scrapy框架学习
  8. Angular2 - [innerHTML] pipe(把字符串里的 /n 替换成 <br/>)
  9. 基于SARIMA-LSTM的门诊量预测研究
  10. Drools 文档(目录)
  11. Freeswitch视频会议远超Telepresence
  12. sdr 软件_SDR软件定义无线电是什么?不仅仅是大频谱
  13. VMP学习笔记之壳的重定位修复(五)
  14. php随机给用户抽奖,PHP随机按百分比抽奖
  15. 如何设置华为悦盒Ubuntu系统的无线WiFi自动连接
  16. AcrelEMS-EV汽车制造能效管理系统解决方案
  17. 如何连接mac与无线打印机?
  18. PaddleOCR整体了解
  19. 删除表记录(delete from where )
  20. Dao和Repository,你还傻傻分不清吗?

热门文章

  1. 为什么说数据中心是5G最大的受益者?
  2. shell开启飞行模式_手机上的飞行模式,每天都能用得上,我是才知道,涨知识...
  3. 鸿蒙安卓哪个app好,可以放下对华为鸿蒙的担忧了,操作和EMUI相似,能兼容安卓APP - 区块网...
  4. easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南
  5. 成功解决AttributeError: module ‘tensorflow‘ has no attribute ‘get_variable‘
  6. Dataset之JFT:JFT/FastEval14k数据集的简介、下载、案例应用之详细攻略
  7. 成功解决object_detection/protos/*.proto: No such file or directory
  8. 彻底弄懂 HTTP 缓存机制及原理 | 干货
  9. 微信小程序image组件开发程序以及相关图片问题参考资料汇总
  10. java 泛型小小的测试题