密码学初级教程(六)数字签名 Digital Signature
密码学家工具箱中的6个重要的工具:
- 对称密码
- 公钥密码
- 单向散列函数
- 消息认证码
- 数字签名
- 伪随机数生成器
提问:
有了消息认证码为什么还要有数字签名?
因为消息认证码无法防止否认。消息认证码可以识别消息是否被篡改或者发送者身份是否被伪装。(消息认证码保证完整性、可以进行认证)
为什么消息认证码无法防止否认,数字签名就能够否认呢?
消息认证码中,能够计算出MAC值的密钥(共享密钥)是由发送者和接受者双方共同持有的,因此发送者和接受者中的任何一方都能够计算MAC值,发送者也就可以声称“这个MAC值不是我计算的,而是接收者计算的”。
相反的,在数字签名中,能够生成签名的密钥(私钥)是只有发送者才持有的,只有发送者才能够生成签名,因此发送者也就没办法说“这个签名不是我生成的”了。
数字签名的方法
- 直接对消息进行签名
发送者用私钥对消息进行签名并把签名和消息发送给接收者,接收者用公钥解密得到消息原文并和收到的消息进行匹配。
- 对消息的散列值进行签名
对散列值签名就是多了一步,先计算消息的散列值,再计算签名。
数字签名的应用实例
- 安全信息公告
- 软件下载
(1)验证软件是否有被修改。
(2)一种名为带签名的Applet的软件就是一个具体的例子。这种软件就是用Java编写的(一种浏览器进行下载并执行的软件),并加上了作者的签名,而浏览器会在下载之后对签名进行验证。
- 公钥证书
- SSL/TLS
实现数字签名的方法
- RSA
- EIGamal
- 由Taher EIGammal设计的公钥算法,利用了在mod N中求离散对数的困难度。可被用于公钥密码和数字签名。
- DSA
- NIST于1991年制定的数字签名规范,DSA是Schnorr算法与EIGammal方式的变体,只能用于数字签名。
- Rabin
- 由M.O.Rabin设计的公钥算法,利用了在mod N中求平方根的困难度。Rabin可以被用于公钥密码和数字签名。
密码学初级教程(六)数字签名 Digital Signature的更多相关文章
- 密码学初级教程(一)基本概念及DES加密算法
密码技术在网络通信中广泛使用,本节是初步接触密码学技术的笔记. 第1章 加密-解密 破译 明文-密文 密钥 密码算法 对称密码-公钥密码(非对称密码) 单向散列函数-散列值 消息认证码 数字签名 伪随 ...
- 密码学初级教程(五)消息认证码MAC-Message Authentication Code
密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包 ...
- 密码学初级教程(八)SSL/TLS-为了更安全的通信
SSL/TLS是世界上应用最广泛的密码通信方法.用到对称密码.消息认证码.公钥密码.数字签名.伪随机数生成器等密码技术. 密码套件 SSL/TLS提供了一种密码通信的框架,SSL/TLS中使用的对称密 ...
- 密码学初级教程(三)公钥密码RSA
密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 公钥密码(非对称密码) 问题: 公钥认证问题 处理速度是对称密码的几百分之一 求离散对数非常 ...
- Laravel初级教程浅显易懂适合入门
整理了一些Laravel初级教程,浅显易懂,特适合入门,留给刚学习laravel想快速上手有需要的朋友 最适合入门的laravel初级教程(一)序言 最适合入门的laravel初级教程(二)安装使用 ...
- 温故知新,.Net Core遇见Digital Signature(MD5/RSA/SM),微服务签名机制设计
什么是数字签名(Digital Signature) 数字签名(Digital Signature)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性 ...
- What is a Digital Signature? 理解数字签名与数字证书
What is a Digital Signature?An introduction to Digital Signatures, by David Youd Bob (Bob's public k ...
- 《自学C语言》初级教程 - 目录
我现在打算出一个C语言学习教程,目的是为了让初学者能够很容易和更深刻地理解C语言. 你可能有这样的疑问,网上不是有很多的初级教程吗,我需要这个吗?我的回答是:网上的C语言教程讲得不够全面,而且许多的初 ...
- 公众号第三方平台开发 教程六 代公众号使用JS SDK说明
公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...
随机推荐
- Nuget包里的依赖包更新到最新版本会不会随主包回滚到旧包的研究
A包中有几个依赖包:A-1包,版本:>=1.0:但是我项目上已经引用了A-1包的2.0版本,那么我添加A包的时候,不会将A-1包2.0版本改成1.0版本,会直接用2.0版本的.
- 在打开vs解决方案时,怎样让所以打开的项目自动折叠
使用VS 2010中的扩展性,搜PowerCommands,PowerCommands扩展在Visual Studio 2010中添加了数十个有用的的命令, Collapse Projects(折叠项 ...
- PCRE Perl Compatible Regular Expressions Learning
catalog . PCRE Introduction . pcre2api . pcre2jit . PCRE Programing 1. PCRE Introduction The PCRE li ...
- Linux 下自解压文件的制作
这个方法的灵感来自于 alipay 的安全控件安装,所以先感谢 alipay. 下面是经过我自己修改的自解压 shell 代码(嵌入式板子上是busybox提供的sh) #!/bin/sh # # T ...
- UVA1555-- Garland(推导+二分)
题意:有n个灯,给定第一盏灯A的高度,接下去每盏灯的高度按照公式计算,求使所有灯都不会落在地上(允许碰触)的B的最低高度. uva 输出 double 用 %f,这一波坑的! #include < ...
- Myeclipse 加载ojdbc14.jar步骤
目的:加载驱动程序,需要找到驱动的具体位置,就是找到其驱动的类名,Class.forName("oracle.jdbc.driver.OracleDriver");//加载并注册驱 ...
- MVC5-10 ModleBinder那点事
模型绑定器 之前或多或少也提到过模型绑定器,方法的形参就是由模型绑定器把参数绑定上去的,今天就说说ModuleBingder那点事 在MVC中有一个接口叫IModuleBinder // // 摘要: ...
- CF 204B Little Elephant and Cards
题目链接: 传送门 Little Elephant and Cards time limit per test:2 second memory limit per test:256 megab ...
- angular $emit发送 后退时$on多次接收
angular 并列作用域,作用域不存在上下级关系,$scope.$emit发送时 后退时$rootScope.$on会出现接收多个消息的情况 $rootScope.$on('saveDraft', ...
- 日志分析 第六章 安装elasticsearch
在这里,以两台es集群为例. es集群健康状况有三种状态,这里我们搭建的es集群,只要两台不同时挂掉,数据不会丢失. green 所有主要分片和复制分片都可用 yellow 所有主要分片可用,但不是所 ...