数字签名

数字证书

巧了我就是萌 提交于 2019-12-02 12:12:45
本节聊的话题是数字证书。先来个预警,没有婚姻的社会里面,没有人能理解结婚证是干什么的,同理,不理解公开密钥加密技术的加密通信和数字签名这两个概念,也不会理解数字证书什么用。这些话题之前,前面小节中咱们都聊过了,不知道你有没有记住呢?好,那么什么是数字证书,发证机构的作用是什么,加密通信和数字签名过程中证书发挥什么作用呢?下面一一揭晓。 一. 什么是数字证书? 先给出一个精确的定义,究竟什么是数字证书呢?数字证书是一个由可信的第三方发出的, 用来证明所有人身份以及所有人拥有这个公钥的电子文件。 拿出一份典型的数字证书,看看里面到底都包含哪几项内容。 首先是发证机构 CA。 第二个是所有人姓名,例如 Peter 。 第三个是所有人公钥,以及公钥的过期时间。 最后一项就是 CA 的数字签名。 好,根据咱们已有的数字签名的知识,可以得出几个结论。 首先,数字签名是 CA 发出的,也就是说 CA 用自己的信用为这个证书做背书。 第二点,证书上同时带有所有人信息和公钥,数字签名保证了证书是不可篡改的,所以说,只要大家信任 CA ,就可以信任所有人和公钥之间的绑定关系。 所以说,数字证书就是第三方机构发行的证书,主要作用就是证明你的公钥的确是属于你的,而公钥其实就是我们在数字世界的身份,所以说数字证书的作用实际上就是证明你是你自己。 二. 数字证书的作用 下面我们详细说说数字证书的作用

常用的几种非对称加密算法

不问归期 提交于 2019-12-02 12:00:27
文章目录 `1、RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)` `2、DSA 签名` 相对对称加密而言,无需拥有同一组密钥,非对称加密是一种“信息公开的密钥交换协议”。非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密。这两个密钥是数学相关,用某用户密钥加密后的密文,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个密钥性质。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA。 RSA 能同时用于加密和数字签名,而DSA只能用于签名,本文重点讲解RSA。 1、RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman) 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙

散列算法概述与部分详解

一世执手 提交于 2019-12-02 07:07:14
2.2 散列算法介绍 散列算法介绍 2.2.1 散列算法(函数) 2.2.1.1 概念 2.2.1.2 数字签名(见PKI) 2.2.1 散列算法(函数) 概念 散列函数没有密钥,散列函数就是把可变输入长度串(叫做预映射, Pre-image)转换成固定长度输出串(叫做散列值)的一种函数。 散列函数又可称为压缩函数、杂凑函数、消息摘要、指纹、密码校验和、信息完整性检验(DIC)、操作认证码(Message Authentication Code, MAC)。 哈希消息验证码(HMAC) 用法: 可以利用散列函数进行数据文件的完整性校验。 数字签名(见PKI) 常用的消息摘要算法有: MD5算法 SHA算法 RIPEMD算法 MAC: 消息认证码(带密钥的Hash函数)。密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。 安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要【hash】所获得的一个值,可用于数据源发认证和完整性校验。 1. 发送者通过MAC算法计算出消息的MAC值,并和消息一起发给收信者 2. 收信者用同样的MAC算法计算收到的消息的MAC值,并对比两者。 HMAC: Hash-based message authentication code,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

学习笔记之RSA算法原理与应用

折月煮酒 提交于 2019-12-02 05:15:41
工作中遇到SSH的时候实在多,关于密钥分发也是重要的任务。那公钥和私钥是怎么产生的,RSA算法原理是什么?强迫症患者当然不满足仅仅是what and how,自然要知道why。华章译丛的数学专著我向来喜欢,那本《初等数论及应用(原书第六版)》就成了我接下来要面对的任务。 然后做了读书笔记,方便以后复习理解。我实在没有时间手打文字贴上来,只好就着图片放出来了. 既然知道密钥对的原理,下面来梳理一下它的应用。 一.使用RSA算法的步骤: 1.接收方生成一个公钥+私钥的密钥对; 2.私钥由接收方妥善保管,公钥发给发送方(宇宙众生皆可盗取); 3.发送方用收到的公钥对发送信息进行加密形成密文,然后发给接收方; 4.接收方收到密文后,用司机的私钥解密成明文。 二.使用消息认证码的步骤: 1.发送方与接收方事先共享会话密钥(万万不可公开); 2.发送者使用共享密码对消息计算MAC值(将密钥和数据同时作为输出); 3.发送方将消息和MAC值一起发给接收方; 4.接收方收到消息后使用共享密钥计算消息的MAC值,与收到的MAC值对比; 5.若2个MAC值一致,则认为消息来源正确且未经篡改。 三.数字签名的使用步骤: 数字签名不是为了保证消息机密性,主要是为了识别篡改和伪装,可以复制且有效。 1.发送者产生密钥对(此处不再是接收者),私钥给自己,公钥给接收者,保证公钥来自真正的发送方是至关重要的环节;

加密、解密、数字签名和数字证书详解

大兔子大兔子 提交于 2019-12-02 03:22:31
1. 概述 随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤其是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活动,公开密钥基础设施(PKI, Public Key Infrastructure)逐步在国内外得到广泛应用。我们是否真的需要PKI,PKI究竟有什么用?下面通过一个案例一步步地来剖析这个问题。 2. 案例 2.1 案例内容 甲想将一份合同文件通过Internet发给远在国外的乙,此合同文件对双方非常重要,不能有丝毫差错,而且此文件绝对不能被其他人得知其内容。如何才能实现这个合同的安全发送? 2.2 问题1 问题1 :最自然的想法是,甲必须对文件加密才能保证不被其他人查看其内容。那么,到底应该用什么加密技术,才能使合同传送既安全又快速呢?   可以采用一些成熟的 对称加密算法 ,如DES、3DES、RC5等对文件加密。对称加密采用了对称密码编码技术, 对称加密的特点是文件加密和解密使用相同的密钥 ,即加密密钥也可以用做解密密钥,这种方法在密码学中叫做对称加密算法, 2.3 问题2 问题2: 如果黑客截获此文件,是否用同一算法就可以解密此文件呢?   不可以,因为加密和解密均需要两个组件:加密算法和对称密钥,加密算法需要用一个对称密钥来解密,黑客并不知道此密钥。 2.4 问题3 问题3: 既然黑客不知密钥

密码技术之认证

人走茶凉 提交于 2019-12-02 03:11:11
第二部分:认证   当比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就行了。   一、单向散列函数(one-way hash function)     单向散列函数也称为消息摘要函数(message digest function)、哈希函数或者杂凑函数。     单向散列函数有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)也称为消息摘要(message digest)或者指纹。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。所谓完整性是指有没有被篡改,或称为一致性。     这里的消息可以是文字,图片或者文件等。并且散列值的长度和消息的长度无关,无论消息的大小是多少,散列函数都会计算出固定长度的散列值。如SHA-256单向散列函数,它计算出的长度永远 是256bit。   单项散列函数的性质   (1)、根据任意长度的消息计算出固定长度的散列值   (2)、能够快速计算出散列值   (3)、消息不同,散列值也不相同(哪怕1bit,散列值也不同),难以发现碰撞的性质称为抗碰撞性,密码技术中所使用的单向单列函数,都具备抗碰撞性。也就是说难以找到两条消息的散列值相同。   (4)、具备单向性,指无法通过散列值反算出消息的性质。破镜不能重圆   单项散列函数的实际应用  

C#编程总结(八)数字签名

∥☆過路亽.° 提交于 2019-12-02 02:59:16
转载: https://www.cnblogs.com/yank/p/3533998.html C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅、签名和盖章,由于公司业务开展,跨地域、跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄、传真等方式来解决,但是耗费时间、人力、物力。在网络化日益深入的今天,需要领导审批、签字盖章的东西越来越多,时间也越来越紧迫,数字签名的出现,很好了解决了这一问题。推动了互联网及跨国集团的发展。 数字签名 1、概念 数字签名基于哈希算法和公钥加密算法,对明文报文先用哈希算法计算摘要,然后用私钥对摘要进行加密,得到的值就是原文的数字签名。 数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。 一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。 可以由下图表示电子签名的用处: 2、工作原理 流程图如下:   数字签名的使用一般涉及以下几个步骤,我们通过安全电子邮件为案例进行介绍   (1)发件人生成或取得独一无二的加密密码组,包括私钥和公钥。   (2)发件人书写电子邮件   (3)发件人用安全的摘要算法获取电子邮件的信息摘要 (4)发件人再使用私钥对信息摘要进行加密,即可得到数字签名。     (5)发件人将数字签名附在信息之后

什么是数字签名和数字证书

丶灬走出姿态 提交于 2019-12-02 02:10:38
数字签名 A: 信息 - (用Hash函数)-》 摘要 (用A的私钥加密) 数字签名 数字签名+信息 发给B B: 1. 数字签名 (A的公钥解密) 摘要 2. 信息   (用Hash函数) 摘要 如果1 和 2 中结果相等,则证明信息在传递过程中没有被修改。但这里存在一个问题怎么证明A的公钥没有问题呢? 数字证书 A去证书中心(certificate authority,简称CA)为A的公钥做认证。 A的公钥+其他相关信息   (证书中心的私钥加密)   数字证书 (Digital Certificate) A: 信息+数字签名+数字证书 发给B B: 1. 数字证书   (CA的公钥解密) A的公钥 2. 数字签名 (A的公钥解密) 摘要 3. 信息   (用Hash函数) 摘要 如果2 和 3 中结果相等,则证明信息在传递过程中没有被修改。且信息确实来自A。 来源: https://www.cnblogs.com/huangtq/p/11714533.html

delphi开发activex控件的心得

 ̄綄美尐妖づ 提交于 2019-12-01 22:18:54
delphi开发activex控件 2009-01-12 12:18:01| 分类: delphi | 标签: |举报 |字号大中小 订阅 用Delphi开发OCX的心得 最近在做的一个B/S系统要在客户端读取USB锁的要求,所以就需要写一个OCX来验证。原来也没有做过,所以 折腾了好几天,总算有点眉目了,所以把心得写下,交流下。 首先要弄明白你要写的OCX是用在客户端还是用在服务器端 假如用在客户端: 1、创建 打开delphi 7,选择菜单“new”->“other”->“activex”->“active form”->输入项目名称, 系统自动给你创建了3个文件,一个是项目文件,一个是form的单元文件,还有一个后缀带TLB 的文件。这三个文件中的你只需要更改form的单元文件,项目文件一般不需要写什么,TLB文件 有系统自动维护。 2、增加接口函数 所谓接口函数就是调用OCX的程序可以直接调用的函数,如果你要写的函数不提供 外部函数可以按常规声明就可以。但要声明接口函数则必须按步骤声明,有两种途径,其一:选择form 单元文件,然后点击“edit”->“add to interface”,弹出一个对话框,输入要声明的函数,如:function fun:integer; 其二:选择form单位文件,然后点击“view”->“Type Library”,弹出一个对话框

对称加密与非对称加密和HTTPS

独自空忆成欢 提交于 2019-12-01 16:25:55
为什么需要加密,因为HTTP是明文传输,不安全。 对称加密 浏览器和服务器使用同一个密钥进行加密和解密。没有该密钥不能获取到传输的内容。看似是正确的没有错误。但是怎么保证该密钥能安全的让双方知道呢,服务器生成密钥发送给浏览器的过程中是有可能被截获该密钥的。有的人可能会想,如果浏览器一开始就有该密码就可以了,但是你想想让浏览器去保存所有HTTPS网站的密钥?这不现实吧。 非对称加密 浏览器和服务器同时拥有公钥和私钥,公钥用来加密,私钥用来解密。公钥是可以在网络中传输的。 过程是这样的: 浏览器拥有公钥A和私钥A',服务器拥有公钥B和私钥B' 浏览器向服务器发送请求时,服务器明文传输公钥B给浏览器。 浏览器用公钥B进行加密发送给服务器,服务器收到后用私钥B'进行解密,因为只有服务器有该密钥B',所以是安全的。 同理,服务器向浏览器传输的道路上用浏览器的公钥加密,浏览器收到后用浏览器的私钥进行解密。 这样两条路的安全都可以保证是安全的了(其实是不安全的) 先抛开非对称加密的不安全性不说来谈谈为什么HTTPS不是用的这种加密? 很简单,这种方式太过于繁琐和耗时,效率不高。而对称加密算法则比这快的多,那么我们可不可以使用两者的结合呢? 非对称加密+对称加密 HTTPS真正采用的是这种加密方式。 大致的过程就是使用非对称加密的方式传送密钥,那么该密钥就是双方就安全的得到了