三阶段协议

该文本将是无线电工程和控制系统部信息保护手册以及此培训代码中MIPT(GU)信息保护手册的重写章节之一。 完整的教程可在github上找到 (另请参阅草稿发行版 )。 我计划在Habrir上载新的“大型”文章,首先,收集有用的评论和意见,其次,为社区提供更多有关有用和有趣主题的概述材料。

上一主题:


如果Alice和Bob之间存在无法被攻击者修改的通信通道(即,仅适用被动密码分析模型时),那么即使没有初步交换密钥或其他信息,您也可以使用先前在公钥加密中使用的思想。 在1978年描述了RSA之后,1980年,Adi Shamir提出了使用基于可交换操作的密码系统来传输信息而无需首先交换秘密密钥的情况。 如果我们假设传输的信息是由当事方之一生成的秘密会话密钥,那么通常我们将获得以下三遍协议。

初步:

  • 爱丽丝和鲍勃通过不安全的通信通道连接,攻击者可以打开以进行侦听(但不能进行修改)。
  • 每边都有一对公钥和私钥 KAkAKBkB 相应地。
  • 双方选择并使用了可交换加密功能:

    \ begin {array} {lll} D_ {A} \ left(E_ {A} \ left(X \ right)\ right)= X&\ forall X,\ left \ {K_A,k_a \ right \}; \\ E_ {A} \左(E_ {B} \左(X \右)\右)= E_B \左(E_A \左(X \右)\右)&\ forall〜K_A,K_B,X. \结束{array}

    \ begin {array} {lll} D_ {A} \ left(E_ {A} \ left(X \ right)\ right)= X&\ forall X,\ left \ {K_A,k_a \ right \}; \\ E_ {A} \左(E_ {B} \左(X \右)\右)= E_B \左(E_A \左(X \右)\右)&\ forall〜K_A,K_B,X. \结束{array}

该协议包括三个传递消息的过程(因此称为名称)和最后一个传递过程,鲍勃在该传递过程中接收密钥。

  1. 爱丽丝选择一个新的会话密钥 K

    爱丽丝\到\左\ {E_A \左(K \右)\右\} \到Bob爱丽丝\到\左\ {E_A \左(K \右)\右\} \到Bob
  2. 鲍勃\到\左\ {E_B \左(E_A \左(K \右)\右)\右\} \到爱丽丝鲍勃\到\左\ {E_B \左(E_A \左(K \右)\右)\右\} \到爱丽丝
  3. 爱丽丝,利用加密函数的可交换性,

    DA\左EB\左EA\左K\右\右\右=DA\左EA\左EB\左K\右\右\右=EB\左K\对

    爱丽丝\到\左\ {E_B \左(K \右)\右\} \到Bob爱丽丝\到\左\ {E_B \左(K \右)\右\} \到Bob
  4. 鲍勃解密 DB\左EB\左K\右\右=K

结果,各方收到共享的密钥。 K

所有这些协议的共同缺点是缺乏各方的认证。 当然,对于被动密码分析器来说,这不是必需的,但是在现实生活中,您仍然需要考虑所有可能的模型(包括主动密码分析器)并使用涉及各方相互认证的协议。 另外,与Diffie – Hellman方案不同,新密钥是由会话的发起者选择的,它允许发起者(不是出于良好的意愿)强制第二个参与者使用过时的会话密钥。

就安全性而言 ,此类协议的所有代表都仅声明密钥认证(G7)。 与Diffie – Hellman方案不同,三遍协议不需要为每个协议会话选择新的“主”密钥,这就是为什么既不能保证完美的直接保密(G9)也不能保证新密钥(G10)形成的原因。

琐碎的选择


让我们给出一个基于XOR函数的协议示例(按位加模2)。 尽管此功能可以用作构建具有完美密码强度的系统的基础,但对于三遍协议而言,这是一个不好的选择。

在开始协议之前,双方都有其私钥。 KAKB 表示具有均匀字符分布的随机二进制序列。 加密功能定义为 EiX=X oplusKi 在哪里 X 这个消息也是 Ki -秘密密钥。 显然:

 forallijXEi\左Ej\左X\右\右=X oplusKj oplusKi=X oplusKi oplusKj=Ej\左Ei\左X\正\正

  1. 爱丽丝选择一个新的会话密钥 K

    Alice \ to \ left \ {E_A \ left(K \ right)= K \ oplus K_A \ right \} \ to BobAlice \ to \ left \ {E_A \ left(K \ right)= K \ oplus K_A \ right \} \ to Bob
  2. Bob \到\左\ {E_B \左(E_A \左(K \右)\右)= K \ oplus K_A \ oplus K_B \右\} \到AliceBob \到\左\ {E_B \左(E_A \左(K \右)\右)= K \ oplus K_A \ oplus K_B \右\} \到Alice
  3. 爱丽丝,利用加密函数的可交换性,

    DA\左EB\左EA\左K\右\右\右=K oplusKA oplusKB oplusKA=K oplusKB=EB\左K\右

    爱丽丝\到\左\ {E_B \左(K \右)= K \ oplus K_B \右\} \到Bob爱丽丝\到\左\ {E_B \左(K \右)= K \ oplus K_B \右\} \到Bob
  4. 鲍勃解密 DB\左EB\左K\右\右=K oplusKB oplusKB=K

在协议会话结束时,Alice和Bob知道了公共会话密钥 K

提议的完全保密的交换加密功能的选择是不成功的,因为在某些情况下密码分析者可以确定密钥 K 。 假设密码分析员截获了所有三个消息:

K oplusKA  K oplusKA oplusKB  K oplusKB


所有三个消息的Modulo 2加法给出了密钥 K 。 因此,不使用这种加密系统。

现在,我们基于指数(可交换)加密功能,提出用于可靠传输密钥的协议。 该协议的稳定性与计算离散对数的任务的难度有关:对于已知值 ygpx 从等式 y=gx bmodp

沙米尔的无钥协议


各方初步商定了一个大的总理 p sim21024 。 各方都选择一个密钥。 b 。 这些键较小且相互简单。 p1 。 另外,各方根据特殊号码准备 ab 允许他们解密使用密钥加密的消息:

 beginarrayla=a1 modp1a timesa=1 modp1 forallXXaa=X\结array



费马小定理\ index {定理! 农场很小}。 加密和解密操作定义如下:

 beginarraylll forallM<pC=EM=Ma modpDC=Ca modpDAEAM=Maa=M modp\结array


  1. 爱丽丝选择一个新的会话密钥 K<p

    爱丽丝\到\左\ {E_A \左(K \右)= K ^ a \ bmod p \右\} \到Bob
  2. Bob \ to \ left \ {E_B \ left(E_A \ left(K \ right)\ right)= K ^ {ab} \ bmod p \ right \} \ to Alice
  3. 爱丽丝,利用加密函数的可交换性,

    DA\左EB\左EA\左K\右\右\右=Kaba=Kb=EB\左K\右 modp


    爱丽丝\到\左\ {E_B \左(K \右)= K ^ b \右\} \到Bob
  4. 鲍勃解密 DB\左EB\左K\右\右=Kbb bmodp=K

在协议会话结束时,Alice和Bob知道了公共会话密钥 K

假设一个密码分析器截获了三个消息:

 beginarrayly1=Ka bmodpy2=Kab bmodpy3=Kb bmodp\结array


寻找钥匙 K ,密码分析者需要解决这三个方程式的系统,这具有非常大的计算复杂度,如果所有三个数字都从实用的角度来看是不可接受的 abab 很大。 假设 (或 b )是不够的。 然后,计算连续度 y3 (或 y1 ),可以找到 (或 b ),将结果与 y2 。 知道的 容易找到 a1 bmodp1K=y1a1 bmodp

Massey-Omura密码系统


1982年,James Massey和Jim Omura申请了专利(James Massey,Jim K. Omura),改进了(在他们看来)Shamir的无密钥协议。 作为加密操作而不是乘法组中的取幂  mathbbZp 他们建议在Galois场中使用幂运算  mathbbGF2n 。 各方的秘密密钥(对于爱丽丝- )必须满足以下条件:

 beginarrayla in mathbbGF2ngfd leftaxn1+xn2+...+x+1\右=1\结array


否则,该协议看起来很相似。

后记


作者将对文本的事实和其他评论表示感谢。

Source: https://habr.com/ru/post/zh-CN475894/


All Articles