数字签名

数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,可是使用了公钥加密领域的技术实现。用于鉴别数字信息的方法。

一套数字签名通常定义两种互补的运算。一个用于签名,还有一个用于验证。

签名

•签名是非对称加密的一种应用。使用私钥加密数据,就是对数据的签名
•签名是将数据通过运算后得到签名信息,被签名的数据发生不论什么改变哪怕这样的改变很细微,也无法获得相同的签名信息。

验签名

•验签名的过程就是使用公钥对私钥加密的数据解密并验证的过程
•验签名将被签名数据用同样的运算法则得到签名信息后与原有签名信息进行比較

散列算法/文摘算法/Hash

•就是把随意长度的输入(又叫做预映射),通过散列算法,变换成固定长度的输出。该输出就是散列值。这样的转换是一种压缩映射。也就是。散列值的空间通常远小于输入的空间,不同的输入可能会散列成同样的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将随意长度的消息压缩到某一固定长度的消息摘要的函数。

经常使用算法

•SHA-1 , SHA-256、MD5 , MD2

特点

•无法反向运行散列算法恢复最初的明文

•得到的摘要不会告诉不论什么关于最初明文的信息
•同一明文用同一散列算法,生成后的值唯一

PKI

•PKI(Public KeyInfrastructure)即”公钥基础设施”,是一种遵循既定标准的密钥管理平台
•简单地说,PKI技术就是利用公钥理论和技术建立的提供信息安全服务的基础设施。

认证机构CA

•CA是PKI的核心运行机构。是PKI的主要组成部分,通常称它为认证中心。

•从广义上讲。认证中心还应该包含证书申请注冊机构RA(Registration Authority),它是数字证书的申请注冊、证书签发和管理机构。

密钥备份及恢复

•密钥备份及恢复是密钥管理的主要内容,用户因为某些原因将解密数据的密钥丢失,从而使已被加密的密文无法解开。
•为避免这样的情况的发生。PKI提供了密钥备份与密钥恢复机制:当用户证书生成时,加密密钥即被CA备份存储(备份在KM)。当须要恢复时,用户仅仅需向CA提出申请,CA就会为用户自己主动进行恢复。

密钥和证书的更新

•一个证书的有效期是有限的。这样的规定在理论上是基于当前非对称算法和密钥长度的可破译性分析,在实际应用中是因为长期使用同一个密钥有被破译的危急,因此,为了保证安全,证书和密钥必须有一定的更换频度。

•PKI对已发的证书必须有一个更换措施,这个过程称为“密钥更新或证书更新”。

证书历史档案

•从以上密钥更新的过程,我们不难看出,经过一段时间后,每个用户都会形成多个旧证书和至少一个当前新证书。
•这一系列旧证书和对应的私钥就组成了用户密钥和证书的历史档案。记录整个密钥历史是很重要的。比如,某用户几年前用自己的公钥加密的数据或者其它人用自己的公钥加密的数据无法用如今的私钥解密,那么该用户就必须从他的密钥历史档案中,查找到几年前的私钥来解密数据。

client软件

•为方便客户操作。解决PKI的应用问题,在客户装有client软件。以实现数字签名、加密数据传输等功能。
•client软件还负责在认证过程中,查询证书和相关证书的撤消信息以及进行证书路径处理、对特定文档提供时间戳请求等。

交叉认证

•交叉认证就是多个PKI域之间实现互操作。
•交叉认证实现的方法有多种:一种方法是桥接CA。即用一个第三方CA作为桥,将多个CA连接起来。成为一个可信任的统一体。
•还有一种方法是多个CA的根CA(RCA)互相签发根证书,这样当不同PKI域中的终端用户沿着不同的认证链检验认证到根时,就能达到互相信任的目的。

PKI(公钥基础设施)基础知识笔记的更多相关文章

  1. JS基础知识笔记

    2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...

  2. Java多线程基础知识笔记(持续更新)

    多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...

  3. PKI公钥基础设施简介

    PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书.一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的 ...

  4. javascript基础知识笔记-自用

    笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...

  5. Mysql之基础知识笔记

    Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...

  6. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  7. JavaScript基础知识笔记

    做前端几年了,一直疏于整理归纳,所以这两天把基础看了一遍,加上使用经验,整理了基础知识中关键技术,旨在系统性的学习和备忘.如果发现错误,请留言提示,谢谢! 重要说明:本文只列举基础知识点,中级和高级内 ...

  8. Javascript 基础知识笔记

    标签(空格分隔): 廖老师学习笔记 javascript 基本入门 根据廖雪峰老师官网,自己看后的简单笔记 第一小节 基本知识 <script type="text/javascrip ...

  9. 初学MySQL基础知识笔记--01

    本人初入博客园,第一次写博客,在今后的时间里会一点点的提高自己博客的水平,以及博客的排版等. 在今天,我学习了一下MySQL数据库的基本知识,相信关于MySQL的资料网上会有很多,所以我就不在这里复制 ...

随机推荐

  1. Visual formatting model 可视化格式模型

    在可视化格式模型里,每个元素都是由一个或者多个盒子组成,这些盒子的布局由下面规则控制: box dimensions and type.(块元素和行内元素) positioning scheme (n ...

  2. 学习C++ -> 构造函数与析构函数

    学习C++ -> 构造函数与析构函数 一.构造函数的介绍    1. 构造函数的作用        构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用 ...

  3. 基于Django的python验证码

    验证码 在用户注册.登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视 ...

  4. 从MVC到Ajax再到前后端分离的思考

    前言 一位小妹去面试前端,前端leader问了"什么是ajax?",答:"接收后台的数据,然后然后自己填充和渲染样式":一位小哥去面试后台,技术经理问了&quo ...

  5. 【深圳】大湾区第三次.NET技术交流会(网络直播)

    活动简介 云.devops.微服务.容器是现在这个发展阶段的软件形态, 本次活动我们围绕这些话题介绍.NET生态下的发展.SQL Server 2017可根据需要运行本地部署的SQL Server,当 ...

  6. poj2485 highwaysC语言编写

    /*HighwaysTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 33595Accepted: 15194DescriptionTh ...

  7. Python入门 - 函数方法

    本节主讲python函数的基本用法,主要包括传递参数.匿名函数和变量作用域. 一.传递参数 python除了传递必需参数外,还可以传递默认参数,不定长参数和关键字参数. 1. 传递必需参数 def m ...

  8. 实际应用中遇到TimedRotatingFileHandler不滚动的问题

    需求: 程序每天晚上8点和10点定时运行,期望日志按日期记录 添加Handler部分代码如下: formatter = logging.Formatter("%(asctime)s %(fi ...

  9. 这些 Drawable 的小技巧,你都了解吗?

    一.前言 在 Android 的开发过程中,Drawable 经常会被用到,一般会用 Drawable 为 View 设置一个显示的效果.而在 Android 下,也提供了很多 Drawable 的默 ...

  10. 利用阿里云Centos7建站过程

    以下可能不尽详述,如有问题欢迎指出 准备过程:1. 阿里云主机一台2.域名一个 3.github个人帐号开始: 1.以root帐号登录云主机 2.安装apache [root@192 ~]# yum ...