PKI和加密,散列算法
Day 11-PKI和加密,散列算法
PKI(Public Key Infrastructure公钥基础设施)
- 1 PKI(Public Key Infrastructure公钥基础设施)回顾学习 - 签名等过程
- 1.1 基础说明:
- 1.1.1 PKI技术-CAs架构(Single-Root CA -简单/Hierarchical CAs-分层/Cross-Certified CAs-交叉认证)
- 1.1.1.1 分层架构
- 1.1.2 PKI和用途密钥
- 1.1.3 公钥加密(非对称加密算法)/数字签名(散列+密钥)/数字证书(基于非对称算法,以一个密钥对加以说明)
- 1.1.3.1 概述
- 1.1.3.2 数字签名过程:
- 1.1.3.3 Single-Root CA过程说明(数字签名到数字证书),数字证书主要是对各自的公钥做认证。
- 2 VPN算法学习
PKI(Public Key Infrastructure公钥基础设施)回顾学习 - 签名等过程
点击此处展开...
为后续VPN打基础:
建立IPsec VPN认证双方的身份有3种方式:
pre-share-key预共享枕钥,VPN双方使用相同的宽码认证。
RSA公钥加密,VPN双方使用相同的RSA密钥对进行加解密
RSA签名,数字证书认证双方的身份信息合法性
基础说明:
点击此处展开...
- PKI:需要支持大规模基于公钥的技术的服务架构。
- CA:证书(认证)中心(certificate
authority,简称CA),或受信任的第三方协议,它们在网络中签署公钥。
- 数字证书:将名字绑定到CA签署的公钥上面的文书。
点击此处展开...
PKI技术-CAs架构(Single-Root CA -简单/Hierarchical CAs-分层/Cross-Certified CAs-交叉认证)
点击此处展开...
分层架构
ROOT CA:
这是第一个CA被安装在你的PKI部署中
1.在层次化的PKI中是最高级别
2.可以作为一个功能齐全的客户端证书的生命周期管理(管理客户端证书的生命周期)
3.有在PKI中的最高寿命自签名数字证书。
4.可以把所有CA功能委托给子CA
5.可以将部分功能委托给RA
6.子CA,根CA不在线出于安全原因,颁发证书给下属子CA负责。
SUB CA:
这是第二个CA被安装在你的PKI中
1.在层次化的PKI中是第二高级别
2.也可以从一个SUB CA到另一个SUB CA
3.有CA的全部功能(管理客户端的证书有效期内)
4.会收到一张从根CA颁发的数字证书
5.能委托全部CA功能给其他SUB CA
6.能委托部分功能给RA
RA(注册授权服务器)
在PKI体系中是一个可选项
1.作为一个代理在客户端和root CA或者SUB CA之间
2.他的功能执行默认是由rootCA或者SUB CA
3.认证和授权客户端的证书请求
4.转发合法和批准请求给rootCA或者subCA
5.不能颁发客户端证书
RA就像是CA的代理
RA使得CA对网络的暴露性降低
点击此处展开...
PKI和用途密钥
点击此处展开...
一些KPI需要用户同时拥有两组密钥对
一组只为加密使用
另一组只为解密使用
- 两组密钥对长度可以不同
- 用户拥有两个证书:一个加密证书和一个签名证书
公钥加密(非对称加密算法)/数字签名(散列+密钥)/数字证书(基于非对称算法,以一个密钥对加以说明)
概述
点击此处展开...
使用对称和非对称密码算法都可以实现数字签名。
目前采用较多的是公钥加密技术。
数字签名过程:
点击此处展开...
使用公钥加密技术的签名和验证过程是(二进制):
1)发送方(甲)先用单向散列函数对某个信息(如合同的电子文件)A进行计算,得到128位的结果B,再用私钥SK对B进行加密,得到C,该数据串C就是甲对合同A的签名。
2)他人(乙)的验证过程为:乙用单向散列函数对A进行计算,得到结果B1,对签名C用甲的公钥PK进行解密,得到数据串B2,如果B1=B2,则签名是真的,反之签名则为假的。
使用公钥加密技术的签名和验证过程是(具体):
1. A对其要发送给B的文档使用Hash函数,生成文档的摘要(digest),摘要是一个单向散列值。
2. A使用自己的私钥对单向散列值进行加密,加密后的消息摘要生成"数字签名"(signature)(哈希消息验证码HMAC)
3. A将数字签名附着在文档下面连同自己的公钥一起发给B。
4. B收到文档,取下数字签名,使用A的公钥对数字签名进行解密,得到文档的摘要,知道文档是A发的。
5. B同时针对文档本身使用Hash函数,计算出从A收到的文档的单向散列值。比较计算出来的散列值和上一步解密出来的散列值,如果一样表示文档没有被篡改过。
只要文档被篡改,那么只是细微的改变,都会造成计算出来的散列值和原来的有巨大差别(雪崩效应)
使用公钥加密技术的签名和验证过程是(OSI分层):
Single-Root CA过程说明(数字签名到数字证书),数字证书主要是对各自的公钥做认证。
点击此处展开...
首先Jane向Root CA申请根证书(自签名证书,有有效期),也就是加密请求。
Root CA产生(两个,一个只加密,一个只签名)密钥对,用(加密密钥对的)私钥对(经过签名密钥对的私钥)签名后的证书加密后(类似数字签名),将根证书(已附着公钥)发给用户Jane。
Jane用户(首次)用CA的(加密密钥对的)公钥解密,用计算出的单项散列值对比解密的散列值,对比无误。Jane用户申请个人证书,密钥对,将自己的个人证书连同自己的公钥发给CA,CA用Jane用户的公钥解密,认对比正确后,再用CA自己的私钥加密Jane用户的个人证书,最后发给Jane用户。
Phil同样如此。此时每个用户拥有俩个私钥,三个公钥(俩个自己的,一个Root
CA的)。而Root CA拥有俩个私钥,四个公钥(俩个自己的,一个Jane的,一个Phil的)
Jane用户和Phil用户,通过Root CA认证公钥,进行加密通信。
VPN算法学习
点击此处展开...
密码学有两个子学科: 密码学和密码分析。
密码科学包括两个方面:加密和解密。
- 加密是创建秘密编码的技术
- 解密是破解这些编码的技术
与密码学一样,加密也包括两个方面:加密算法和散列算法(散列函数-Hash
function,哈希函数)
- 通常加密算法的目的是保护机密。
- 哈希算法的首要目的是身份验证和核实。
加密密钥
- 一个密钥是加密算法所需的参数。
关于密钥有两个不同的概念:
- 对称加密算法:相同密钥加密和解密数据,加密和解密数据使用同一秘钥
- 非对称加密算法:不同密钥加密和解密数据
加密算法:
对称对称加密算法 :块加密算法、流加密算法。【IDES (Data Encryption Standard),3DES,AES(Advanced
Encryption Standard)(还可无线),IDEA,RC4】
非对称加密算法: 【RSA,DH(Diffie-Hellman,迪菲-赫尔曼)】
数据报文验证 :
HMAC
MD5,SHA1,RIPEMD算法
核心:通过非对称加密算法加密对称加密算法的密钥;然后再用对称加密算法加密实际要传输的数据。
核心:公钥密码体制基于数学函数,而单钥密码体制的基础是替代和置换( DES)
单钥加密速度快,适合于加密数据。
公钥加密速度慢,但管理简单,适合于数字签名、认证和传递密钥。
加密算法特征
- 抵御已知的密码分析攻击
- 可变秘钥长度和规模
- 雪崩效应:明文上的小变化引起密文的重大变化
- 没有出口或进口限制
加密算法介绍
点击此处展开...
对称加密算法
概念
点击此处展开...
- 发送者和接受者必须使用一个相同的秘钥。
- 通常非常快捷(wire speed)
- 这些算法基于简单的数学运算。
- 对称加密算法实例包括DES、3DES、AES、IDEA、RC2/4/5/6和Blowfish
分组(块)加密和流加密:
分组密码
- 分组密码将固定长度的一组明文数据转换成一组相同长度的密文数据
- 组的长度(块大小)根据算法不同而不同
- 使用填充来让数据尺寸数倍于分组尺寸(块大小)
- 密文通常比明文要长
流密码
- 流密码在更小的明文单位上进行操作,如比特
- 信息尺寸通常不会改变
- 更小的明文单位的转换根据加密时的不同而不同
图例
点击此处展开...
DES概述
点击此处展开...
分组加密算法:明文和密文为64位分组长度
§ 对称算法:加密和解密除密钥编排不同外,使用同一算法
§ 密钥长度:56位,但每个第8位为奇偶校验位,可忽略
§ 密钥可为任意的56位数,但存在弱密钥,容易避开
§ 采用混乱和扩散的组合,每个组合先替代后置换,共16轮
§ 只使用了标准的算术和逻辑运算,易于实现
加密过程:
非对称加密算法
概念
点击此处展开...
- 非对称加密算法亦被称为公钥算法
- 秘钥的一般长度为512 – 4096比特
- 这些算法相对都很慢因为他们基于不同的计算机算法
- 非对称加密算法实例包括RSA、ElGamal、elliptic curves和DH。
核心:通过非对称加密算法加密对称加密算法的密钥;然后再用对称加密算法加密实际要传输的数据。
核心:公钥密码体制基于数学函数(陷门单向函数 ),而单钥密码体制的基础是替代和置换( 比如:DES等)
单钥加密速度快,适合于加密数据
公钥加密速度慢,但管理简单,适合于数字签名、认证和传递密钥。
图例
点击此处展开...
RSA概述
点击此处展开...
RSA算法的实现
n 加密
n 加密消息m时,首先要将明文m分成比n小的数据分组(如果采用二进制数,选取小于n的2的最大次幂),对每一组分别加密
n
n 解密:
若对具体的栗子感兴趣,可以和我一起研究,就不往上放了,格式特别难搞。
对RSA的攻击:
强力攻击(穷举法):尝试所有可能的私有密钥。
数学分析攻击:各种数学方法,等价与两个素数乘积的因子分解。
其他攻击:对RSA的具体实现存在一些攻击方法,但不是针对基本算法的,而是针对协议的。如选择密文攻击、公共模攻击、低加密指数攻击、低解密指数攻击
。
重点在选择密文攻击。
RSA的诟病:
- RSA涉及到大数的高次幂运算,因此速度较慢,通常用硬件实现,速度大约是DES的1500分之一。
- 因此用RSA加密所有的信息是不现实的,RSA适用于加密的少量数据,如会话密钥和散列值。
- 通常将公钥( RSA)和单钥(
DES)结合起来会达到更好的效果 。
散列算法介绍
点击此处展开...
散列算法(函数)
概念
点击此处展开...
散列函数没有密钥,散列函数就是把可变输入长度串(叫做预映射, 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,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
a specific construction for calculating a message
authentication code (MAC) involving a cryptographic
hash function in combination with a
secret cryptographic key. As with any
MAC, it may be used to simultaneously verify both the data integrity and
the authenticity of a message.【主要是为了能让人对对方身份正确性和消息有效性进行验证,与消息摘要的最大不同,就是有签名密钥!】
方法:
HMAC(K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))
https://www.cnblogs.com/songhan/archive/2012/07/29/2613898.html中有MAC和HMAC的具体区别。
HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,MD5,SHA1不需要。
数字签名(见PKI)
PKI和加密,散列算法的更多相关文章
- 个人理解c#对称加密 非对称加密 散列算法的应用场景
c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...
- 加密散列算法——SHA-1
与MD5算法类似,SHA-1算法也是在接收到消息后产生消息摘要,能够用来验证数据的完整性. 不同的是SHA1会产生一个160位的消息摘要(MD5产生的是128位). 其它的性质之类的不多说(请參考前面 ...
- shiro中自定义realm实现md5散列算法加密的模拟
shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...
- 加密算法和MD5等散列算法的区别(转)
本文转自http://www.cnblogs.com/eternalwt/archive/2013/03/21/2973807.html 感谢作者 1.在软件开发的用户注册功能中常出现MD5加密这个概 ...
- Android数据加密之SHA安全散列算法
前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好 ...
- SHA安全散列算法简析
1 SHA算法简介 1.1 概述 SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散 ...
- shiro进行散列算法操作
shiro最闪亮的四大特征:认证,权限,加密,会话管理 为了提高应用系统的安全性,这里主要关注shiro提供的密码服务模块: 1.加密工具类的熟悉 首先来个结构图,看看shiro提供了哪些加密工具类: ...
- Shiro入门学习之散列算法与凭证配置(六)
一.散列算法概述 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5.SHA等,一般进行散列时最好提供一个salt(“盐”),什么意思?举个栗子 ...
- PHP密码散列算法的学习
不知道大家有没有看过 Laravel 的源码.在 Laravel 源码中,对于用户密码的加密,使用的是 password_hash() 这个函数.这个函数是属于 PHP 密码散列算法扩展中所包含的函数 ...
随机推荐
- Book---强连通分量
这几天一直在做强连通,现在总结一小下 1.定义 在一个有向图中,如果任意的两个点都是相互可达的,就说这个图是强连通的,有向图的极大强连通子图,称为强连通分量 2.求法 学的是白书上的tarjan算法 ...
- 人人都是产品经理?关于PM你不知道的还有很多
产品经理的职称最早出现在P&G宝洁公司,因效果非常显著,许多企业纷纷仿而效尤.硅谷知名的产品管理大师Marty Cagan在<Inspired: How To Create Produc ...
- CDR 2017版本LiveSketch工具是什么,怎么用?
LiveSketch 工具在提供手绘草图的简便性和速度的同时,结合了智能笔触调整和向量绘图.在您绘制草图时,CorelDRAW 2017会分析您输入笔触的属性.时序和空间接近度,对其进行调整并将其转换 ...
- ZBrush 笔刷的基础参数
ZBrush®中的笔刷基本参数主要包括3个:Draw Size(绘制大小).Focal Shift(焦点衰减)和Z Intensity(深度强度),通常使用这3个基本参数对笔刷进行调整. 在视图文档区 ...
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(五)配置异地机房节点
0 引言 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示WSFC集群有脱机危险 在异地节点只有一个的情况下,虽然Windows2012R2有动态 ...
- SOAP扩展PHP轻松实现WebService
最近在一个PHP项目中对接外部接口涉及到WebService,搜索引擎上相关文章不是很多,找到的大都是引用一个号称很强大的开源软件 NuSOAP(下载地址:http://sourceforge.net ...
- js异步队列之理解
起因 最近看到一篇关于js异步执行顺序的解答,觉得有所收获,遂记录下来. marcotask和microtask js中异步队列可以分为两类,marcotask队列和microtask队列, marc ...
- MHA 主从切换过程及日志分析
本文主要在MHA 切换日志的角度分析MHA切换的过.MHA故障切换过程如下图所示 第一部分:开启MHA 监控 通过分析日志,得到以下步骤: 1.读取MHA manager 节点的配置文件,并检查配置文 ...
- MyEclipse报错Access restriction: The type BASE64Encoder is not accessible due to restriction on required library
错误截图: 解决办法: 1.进入Project --> Properties --> Java Build Path --> Libraries 2.remove 掉 JRE Sys ...
- sql查询语句中on和where的区别
sql中的连接查询分为3种, cross join,inner join,和outer join , 在 cross join和inner join中,筛选条件放在on后面还是where后面是没区别 ...