X.509,RSA,PKCS 普及
X.509
X.509是一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准,因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。
在一份证书中,必须证明公钥及其所有者的姓名是一致的。对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。X.509标准定义了证书中应该包含哪些信息,并描述了这些信息是如何编码的(即数据格式)
详细特征
所有的X.509证书包含以下数据:
1、X.509版本号:指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息。目前的版本是3。
2、证书持有人的公钥:包括证书持有人的公钥、算法(指明密钥属于哪种密码系统)的标识符和其他相关的密钥参数。
3、证书的序列号:由CA给予每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将此证书序列号放入由CA签发的CRL(Certificate Revocation List证书作废表,或证书黑名单表)中。这也是序列号唯一的原因。
5、证书的有效期:证书起始日期和时间以及终止日期和时间;指明证书在这两个时间内有效。
6、认证机构:证书发布者,是签发该证书的实体唯一的CA的X.500名字。使用该证书意味着信任签发证书的实体。(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书)
7、发布者的数字签名:这是使用发布者私钥生成的签名,以确保这个证书在发放之后没有被撰改过。
8、签名算法标识符:用来指定CA签署证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法。
证书结构
扩展文件
RSA算法
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
会话密钥
当我们在进行通信的时候,常常需要在C/S两端分配一个会话密钥,然后利用对称密码算法对通信的数据加密,当然了,也可以使用非对称加密算法,但是非对称加密会使加密速度降低了一个数量级,因此并不适用。那么如何安全的在不安全的信道中分发会话密钥呢?
有两种方式,一种使用共享密钥机制,这样的协议很多,比如D-H密钥分配协议、kerberos认证协议等等。但是使用共享密钥进行会话密钥的分发很麻烦,而且还有各种漏洞。作为工程人员,我们当然不希望进行复杂的多次协商才能完成认证的工作。
那么使用公开密钥机制就可以完成这个工作了。
1、首先A获取B的公钥Eb,然后A随机选择一个随机数Ra,然后将Eb(A,Ra)发送给B。
2、B获取到数据之后,利用自己的私钥解密出结果为A,Ra,然后B获取A的公钥Ea,然后B选择一个会话密钥Ks和一个随机数Rb并将数据Ea(Ra,Ks,Rb)发送给A。
3、A在收到数据之后,使用自己私钥后发现有Ra,这个数据是刚刚发给B的,Ra除了B不可能有任何知道,因为只有B才能解密。所以A确定他对面肯定是B,但是这时候B并不确定对面是不是A,还是H,因为H可以宣称自己是A,所以最好的验证方法是B确定A肯定能够解密发送给A的数据。
4、于是A 在上面收到数据之后,解密之后发现有Rb,和Ks,此时将数据Ks(Rb)发送给B。当然了,此时,B肯定知道它对面通信的是A了,于是这样就完成了相互认证,并分发共享密钥的操作。
那么为什么最后一步不是Eb(Rb),而要Ks(Rb)呢?我个人认为主要有两点:1、Eb是公开的,前者的随机性相当于只有Rb来保证,而后者Ks和Rb只有A才会知道,所以随机性更大;2、还是一样,对称密码算法速度会更快
X.509,RSA,PKCS 普及的更多相关文章
- .NET Core RSA 指南与增强扩展 RSAExtensions
一. 前言 RSA 作为最常用的非对称加密算法,在我们的实际使用中还是比较常见的,特别是对接支付十有八九都会遇到,或者是其他需要数据安全的业务场景.在 .NET Framework 以及 .NET C ...
- PKI系统深入介绍
公钥基础设施(Public Key Infrastructure,简称PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障,因 此,对PKI技术的研究和开发成为目前信息安全领域的热点. ...
- PKI系统深入的介绍
公钥基础设施(Public Key Infrastructure,缩写PKI)的基础与核心.是电子商务安全实施的基本保障.因此.对PKI技术的研究和开发成为眼下信息安全领域的热点. 本文对PKI技术进 ...
- PKI
公钥基础设施(Public Key Infrastructure,简称PKI)是眼下网络安全建设的基础与核心,是电子商务安全实施的基本保障,因此,对PKI技术的研究和开发成为眼下信息安全领域的热点.本 ...
- [转帖]PKI系统深入介绍
PKI系统深入介绍 https://blog.csdn.net/liuhuiyi/article/details/7776825 2012年07月23日 20:17:01 liuhuiyi 阅读数 4 ...
- Creating a radius based VPN with support for Windows clients
This article discusses setting up up an integrated IPSec/L2TP VPN using Radius and integrating it wi ...
- 部分rpm包总结描述
acl-2.2.51-15.el7.x86_64 Commands for Manipulating POSIX(可移植操作系统接口 of unix) Access Control Lists.有ge ...
- key解析
密钥在不同实体之间传递,因此密钥必须可以序列化. 所有密钥三个特性: 算法:密钥使用的算法,如DES和DSA等,通过getAlgorithm()获取算法名 编码形式:密钥的外部编码形式,如X.509, ...
- ASN.1 key structures in DER and PEM
转自:https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pem Introduction Everybody lo ...
随机推荐
- 【皇甫】☀初识AOP
新知识,新起点,下面介绍一下aop所要准备架包和各个层 特点: 创建好的各个层: 所需架包: 具体步骤: No.1 搭建分层架构 entity 1 public class User impleme ...
- 关于sigwait
刚开始看sigwait函数,只是知道它是用来解除阻塞的信号,可是使我疑惑的是那么解除了以后为什么线程收到终止信号SIGINT的时候还是没能终止呢? 于是网上找了一些资料,总的理解如下所示: sig ...
- Win下,通过Jstack截取Java进程中的堆栈信息
在Java软件的使用过程中,有时会莫名的出现奇怪的问题.而这些问题常常无法使用日志信息定位,这时我们就需要通过查看进程内部线程的堆栈调用关系来分析问题出在哪里. 举个例子,当我们在做某个操作时,莫名的 ...
- 家长-Parents表增加字段Token,Gender,Email,Portrait
家长-Parents表增加字段Token,Gender,Email,Portrait ) ) ) )
- PB函数大全
PB函数大全 Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL, ...
- asp.net mvc4 MvcMusicStore
最近危机感紧迫,总想学些东西.又因为之前mvc的知识不够系统和牢固,所以最近想系统的过一遍.自然买了两本书来看,一边看一边对比.尽量做到每个地方都过一下.今天遇到一个问题所以记一下博客. 环境:win ...
- php读取excel内容
使用php读取到excel文件中的内容 1.下载PHPExcel类 2.代码: header("Content-type:text/html;charset=utf-8");req ...
- NSURLSessionTask使用dispatch_semaphore 完成同步机制
在NSURLSessionTask发起网路请求时,一般是异步操作,如果需要进行同步等待的话,可采用dispatch_semaphore_t信号量基于计数器的一种多线程同步机制.但是在多个线程访问共有资 ...
- windows2008 c盘清理
可以删除 C:\inetpub\logs\LogFiles 里面的日志文件
- python之计算器(第四天)
作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...