Day 11-PKI和加密,散列算法

PKI(Public Key Infrastructure公钥基础设施)

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和加密,散列算法的更多相关文章

  1. 个人理解c#对称加密 非对称加密 散列算法的应用场景

    c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...

  2. 加密散列算法——SHA-1

    与MD5算法类似,SHA-1算法也是在接收到消息后产生消息摘要,能够用来验证数据的完整性. 不同的是SHA1会产生一个160位的消息摘要(MD5产生的是128位). 其它的性质之类的不多说(请參考前面 ...

  3. shiro中自定义realm实现md5散列算法加密的模拟

    shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...

  4. 加密算法和MD5等散列算法的区别(转)

    本文转自http://www.cnblogs.com/eternalwt/archive/2013/03/21/2973807.html 感谢作者 1.在软件开发的用户注册功能中常出现MD5加密这个概 ...

  5. Android数据加密之SHA安全散列算法

    前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好 ...

  6. SHA安全散列算法简析

    1 SHA算法简介 1.1 概述 SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散 ...

  7. shiro进行散列算法操作

    shiro最闪亮的四大特征:认证,权限,加密,会话管理 为了提高应用系统的安全性,这里主要关注shiro提供的密码服务模块: 1.加密工具类的熟悉 首先来个结构图,看看shiro提供了哪些加密工具类: ...

  8. Shiro入门学习之散列算法与凭证配置(六)

    一.散列算法概述 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5.SHA等,一般进行散列时最好提供一个salt(“盐”),什么意思?举个栗子 ...

  9. PHP密码散列算法的学习

    不知道大家有没有看过 Laravel 的源码.在 Laravel 源码中,对于用户密码的加密,使用的是 password_hash() 这个函数.这个函数是属于 PHP 密码散列算法扩展中所包含的函数 ...

随机推荐

  1. What is the difference between arguments and parameters?

    What is the difference between arguments and parameters? Parameters are defined by the names that ap ...

  2. CDR中如何将对象在页面居中显示

    利用CorelDRAW在做设计排版时,如果想让对象在页面居中显示你会用什么方法?用鼠标拖?还是更准确的做法选择参照物对象,利用对齐与分布命令?或者还有更简单快速的方法,一起来看看吧! 最简单的方法(页 ...

  3. 在用HTML+css写页面中遇到的问题

    一.清除浮动. (1)verflow:hidden;这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很 了解.一提到清除浮动,我们就会 ...

  4. 查看系统进程:ps、top

    1.ps命令:提供最近进程的快照.显示当前活跃进程的简要信息. 常见使用: (1)与grep命令配合查找是否有相应进程存活 ps -ef | grep ksmd ps -Af | grep ksmd ...

  5. vue 过滤器使用的传参说明

    在table中,需要对obj的数据类型进行文字转换,例如后台接口返回的姓别值:1,2.其中需要页面根据字典需要把1=>男,2=>女进行转换. 以前的习惯是每一个过滤方法都写一个方法进行转换 ...

  6. Jquery学习总结(4)——高效Web开发的10个jQuery代码片段

    在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...

  7. fensorflow 安装报错 DEPENDENCY ERROR

    1.错误信息 DEPENDENCY ERROR The target you are trying to run requires an OpenSSL implementation. Your sy ...

  8. 创业笔记-Node.js入门之阻塞与非阻塞

    阻塞与非阻塞 正如此前所提到的,当在请求处理程序中包括非阻塞操作时就会出问题.但是,在说这之前,我们先来看看什么是阻塞操作. 我不想去解释“阻塞”和“非阻塞”的具体含义,我们直接来看,当在请求处理程序 ...

  9. ASP.NET-入门

    MVC5特点 1.One ASP.NET统一平台  2.Bootstrap 免费CSS,响应式页面 3.路由标记属性:简单.控制器.操作.前缀.参数.URL 4.ASP.NET web API 2 : ...

  10. 洛谷 P2652 同花顺

    P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...