Cryptography(2023 Fall)

250 阅读3分钟

词汇解释区

PrivKE

全称为 Private-Key Encryption 私钥加密, 两人共享一个私钥,通过私钥进行加密和解密。

PPT

polynomial-time algorithm

Slides区

lec2-3

Outline

  1. Kerckhoff’s principle
  2. Shift Cipher
  3. substitution cipher
  4. letter frequency analysis
  5. Vigenère cipher
  6. Kasiski’s method

Kerckhoff’s principle

加密算法不一定要保密, 即便敌手知道了加密算法也无法对密钥进行破解

Shift Cipher

加密表达式为Enc(k,mi)Enc(k,m_i),即每个密钥向前移动至(mi+k)%26(m_i+k)\%26

  • Improved Attack of the Shift Cipher

image.png

Substitution Cipher

introduction

  1. 将位移改成字符映射表格,每个字符都能映射到其他字符上

image.png

  • security
  1. 不安全,可以通过词频来破解

Vigenère Cipher

加密算法

将明文mm分解成tt份,再取tt个密钥k=k1k2k3ktk=k_1k_2k_3\cdots k_t,每一份密钥的每一位对应着不同的密钥进行位移。 image.png

破译方法

  1. 枚举KeyKey的长度tt
  2. 对于每一份的同一位,如m1,mt+1m_1,m_{t+1}\cdots,都是共享同一个位移的
  3. 我们可以枚举key的长度tt
  4. 对于w[1,t]w\in[1,t],对于第ww位,枚举k从[0,25][0,25],出现i=025piqi+k0.65\sum_{i=0}^{25}p_iq_{i+k}\approx 0.65,那么第ww位的位移可能是为kk
  5. 通过上面方法,我们收获了每个tt的情况下,如果枚举的tt的每一个ww,都有存在很接近0.65的,那么就有概率解密成功。

lec4

Outline

  1. perfect secrecy
  2. one-time pad
  3. perfect indistinguishability

perfect secrecy

  • 定义

不管加密后的密钥是什么,都不能影响加密前

P[C=c]>0P[C=c]>0,满足下面公式,就是完美加密

image.png

  • 定理

用来证明某个scheme是完美加密

image.png

  • 限制

完美加密中,密钥空间的大小必须大于等于消息空间的大小。

image.png

OTP

  • 定义

把明文和等长的密钥相互亦或得到密文

  • 性质
  1. OTP是完美加密(用定理证明,如下图所示)

image.png

  1. 缺点:
    • 密钥太长了
    • 没办法modify it at will
    • 没办法重复用

Perfect Indistinguishablility

有一个敌手和挑战者,敌手给两个明文,挑战者将其中一个加密后发给敌手,敌手如果判断的出该密文是之前两个中的哪个的概率=1/2,那么就将该策略为完美不可区分性。

  • 定义

Pr[PrivkA,Πeav=1]=12Pr[Privk^{eav}_{A,Π}=1]=\frac{1}{2}

  • 定理1

image.png

  • 例子:Vigenère Cipher

image.png

lec5

  • negligible
  • asymptotic approach

negligible function

a function is negligible if there exists N such that f(n) < 1/p(n) for all n > N and p()\forall p(\cdot).

  1. 指数的倒数一定是可忽略的,如12n\frac{1}{2^n}
  2. 可忽略函数加乘后依旧是可忽略函数

lec6

IND-EAV

这玩意就是,有挑战者和攻击者,攻击者给挑战者两个密钥,挑战者加密以后给攻击者,攻击者确认到底加密的是哪一个,下面这个是精确定义。注意和Perfect Indistinguishablility要区分一下,这个的1/2是可以带可忽略函数的。 image.png

Statistical Distance

统计距离,SD(X,Y)=12r[0,1]nPr[x=r]Pr[y=r]SD(X,Y) = \frac{1}{2}\sum_{r\in[0,1]^n}|Pr[x=r] - Pr[y=r]|

这个很好算,X,YX,Y是全集rr的变量,每个变量的概率分布不一样。把特殊点单独拿出来计算一下即可,如下图所示。

image.png

lec7

computationally indistinguishable, pseudorandom, PRG, fixed-length encryption from PRG

computationally indistinguishable

image.png

上图所示,满足定理后,计算不可区分,计算不可区分分为两种,一种是统计不可区分,一种是完美不可区分。

  • 定理1:如果SD(Xn,Yn)<=negl(n)SD(X_n,Y_n)<=negl(n),那么 X=Xn,Y=Yn X={X_n}, Y={Y_n}统计上不可区分的,简写Xs.iYX \equiv_{s.i} Y
  • 定理2:如果SD(Xn,Yn)=0SD(X_n,Y_n)=0,就是完美不可区分Xp.iYX \equiv_{p.i} Y

一些计算不可区分的特性,懒得记了,打个cheat sheet算了。

image.png

Pseudo randomness

如果某个分布和均匀分布之间是计算不可区分的,那么称之为伪随机

Pseudo randomness generator (PRG)

伪随机发生器G(seed)G(seed)

  1. 多项式时间内完成
  2. 出来的长度一定比seedseed的长度长
  3. 伪随机的,即出来的东西和均匀分布之间的统计距离小于可忽略函数

lec8

One-Way Function

单项函数,知道yy,但是无法在多项式时间里推出xx

Hard-Core Predicate

看不懂 算了

IND-CPA

注意一下这个关系

image.png

lec9

Pseudorandom Function, PRF

伪随机函数,F(K,X)F(K,X)XX是输入,KK是密钥

  1. 保证输入输出的长度是相同的
  2. 敌手无法区分输出的内容和随机生成的内容