网安笔记04 公钥密码体制

news/2025/2/13 0:53:20/

公钥密码体制

公钥密码体制的基本概念

保密性:确保信息只被授权的人访问
认证:确认某实体/数据源的真实性

保密性需要考虑到

  • 不可否认性
  • 数据完整性

保密系统要考虑

  1. 达到实际上不可破
  • 接获密文、某些明文密文对,决定密钥或者明文是不可行的
  1. Kerckhoff原则 保密性不依赖于加密体制或算法的保密,而是密钥

  2. 加密和解密算法适用于所有密钥空间中的元素

  3. 便于实现、使用方便

在这里插入图片描述
保密系统模型

( M , C , K 1 , K 2 , E k 1 , D k 2 ) (M,C,K_1,K_2,E_{k1}, D_{k2}) (M,C,K1,K2,Ek1,Dk2)

  1. 明文消息空间 M M M
  2. 密文消息空间 C C C
  3. 密钥空间 K 1 K1 K1 K 2 K2 K2:在单钥体制下 K 1 = K 2 = K K1 =K2 =K K1=K2=K,此时密钥 k ∈ K k ∈ K kK 需经安全的密钥信道由发方传给收方
  4. 加密变换: E k 1 ∈ E , m → c = E k 1 ( m ) E_{k1} ∈E, m→c=E_{k1}(m) Ek1Emc=Ek1(m),其中 k 1 ∈ K 1 , m ∈ M , c ∈ C k_1∈K_1, m∈M, c∈C k1K1mM,cC 由加密器完成。
  5. 解密变换: D k 2 ∈ D , c → m = D k 2 ( c ) D_{k2}∈D,c→m= D_{k2}(c) Dk2Dcm=Dk2(c),其中 k 2 ∈ K 2 , m ∈ M , c ∈ C k_2∈K_2, m∈M, c∈C k2K2mM,cC, 由解密器实现。

密码体制分类

单钥加密

  • 流密码 STREAM CIPHER
  • 分组密码 BLOCK CIPHER

在这里插入图片描述

双钥加密体制
m = D k B 2 ( c ) = D k B 2 ( E k B 1 ( m ) ) m = D_{kB2}(c) = D_{kB2}(E_{kB1}(m)) m=DkB2(c)=DkB2(EkB1(m))

公开密钥 k B 1 k_{B1} kB1与密文 c c c推出明文 m m m与密钥 k B 2 k_{B2} kB2是不可行的

在这里插入图片描述

双钥认证体制

Alice吧自己密钥 k A 2 k_{A2} kA2对消息m进行 A A A的专用变换 D k A 2 D_{kA2} DkA2.A 计算密文 c = D k A 2 ( m ) c = D_{kA2}(m) c=DkA2(m)给用户B。B验证 m = E K A 1 ( c ) = E k A 1 ( D k A 2 ( m ) ) m = E_{KA1}(c) = E_{kA1}(D_{kA2}(m)) m=EKA1(c)=EkA1(DkA2(m))是否成立

k A 2 kA2 kA2保密,无法伪造密文 c c c,所以可以认证A的身份

在这里插入图片描述

对称密码公钥密码
一般要求相同密钥 共享密钥加密解密算法相同 密钥不同
发送方有加密or解密密钥,接收方有另一个密钥
安全要求密钥保密
无密钥无法解密
知道算法和密文无法确定密钥
保密其中一个密钥
无密钥无法解密
知道算法、密文、其中一个密钥无法确定另一个密钥
思路简单相互推导出密钥 K e K_e Ke公钥无法推断 K d K_d Kd私钥

理论上可以推断,实际上计算量太大,难以实施

构造公钥算法的考虑

  1. 对称算法: 混乱替换
  2. 数学特性:公钥可推导私钥,但难以实现
  3. 单向函数

公钥密码学

基础

单向函数

定义 1. f是A集合到B集合的映射 f : A → B f:A\rightarrow B f:AB,并且是单射,1-1映射或可逆函数

定义 2:可逆函数 f : A → B f:A\rightarrow B f:AB 若满足

  1. ∀ x , x ∈ A \forall x , x \in A x,xA
  2. 几乎所有 x ∈ A 几乎所有x\in A 几乎所有xA,难以由 f ( x ) f(x) f(x)求出 x x x

定义 3: 陷门单向函数是一类满足下述条件的单向函数

f z : A z → B z , z ∈ Z f_z:A_z\rightarrow B_z, z\in Z fz:AzBz,zZ

Z是陷门信息集合
对所有的 z ∈ Z z\in Z zZ 给定z容易找到一对算法 E z , D z E_z,D_z Ez,Dz,有如下性质

f z ( x ) = E z ( x ) D z ( f z ( x ) ) = x f_z(x) = E_z(x) \\ D_z(f_z(x))=x fz(x)=Ez(x)Dz(fz(x))=x
并且 ∀ z ∈ Z \forall z \in Z zZ 给定 E z 和 D z E_z和D_z EzDz 对所有 x ∈ A x\in A xA很难从 f z ( x ) f_z(x) fz(x)算出x

单向函数

  1. 多项式球根
  2. Discrete Logarithm
  3. Factorization Problem
  4. Knapsack problem
  5. Diffie-Hellman
  6. Quadratic Residue
  7. SQROOT

公钥、密钥体制密钥管理

  1. 公钥可公开,只需要保留私钥
  2. 发送方可以用人人皆知的接受方公开密钥对发送的信息进行加密,安全的传送给该接受方,然后由接受方用自己的私有密钥进行解密

公钥分发
公钥加密
数字签名

安全性:

  1. 困难
  2. 理论能破解,实际难破解
  3. 足够长密钥 > 512bits
  4. 密钥太长导致速度慢。多用于对称密钥传递

RSA公钥密码算法

密码分析者尚不能证明其安全性,但也不能否定其安全性
—— 特殊的可逆模指数运算
—— 加密/数字签名
—— 比DES慢100-1000倍

其安全性依赖于大整数分解的难度(integer fact orization problem)

参数

  • n = p q n = pq n=pq
  • ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n) = (p-1)(q-1) ϕ(n)=(p1)(q1)
  • 公钥e ( e , ϕ ( n ) ) = 1 (e, \phi(n)) = 1 (e,ϕ(n))=1
  • 私钥d d = e − 1 m o d ϕ ( n ) d = e^{-1} \ mod\ \phi(n) d=e1 mod ϕ(n)
  • encryption m → c = m e m o d n m\rightarrow c = m^e\ mod\ n mc=me mod n
  • decryption c → c d = m m o d n c\rightarrow c^d = m\ mod\ n ccd=m mod n

算法说明

  1. q和p是两个奇素数。 n = p q n = pq n=pq
  2. 计算n的欧拉函数 ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n) = (p-1)(q-1) ϕ(n)=(p1)(q1)
  3. 选择一个整数e,e满足 1 ≤ e < ϕ ( n ) ∧ ( e , ϕ ( n ) ) = 1 1\le e < \phi(n) \land (e,\phi(n)) = 1 1e<ϕ(n)(e,ϕ(n))=1
  4. 得到mod ϕ ( n ) \phi(n) ϕ(n)下e的逆元 d = e − 1 m o d ϕ ( n ) d = e^{-1}\ mod\ \phi(n) d=e1 mod ϕ(n)
  5. 公钥是n,e 密钥是d(p和q不能泄露)

E p u b ( x ) = x e m o d n D p r i ( y ) = y d m o d n E_{pub}(x) = x^e\ mod\ n\\ D_{pri}(y) = y^d\ mod\ n Epub(x)=xe mod nDpri(y)=yd mod n

作用

加解密
和A不相识,B知道A的公钥也可以保密通讯。要保护公开密钥,防止修改与替换??

数字签名、身份认证

  1. A公开密钥 ( e , n ) (e, n) (e,n),私钥 d d d,于是A对消息m签名 s = H ( m ) d m o d n s = H(m)^d\ mod\ n s=H(m)d mod n 其中 H ( m ) H(m) H(m)为杂凑函数(hash函数)
  2. 如何验证A对m签名的有效性? H ( m ) = s e m o d n H(m) = s^e \ mod\ n H(m)=se mod n, 进行比对
  3. 针对 篡改,伪造、抵赖(否认)、假冒
  4. 对公开密钥“保护” —— 不能修改

加密和数字签名(上述两种方法)同时使用

  1. A公钥 : ( e 1 , n 1 ) (e_1, n_1) (e1,n1); A私钥: d 1 d_1 d1
  2. B公钥 : ( e 2 , n 2 ) (e_2, n_2) (e2,n2); B私钥: d 2 d_2 d2
  3. A发消息m给B,签名
  4. A算出 c = ( ( m e 2 m o d n 2 ) ) d 2 m o d n 1 c = (( m^{e_2}\ \ mod \ \ n_2))^{d_2}\ mod\ n_1 c=((me2  mod  n2))d2 mod n1
  5. A发c给B
  6. B验证 m = ( ( c e 1 m o d n 1 ) d 2 m o d n 2 m = ((c^{e_1}\ \ mod\ \ n_1)^{d_2}\ \ mod\ \ n_2 m=((ce1  mod  n1)d2  mod  n2

密钥交换

  1. A和B使用堆成密钥(IDEA or DES)加密消息m
  2. 用RSA交换单钥加密体制密钥
  3. B产生工作密钥k,找到A的公开密钥 ( e , n ) (e,n) (e,n)
  • B 计算 c = k e m o d n c = k^e\ \ mod \ \ n c=ke  mod  n
  • A 计算 k = c d m o d n k = c^d\ \ mod\ \ n k=cd  mod  n

example

p1 = 47
p2 = 71
n = 47 * 71 = 3337
\phi(n) = 46 * 70 = 3220设置e = 79
d   = e^{-1} mod 3220= e^(\phi(3220) - 1) mod 3220= 1019明文x = 688 232 687 966 688 3
分组
arr = [688, 232, 687, 966, 3]for i in arr:i = i ^ (e) mod n;解密 
for i in arri = i ^ (d) mod n;

原理

欧拉定理
M k ϕ ( n ) + 1 = M m o d n M^{k\phi(n) + 1} = M\ \ mod\ \ n Mkϕ(n)+1=M  mod  n

上式中
n = p × q n = p\times q n=p×q
ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n) = (p - 1)(q - 1) ϕ(n)=(p1)(q1)
选择 e , d 使得 e × d = 1 m o d ϕ ( n ) 选择e,d使得 e\times d = 1\ \ mod\ \ \phi(n) 选择ed使得e×d=1  mod  ϕ(n)
存在 k 使得 e × d = 1 + k × ϕ ( n ) 存在k使得e\times d = 1 + k\times \phi(n) 存在k使得e×d=1+k×ϕ(n)
得到
C d = ( M e ) d = M 1 + k ϕ ( n ) = M m o d n C^d = (M^e)^d = M ^{1 + k\phi(n)} = M \ \ mod \ \ n Cd=(Me)d=M1+kϕ(n)=M  mod  n

安全性?

  1. RSA的安全性取决于模n分解的困难性。人们完全可以设想有另外的途径破译RSA,如求解密指数d或找到(p1-1)(p2-1)等。

但这些途径都不比分解n来得容易 —— 从RSA加密的密文恢复某些bit的困难性也和恢复整组明文一样困难

  1. 其他途径:从n求出 ϕ ( n ) \phi(n) ϕ(n) 得到 p , q p, q p,q
    n − ϕ ( n ) + 1 = p q − ( p − 1 ) ( q − 1 ) + 1 = p + q n - \phi(n) + 1 = pq -(p - 1)(q-1)+1=p + q nϕ(n)+1=pq(p1)(q1)+1=p+q
    但求出它的欧拉函数等价于分解n。然而还是不知道其他方法能破解RSA且不等价于大数分解

  2. 迭代攻击
    给定
    ( n , e , y ) = ( 35 , 17 , 3 ) (n,e,y) = (35,17,3) (n,e,y)=(35,17,3)
    由于
    y 0 = y = 3 y_0=y=3 y0=y=3
    计算出
    y 1 = 3 17 = 33 m o d 35 y_1=3^{17}=33\ mod\ 35 y1=317=33 mod 35
    再计算
    y 2 = y 1 17 = 33 m o d 35 y_2 = y_1^{17}=33\ mod \ 35 y2=y117=33 mod 35
    对x加密多次可以再现。但当n足够大的时候,攻击方法成功概率为0

  3. 选择明文
    攻击者收集用户A的密文(以密钥e加密)
    y = x e m o d n y=x^e\ mod\ n y=xe mod n

为了分析消息x。选择随机数
r < n r < n r<n
计算
y 1 = r e m o d n y 2 = y 1 × y m o d n y_1=r^e\ mod \ n \quad y_2 = y_1\times y\ mod\ n y1=re mod ny2=y1×y mod n

攻击者 A A A请A对消息 y 2 y_2 y2进行解密得到

s = y 2 d m o d n s=y_2^d\ mod\ n s=y2d mod n

攻击者计算
s r m o d n = x \frac{s}{r} \ mod\ n = x rs mod n=x
得到明文 x x x

(攻击者找了个明文r,用e和n把r变成y1, y1和y处理变成y2,让A解密y2得到s。s/r mod n得到明文x)

  1. 共用模
    多人共用同一模数 n n n, 各自选择 e , d e,d e,d。 简单但不安全。 共用模秦广下,两个密钥互素,可用任意密钥恢复明文 —— 概率方法可分解n和用确定性
    算法可计算某一用户密钥而不需要分解n

  2. 低加密指数攻击
    加密钥e选择得太小,则容易受到攻击

e e e选择3, 模为 n 1 , n 2 , n 3 n_1,n_2,n_3 n1,n2,n3 密文如下
y 1 = x 3 m o d n 1 x < n 1 y 2 = x 3 m o d n 2 x < n 2 y 3 = x 3 m o d n 3 x < n 3 y_1 = x^3\ mod\ n_1\quad x<n_1\\ y_2 = x^3\ mod\ n_2\quad x<n_2\\ y_3 = x^3\ mod\ n_3\quad x<n_3\\ y1=x3 mod n1x<n1y2=x3 mod n2x<n2y3=x3 mod n3x<n3
n 1 , n 2 , n 3 n_1,n_2,n_3 n1,n2,n3互质,可以使用中国剩余定理,用 y 1 , y 2 , y 3 y_1, y_2, y_3 y1,y2,y3求出 y = x 3 m o d ( n 1 , n 2 , n 3 ) y = x^3 \ mod\ (n_1,n_2,n_3) y=x3 mod (n1,n2,n3)
x比三个模校,于是有 x 3 < n 1 n 2 n 3 x^3 < n_1n_2n_3 x3<n1n2n3
y 3 = x \sqrt[3]y = x 3y =x

  1. 定时攻击
    测定RSA解密所进行的模指数运算的时间来估计解密指数d,而后再精确定出d 的取值

还可采用盲化技术,即先将数据进行盲化,再进行加密运算,而后做去盲运算 —— 计算时间被随机化而难于推测解密所进行的指数运算的时间

RSA参数选择

  1. n

n = p × q n = p\times q n=p×q,p和q要足够大,为强素数。p 与q差要大(否则可以从n的开方入手),p-1, q-1最大公因子要小

  1. e

( e , ϕ ( n ) ) = 1 (e,\phi(n)) = 1 (e,ϕ(n))=1条件满足,两个随机数互素概率约为 3 / 5 3/5 3/5。 但e太小,x小, y = x e m o d n y = x^e\ mod\ n y=xe mod n,当 x e < n x^e < n xe<n的时候未取模。 且容易遭受低指数攻击

  1. d
    Euclidean算法在多项式时间内求出d。 d > n 1 / 4 d > n ^{1/4} d>n1/4. d小,签字和解密运算快,d不能太小,会被已知明文攻击

RSA实现中,建议用e = 3, 17, 65537这种二进制只有两位1的数据

对称算法/公钥算法

对称公钥
速度
密钥管理额外的安全信道证书中心CA

安全性?无法简单比较

混合密码:

  1. 公钥算法用于签名认证
  2. 公钥算法传输密会话密钥
  3. 会话密钥(对称密钥)加密数据
  4. 避免密钥分配麻烦

ElGamal公钥签名算法

ElGamal,Schnorr和DSA都是基于离散对数问题的三个例子

一个既可用于数字签名又可用于加密的密码体制。

安全性依赖于 离散对数问题 discrete logarithms problem

  1. 参数 G F ( n ) GF(n) GF(n)的本原元 g g g

GF为有限域,p为素数, G F ( p ) GF(p) GF(p)中的加乘与普通加法区别为结果要mod p

本原元:当a模n的阶为 ϕ ( n ) \phi(n) ϕ(n),当且仅当x时 ϕ ( n ) \phi(n) ϕ(n)使得 a x = 1 m o d n a^{x} = 1\ mod\ n ax=1 mod n成立,这时候a时n的本原元

  1. 秘密钥 x ∈ ( G F ( p ) ∗ − 0 ) x\in (GF(p)^* - 0) x(GF(p)0)
  2. 公钥 y = g x m o d p y = g^x\ mod \ p y=gx mod p
  3. 随机数:k

加密
m → ( g k , m y k ) m o d p = ( r , s ) m\rightarrow(g^k, my^k)\ mod\ p = (r,s) m(gk,myk) mod p=(r,s)

解密
m = s r − x m o d p m = sr^{-x}\ mod\ p m=srx mod p

Others

  1. Rabin密码
  2. 背包密码
  3. McEliece 体制
  4. LUC密码
  5. DH算法
  6. 有限自动机
  7. 概率加密

http://www.ppmy.cn/news/744318.html

相关文章

【转】完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器

原文地址:http://netsecurity.51cto.com/art/201105/264844_1.htm 其实关于无线基础知识的内容还是挺多的,但是由于本书侧重于BT4自身工具使用的讲解,若是再仔细讲述这些外围的知识,这就好比讲述DNS工具时还要把DNS服务器的类型、工作原理及配置讲述一遍一样,哈哈,估计整…

【无线网络渗透 】如何使用Aircrack-ng 系列工具进行WPA/WPA2的监听和破解

版权声明&#xff1a;本文为博主tonyzhejiang原创文章&#xff0c;转载请注明来源博客&#xff1a;http://blog.csdn.net/tonyzhejiang) 目录&#xff1a; 前言什么是 Aircrack-ng所需工具参数介绍破解步骤帮助 1.前言 1.1 声明 注意&#xff1a;本文章是审核家庭无线路…

传统WPA-PSK加密破解实验

目录 实验目的 实验原理 1.无线网络 2.WPA加密 3.WPA—PSK破解原理 实验环境 1.操作系统 2.实验工具 实验步骤 步骤1&#xff1a;配置实验用无线网络 步骤2&#xff1a;配置无线网卡 步骤3&#xff1a;使用 Fern WiFi Cracker 工具破解 WiFi 密码 步骤4&#xff1…

CDLinux破解WPA/WPA2无线网络密码

破解前的准备工作&#xff1a; 1、8187/8187L/3070芯片大功率网卡一块&#xff08;就是我们俗称的“卡王”&#xff09; 2、破解软件CDLinux 3、CDLinux下载地址 http://www.syston.es/gratis/system/systonwpa.iso 4.1g的U盘或虚拟机vm 启动虚拟机&#xff1a; 照片名称&a…

移动光猫固件备份、刷机、改sn和mac等

家里面使用的移动光猫是吉比特GM220-S&#xff0c;好奇着pppoe改桥接的文章&#xff0c;就买了个同型号的&#xff0c;这样不用在原机器上进行操作&#xff0c;省得万一弄不好出了什么问题。第一个碰到的问题就是光猫的MAC地址和设备标识等不同&#xff0c;直接接上得激活输入p…

【WLAN】【测试】Linux下aircrack-ng的应用之破解WPA/WPA2、WEP密钥

1、准备工作 a、将网卡设置为monitor模式,在前述博文的抓包方法中有说明,不再赘述; b、准备字典文件wordlists.txt。 2、探测阶段 通过sudo airodump-ng wlan0mon命令探测周边802.11网络的情况: 比如这里,可以看到FC:D7:33:3F:BC:F8的AP下挂了两个STA。 根据扫描的情况…

分析和解密已加密的路由器固件

我们直奔主题&#xff01;现在&#xff0c;查看你的路由器品牌及型号信息&#xff0c;然后去对应厂商的官方网站下载你路由器对应的固件。下载完成之后&#xff0c;把固件文件丢到binwalk里&#xff0c;这样我们就可以在QEMU中模拟路由固件了。此时&#xff0c;你将会看到如下图…

如何分析和解密已加密的路由器固件

我们直奔主题&#xff01;现在&#xff0c;查看你的路由器品牌及型号信息&#xff0c;然后去对应厂商的官方网站下载你路由器对应的固件。下载完成之后&#xff0c;把固件文件丢到binwalk里&#xff0c;这样我们就可以在QEMU中模拟路由固件了。此时&#xff0c;你将会看到如下图…