计算机网络——36加密原理

加密原理

加密语言

对称密钥密码学:发送方和接收方的秘钥相同
公开秘钥密码学:发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密

对称秘钥加密

替换密码:将一个事情换成另一个事情

  • 单码替换密码:将一个字母替换成另一个字母

对称密钥密码:Bob和Alice共享一个对称式的秘钥: K A − B K_{A-B} KA−B

  • e.g. 秘钥在单码替换加密方法中是替换模式

对称密钥加密学:DES

DES:Data Encryption Standard

  • US加密标准[NIST 1993]
  • 56-bit对称密码,64-bit明文输入
  • DES有多安全?
    • DES挑战:56-bit密钥加密的短语("Strong cryptography makes the world a safe place")被解密,用了4个月的时间
    • 可能有后门
  • 使得DES更安全:
    • 使用3个key,3条DES运算
    • 密文分组成串技术

初始替换

16轮一样的函数应用,每一轮使用的不同的48bit秘钥

最终替换

AES:Advanced Encryption Standard

  • 新的对称密钥NIST标准(Nov,2001)用于替换DES
  • 数据128bit成组加密
  • 128,192 or 256 bit keys
  • 穷尽算法如果使用1秒钟破解DES,需要花费149万亿年破解AES

块密码

  • 一个循环:一个输入bit影响8个输出bit
  • 多重循环:每个输入比特影响所有的输出bit
  • 块密码:DES,3DES,AES

密码块链

  • 密码块:如果输入块重复,将会得到相同的密文块
  • 密码块链:异或第i轮输入m(i),与前一轮的密文c(i-1)
    • c(0)明文传输到接收端

公开秘钥密码学

对称密钥密码学

  • 需要发送方和接收方对共享式对称密钥达成一致
  • Q:但是他们如何第一次达成一致(特别是他们永远不可能见面的情况下)

公开密钥密码学

  • 完全不同的方法[Differ - Hellman76,RSA78]
  • 发送方和接收方无需共享密钥
  • 一个实体的公钥公之于众
  • 私钥只有他自己知道

要求:

  • 需要 K B + K^{+}_B KB+(-)和 K B − K^{-}_B KB−(-),满足 K B − ( K B + ( m ) ) = m K^{-}_B(K^{+}_B(m)) = m KB−(KB+(m))=m
  • 给定一个公钥 K B + K^{+}_B KB+推出私钥 K B − K^{-}_B KB−计算上不可行

RSA:Rivest,Shamir,Adelson algorithim

RSA

RSA:选择秘钥

  • 选择两个很大的质数p,q(e.g. 1024 bit each)
  • 计算 n = pq,z = (p - 1)(z - 1)
  • 选择一个e(要求 e < n)和z没有一个公共因子,互素
  • 选择d使得ed - 1正好能够被z整除(也就是:ed mod z = 1)
  • 公钥 ( n , e ) ⏟ K B + \underbrace{(n,e)}_{K^{+}B} KB+ (n,e),私钥 ( n , d ) ⏟ K B − \underbrace{(n,d)}{K^{-}_B} KB− (n,d)

RSA:加密,解密

  • 给定按照上述算法得到的(n,e)和(n,d)
  • 加密一个bit模式,m,如此计算
    c = m e m o d n c = m^e mod n c=memodn (i.e., m e m^e me除以n的余数)
  • 对接收到的密文c解密,如此计算
    m = c d m o d n m = c^d mod n m=cdmodn (i.e., c d c^d cd除以n的余数)

Magic happens m = ( m e m o d n ) d ⏟ c m o d n m = \underbrace{(m^e mod\ n)^d}_{c} mod\ n m=c (memod n)dmod n

一个简单的数学定理:如果p,q都是素数n = pq,那么

RSA:另外一个重要的特性

K B − ( K B + ( m ) ) ⏟ 先用公钥,然后用私钥 = m = K B + ( K B − ( m ) ) ⏟ 先用私钥,然后用公钥 \underbrace{K^{-}_B(K^{+}B(m))}{先用公钥,然后用私钥}=m=\underbrace{K^{+}_B(K^{-}B(m))}{先用私钥,然后用公钥} 先用公钥,然后用私钥 KB−(KB+(m))=m=先用私钥,然后用公钥 KB+(KB−(m))

结果一致

解密的几种类型

  • 加密的算法已知,求秘钥
  • 加密算法和秘钥均不知道
  • 唯密文攻击
  • 已知明文攻击
    • 已经知道部分密文和明文的对应关系
  • 选择明文攻击
    • 攻击者能够选择一段明文,并得到密文
相关推荐
珠海西格电力科技13 小时前
微电网系统架构设计:并网/孤岛双模式运行与控制策略
网络·人工智能·物联网·系统架构·云计算·智慧城市
浩浩测试一下13 小时前
从Web 到 域控 <----> 企业级内网渗透思路
网络
weixin_4370446415 小时前
Netbox批量添加设备——堆叠设备
linux·网络·python
宴之敖者、15 小时前
Linux——\r,\n和缓冲区
linux·运维·服务器
LuDvei15 小时前
LINUX错误提示函数
linux·运维·服务器
未来可期LJ15 小时前
【Linux 系统】进程间的通信方式
linux·服务器
心理之旅16 小时前
高校文献检索系统
运维·服务器·容器
Lenyiin16 小时前
Linux 基础IO
java·linux·服务器
The Chosen One98516 小时前
【Linux】深入理解Linux进程(一):PCB结构、Fork创建与状态切换详解
linux·运维·服务器
Hill_HUIL16 小时前
学习日志22-静态路由
网络·学习