计算机网络——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))

结果一致

解密的几种类型

  • 加密的算法已知,求秘钥
  • 加密算法和秘钥均不知道
  • 唯密文攻击
  • 已知明文攻击
    • 已经知道部分密文和明文的对应关系
  • 选择明文攻击
    • 攻击者能够选择一段明文,并得到密文
相关推荐
国际云,接待6 分钟前
微软云注册被阻止怎么解决?
服务器·网络·microsoft·云原生·微软·云计算
laocooon52385788629 分钟前
基于Python的TCP应用案例,包含**服务器端**和**客户端**的完整代码
网络·python·tcp/ip
m0_694845571 小时前
日本云服务器租用多少钱合适
linux·运维·服务器·安全·云计算
一心0921 小时前
Linux部署bmc TrueSight 监控agent步骤
linux·运维·服务器·监控·bmc truesight
Florence231 小时前
linux中执行脚本命令的source和“.”和“./”的区别
linux·运维·服务器
白日依山尽yy1 小时前
Linux02
linux·运维·服务器
wu~9701 小时前
计算机网络-自顶向下—第一章概述重点复习笔记
笔记·计算机网络
liulilittle2 小时前
通过高级处理器硬件指令集AES-NI实现AES-256-CFB算法并通过OPENSSL加密验证算法正确性。
linux·服务器·c++·算法·安全·加密·openssl
Blossom.1182 小时前
基于区块链的去中心化身份验证系统:原理、实现与应用
运维·服务器·网络·人工智能·机器学习·去中心化·区块链
Ai财富密码2 小时前
【Linux教程】Linux 生存指南:掌握常用命令,避开致命误操作
java·服务器·前端