密码编码学之公钥密码学及RSA

一、公钥密码学

公钥密码与传统密码不同,传统密码是对称加密,而公钥密码是使用两个独立的密钥 非对称的。
使用两个密钥,在消息的保密性、密钥分配和认证领域意义非常很大。

公钥密码和传统密码同样重要,不存在哪个比哪个更重要之说。

1.公钥密码的基本原理

公钥算法依赖于一个加密密钥和一个与之相关的解密密钥。
有以下特点:

  • 拿到加密密钥和加密算法,无法推导出解密密钥,在计算上是不可行的
  • 两个密钥中的任何一方都可以作为加密,另一个为解密
  • 明文:算法的输入是可读的消息或者数据
  • 加密算法:对数据进行变换
  • 公钥和私钥:算法的输入,一个用于加密 一个用于解密
  • 密文:加密后的产物,算法的输出
  • 解密算法:使用公钥和密文产生明文

保密性:
公钥加密 私钥解密
在这里插入图片描述

认证性:
私钥加密签名 公钥验证签名
在这里插入图片描述

2.公钥密码的应用场景

一公钥密码的一般操作步骤:
加密和解密

 - 产生密钥对,分别为公钥和私钥
 - 使用公钥对内容加密
 - 使用私钥对内容解密

签名和验签

 - 产生密钥对,分别为公钥和私钥
 - 使用私钥对内容进行签名
 - 使用公钥对内容进行验证签名

应用场景主要下面三类:

 - 加密和解密
 - 数字签名
 - 密钥交换:通讯双方交换会话密码

有些算法能同时满足以上三个场景,而有些算法只能满足一个场景。

RSA:可同时满足以上三个场景
EC椭圆曲线:可同时满足以上三个场景
Differ-Hellman: 只满足密钥交换
DSS:只满足数字签名

3.公钥密码的依赖条件

公钥密码的可行性依赖于几个条件,主要包含几个因素:
1、加密和解密的密钥对的产生,要是容易的;
2、已知公钥和消息M,产生密钥 在计算上要求为容易的;
3、已知私钥和密文,推到消息M 在计算上要求为容易的;
4、已知公钥和密文,逆向推到私钥和消息M 是不可行的;
5、加密和解密函数的顺序可以交换

满足以上这些条件,需要找到一个“单向陷门函数”。这里描述的“容易”都是相对而言,密钥长度过长就会导致加解密的时间变长;密钥过短,容易被暴力破解等;

4.公钥密码的抗攻击性

公钥密码的破解有两个角度:
一个是根据已知的加密算法和公钥 找到计算私钥的方法,即使是现在的RSA也不能说是完全安全的,只是现有的硬件设备的算力还无法支持而已。
另一个是穷举攻击:攻击者利用已有的公钥,对所有的可能密钥加密,然后与密文进行比对,从而解密消息。抵抗这种穷举攻击的方法是在消息后加入随机数,比如AVB中使用了“Salt”加盐进行防止暴力破解。

二、RSA

RSA算法是1977年提出 1978年发表的算法,由Rivest/Shamir/Adleman (RSA)组成。
RSA被广泛接受并被实现的通用公钥算法,这个我们在android项目的AVB和Secure boot中可以看到使用的场景。

1. RSA基本原理及流程

基本原理
RSA体制是分组密码,使用乘方运算,明文以分组为单位进行加密。
加密:C = M^e mod n
解密:M = C^ d mod n = M^ed mod n

其中双方已知n,发送方已知e,只有接收方已知d;
公钥PU={e, n},私钥PR={d, n}

同时满足以下条件:

能找到e,d,n,也就是素数容易挑选出来,且所的M明文小于n
计算M^e和C^d要足够快且容易运算
已知e和n,无法推导出d

其中的元素要求:

p,q两个素数是保密的,且计算出来的d是保密的;
n和e是公开的

流程
RSA使用流程

RSA算法举例说明
RSA举例说明
关于RSA的使用案例,可以参数前面写的文章 python实现RSA加密解密 及 签名验签功能
以及Android中AVB签名校验案例 AVB之镜像的签名及验证签名详解

三、密钥管理和其他密钥体制

1. Diffie-Hellman密钥交换

定义
此算法是一种密钥交换技术,目的是使用双方能安全地交换密钥,以便在后续通信中使用该密钥对消息进行加密。

Diffie-Hellman是建立在计算离散对数非常困难的基础上的,当素数大于300时,基本上就比较难破解了。
缺点比较明显:无法防止中间人攻击。

交换协议
在这里插入图片描述

2. ElGamal密码体制

ElGamal提出了基于离散对数的公开密钥体制,与Diffie-Hellman密钥分配体制有关。
定义
共同选择一个素数q, a是q的素根;
将M加密成明文对(C1,C2),恢复时需要先通过C1计算得到K,然后计算得到明文M;

步骤

A:生成随机XA,计算得到YA,公开密钥为{q,a,YA},私钥为XA;
B:随机生成整数k,计算一次密钥K,将M加密成密钥对C1/C2; 
A:通过计算K恢复密钥,再计算得到明文M

ElGamal可以防中间人攻击,中间密钥是计算得到,很多算法都是类似的采用随机数,中间人攻击难度大。

交换协议
在这里插入图片描述

3. 椭圆曲线密码学

有时间再总结上来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值