数字证书原理

基础知识

1. 公钥密码体制

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

  • 加密:通过加密算法和公钥对明文进行加密,得到密文。
  • 解密:通过解密算法和私钥对密文进行解密,得到明文。
  • 注:由公钥加密的内容,只能由私钥进行解密;由私钥加密的内容,只能由公钥进行解密。

公钥密码体制的公钥和算法都是公开的,私钥是保密的。

2. RSA

RSA算法一直是最广为使用的"非对称加密算法"(加密使用的密钥和解密使用的密钥是不相同的)

这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

RSA密码体制是一种公钥密码体制。

3. 签名
是在信息的后面再加上一段内容,可以证明信息没有被修改过。

一般是对信息做一个hash计算得到一个hash值。
注:这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。

在发送信息时,会把得到的hash值加密后做为一个签名和信息一起发出去。 接收方在收到签名和信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里的hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。

HTTPS通信过程

注:以下内容将使用:{} 表示加密后的内容,[ | ]表示密钥和算法进行加密

  1. client 发送请求。
    client -> server : hi,你是服务器吗?

  2. server 发送自己的数字证书,证书中有服务器的公钥。(server持有私钥)
    server -> server : hi,我是服务器,这是我的数字证书。

  3. client 检验数字证书,证书正确发送随机的字符串
    client -> server : 请证明你是服务器!这是一个随机字符串。

  4. server 先对随机字符串hash处理,再加密
    注:防止黑客模拟用户发送特殊字符串,从而破解
    server -> server : {hash处理的随机字符串}[私钥|RSA]

  5. client 验证hash处理的随机字符串,发送一个对称加密算法和密钥,并用公钥加密
    client -> server : {对称加密算法和密钥}[公钥|RSA]

  6. 之后 client与server之间用 client发送的对称加密算法加密,进行信息传输(增加序号;增加信息摘要:对信息进行hash计算;每次通讯都需要增加)
    注:

    • (增加序号):防止黑客捣乱(多次重发已发过的信息)
    • (增加信息摘要):防止黑客修改密文

    server -> client : {序号0,已收到你发的对称加密算法和密钥,你想干啥?摘要}[密钥|对称加密算法]
    client -> server : {序号1,haha,摘要}[密钥|对称加密算法]
    server -> client : {序号2,hehe,摘要}[密钥|对称加密算法]

证书的构成和原理

  • Issuer (证书的发布机构)
    指明这个证书是什么机构发布的(只是创建证书,不是指证书的使用者)。

  • Valid from , Valid to (证书的有效期)
    证书的使用期限。 过了有效期限,证书就会作废,不能使用。

  • Subject (主题)
    证书的所有者

  • Public key (公钥)

  • Signature algorithm (签名所使用的算法)
    指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名

  • Thumbprint, Thumbprint algorithm (指纹以及指纹算法)
    用来保证证书的完整性的,也就是说确保证书没有被修改过。
    原理:在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。
    注:指纹以及指纹算法 会使用证书机构的私钥用签名算法加密

  • yyy所有者的证书如下:
    ×××××××××××××××证书内容开始×××××××××××××××××

    Issuer : xxx

    Subject : yyy

    Valid from : 某个日期

    Valid to: 某个日期

    Public Key : 一串很长的数字

    Signature algorithm : zzz
    …… 其它的一些证书内容……

    {证书的指纹和计算指纹所使用的指纹算法}[xxx的私钥|zzz]

    ×××××××××××××××证书内容结束×××××××××××××××××

详细数字证书原理

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

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

相关文章

【POJ - 1087】A Plug for UNIX(建图,网络流最大流)

题干: You are in charge of setting up the press room for the inaugural meeting of the United Nations Internet eXecutive (UNIX), which has an international mandate to make the free flow of information and ideas on the Internet as cumbersome and …

框架基础——全面解析Java注解

阅读目录 一、概念二、Java中的常见注解三、注解的分类四、自定义注解五、注解的项目实战六、注解总结 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码&…

CS231n Convolutional Neural Networks for Visual Recognition------Scipy and MatplotlibTutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

自签名CA认证

自签名CA认证 用openssl命令生成自己的根证书,让用户安装信任它,之后所有用这个根证书签名的证书,就可以被信任。 生成根证书 创建文件并配置环境mkdir /root/ca cd /root/ca mkdir certs crl newcerts private chmod 700 private touch i…

注解由谁读取并解析的?

问题: 注解由谁读取并解析的?描述: java web 开发,使用ssh框架。在dao层,定义的类的头上有Component("GzDAO")注解,在service层, 定义的类的头上有Service(value "GzService")&…

Python之Numpy入门实战教程(1):基础篇

Numpy、Pandas、Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程。NumPy是使用Python进行科学计算的基础库。 NumPy以强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。 强烈建议大家将本文中…

Go初识与问题

变量&常量 变量 命名 由字母、数字、下划线组成,首个字符不能是数字关键字、保留字不能作为变量名变量名字区分大小写驼峰命名声明 1. var : 全局变量var 变量名称 类型var 变量名称1,变量名称2 类型 (同一种类型)var (变量名称1 类型1变量名称2 类型…

【HDU - 4597】Play Game(博弈dp)

题干: Alice and Bob are playing a game. There are two piles of cards. There are N cards in each pile, and each card has a score. They take turns to pick up the top or bottom card from either pile, and the score of the card will be added to his …

1.3)深度学习笔记------浅层神经网络

目录 1)Neural Network Overview 2)Neural Network Representation 3)Computing a Neural Network’s Output(重点) 4)Vectorizing across multiple examples 5)Activation functions 6&a…

git 实战

配置ssh git config --global user.name "用户名" git config --global user.email "邮箱"ssh-keygen -t rsa -C "邮箱"需要进行确认:1. 确认秘钥的保存路径(不需要改直接回车)2. 如果上一步置顶的保存路径下已经有秘钥文件&…

SpringMVC 的执行流程

SpringMVC 的执行流程 1)用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet捕获; 2)DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI&…

【POJ - 2987】Firing(最大权闭合图,网络流最小割,输出方案最小,放大权值法tricks)

题干: You’ve finally got mad at “the world’s most stupid” employees of yours and decided to do some firings. You’re now simply too mad to give response to questions like “Don’t you think it is an even more stupid decision to have signed …

kafka初识

kafka中文文档 本文环境:ubuntu:18.04 kafka安装、配置与基本使用(单节点) 安装kafka 下载 0.10.0.1版本并解压缩 > tar -xzf kafka_2.11-0.10.0.1.tgz > cd kafka_2.11-0.10.0.1.tgzkafka简单配置 > vi config/server.properties主要注意三个地方&a…

1.4)深度学习笔记------深层神经网络

目录 1)Deep L-layer neural network 2)Forward Propagation in a Deep Network(重点) 3)Getting your matrix dimensions right 4)Building blocks of deep neural networks 5)Forward and Backward Propagation…

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面…

【洛谷 - P1772 】[ZJOI2006]物流运输(dp)

题干: 题目描述 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在&am…

RabbitMQ初识

官方介绍 - 中文 本文环境:ubuntu:20.04 RabbitMQ安装、配置与基本使用 安装RabbitMQ # 简易脚本安装 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash sudo apt-get install rabbitmq-server -y --f…

Apollo进阶课程 ⑦ | 高精地图的采集与生产

目录 1.高精地图采集过程中需要用到的传感器 1.1)GPS 1.2)IMU 1.3)轮速计 2.高精地图采集过程中的制图方案 2.1)方案一 激光雷达 2.2)Camera融合激光雷达 原文链接:Apollo进阶课程 ⑦ | 高精地图的采…

【BZOJ 3831】【Poi2014】Little Bird(单调队列优化dp)

题干: Description In the Byteotian Line Forest there are trees in a row. On top of the first one, there is a little bird who would like to fly over to the top of the last tree. Being in fact very little, the bird might lack the strength to f…

你看不懂的spring原理是因为不知道这几个概念

背景 问题从一杯咖啡开始。 今天我去楼下咖啡机买了一杯「粉黛拿铁」。制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力。咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉…