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算法学习
    • 2.1 加密算法介绍
      • 2.1.1 对称加密算法
        • 2.1.1.1 概念
        • 2.1.1.2 图例
        • 2.1.1.3 DES概述
      • 2.1.2 非对称加密算法
        • 2.1.2.1 概念
        • 2.1.2.2 图例
        • 2.1.2.3 RSA概述
    • 2.2 散列算法介绍
      • 2.2.1 散列算法(函数)
        • 2.2.1.1 概念
        • 2.2.1.2 数字签名(见PKI)

 

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)

 

转载于:https://www.cnblogs.com/gunxiaoshi/p/9729280.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值