“密码系统协议”:Diffie — Hellman,El-Gamal,MTI / A(0),STS

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

就像上一节中的三遍协议的创建者一样,以下算法的作者认为它们不仅是提供某些基本操作的数学构造(例如,公钥加密),而且还尝试围绕一个或两个公式构建完整的密钥分发系统。 这些构造中的一些已经过转换,已经过时(例如,Diffie-Hellman协议),其中一些仅保留在密码学和信息保护的历史中。

在1990年代后期,将数学上的不对称原语(加密和电子签名)和协议分离,将使用这些原语,这将在不对称协议部分中进行演示。

Diffie — Hellman协议


第一个公钥算法是Diffie和Hellman在1976年提出的“密码学的新方向”( Bailey Whitfield Diffie,Martin Edward Hellman,“密码学的新方向”[Diffie,Hellman 1976] )。 该协议也可以称为Diffie-Hellman方案 ,它是第一个减少通信通道建立安全连接而无需先交换密钥的要求的协议。

该协议允许双方使用攻击者可以侦听的通信通道创建一个公共会话密钥,但前提是后者不能更改消息内容。

p -大质数 g -组中的原始元素  mathbbZpy=gx bmodppyg 事先知道。 功能介绍 y=gx bmodp 我们认为是单向的,也就是说,计算具有自变量已知值的函数是一件容易的事,并且很难以函数的已知值对其进行反转(查找自变量)。 (反函数 x= loggy bmodp 称为离散对数函数。 当前,尚无快速方法可以为大型简单模型计算此类函数 p

交换协议包括以下操作。

Diffie-Hellman协议中的参与者交互


  1. 爱丽丝随机挑选 2 leqa leqp1
    爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到Bob爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到Bob
  2. 鲍勃随机挑选 2 leqb leqp1
    鲍勃计算会话密钥 K=Ab bmodp
    Bob \ to \ left \ {B = g ^ b \ bmod p \ right \} \ to AliceBob \ to \ left \ {B = g ^ b \ bmod p \ right \} \ to Alice
  3. 爱丽丝计算 K=Ba bmodp

这样,将创建一个共享的秘密会话密钥 K 。 由于值的随机选择 b 在新会话中,将接收到新的会话密钥。

该协议仅提供新会话密钥的生成(目标G10)。 在没有第三方受信方的情况下,它不提供各方的身份验证(目标G1),因为缺少通过通道进行确认密钥所有权的确认,因此没有密钥的身份验证(目标G8)。 但是,由于该协议不使用长的“主”密钥,因此可以说它具有完美的直接保密性(目标G9)。

该协议只能与活动的密码分析员无法干预的通信通道一起使用。 否则,该协议将容易受到简单的“中间攻击”。

具有活动密码分析器的模型中Diffie-Hellman协议中参与者的交互


  1. 爱丽丝随机挑选 2 leqa leqp1
    爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到梅洛里〜(鲍勃)爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到梅洛里〜(鲍勃)
  2. 马洛里随机挑选 2 leqm leqp1
    Mallory使用Alice计算频道的会话密钥

    KAM=Am bmodp=gam bmodp


    Mellory〜(Alice)\到\左\ {M = g ^ m \ bmod p \右\} \到BobMellory〜(Alice)\到\左\ {M = g ^ m \ bmod p \右\} \到Bob
    Mellory〜(Bob)\到\左\ {M = g ^ m \ bmod p \右\} \到AliceMellory〜(Bob)\到\左\ {M = g ^ m \ bmod p \右\} \到Alice
  3. 爱丽丝使用Mallory计算频道的会话密钥(认为Mallory是Bob)

    KAM=Ma bmodp=gam bmodp

  4. 鲍勃随机挑选 2 leqb leqp1
    鲍勃(Bob)使用Mallory计算频道的会话密钥(认为Mallory是Alice)

    KBM=Mb bmodp=gbm bmodp


    Bob \ to \ left \ {B = g ^ b \ bmod p \ right \} \ to Mellory〜(爱丽丝)Bob \ to \ left \ {B = g ^ b \ bmod p \ right \} \ to Mellory〜(爱丽丝)
  5. Mallory使用Bob计算频道的会话密钥

    KBM=Bm bmodp=gbm bmodp



结果,爱丽丝和鲍勃收到了新的会话密钥,但是他们彼此之间并没有建立“安全的”通信通道,而是与一个攻击者建立了联系,该攻击者现在能够在爱丽丝和鲍勃之间中继或更改所有传输的消息。

Diffie-Hellman协议不使用其他密码原语(加密,数字签名或哈希函数),因此与大多数密钥分发协议不同,但在某种意义上本身就是用于构建更复杂协议的密码原语。 它在没有受信任中心的分布式系统中提供随机数生成。 而且,与Yahalom协议不同,任何一方都不能强迫另一方使用旧的会话密钥。

可以更改协议,以便使用椭圆曲线的点的加法运算来代替简单的乘法运算。 在这种情况下,各方仍将选择一些随机整数,但不会将生成器的编号提高到幂,而是将生成器的点乘以所需的数字。

  1. 双方商定了椭圆曲线上的一组点  mathbbE 其循环亚组  mathbbG 力量 n= | mathbbG | 和发电机 G 团体  mathbbG (或该组中至少一个足够大的子组  mathbbG
  2. 爱丽丝随机挑选 2 leqa leqn1
    爱丽丝\到\左\ {A = a \乘以G \右\} \到Bob爱丽丝\到\左\ {A = a \乘以G \右\} \到Bob
  3. 鲍勃随机挑选 2 leqb leqn1
    鲍勃计算点 K=b\乘A
    Bob \到\左\ {B = g \乘G \右\} \到AliceBob \到\左\ {B = g \乘G \右\} \到Alice
  4. 爱丽丝计算点 K=a\乘B

作为新的会话密钥,各方可以选择例如找到的点的第一个坐标 K

埃尔加马尔协议


El-Gamal协议( [ElGamal,1984] [ElGamal,1985] )由于各方之一的公钥的初步分发而提供了这一方的密钥认证。 可以保证只有相应私钥的所有者才能计算会话密钥。 但是,确认密钥的接收(达到目标G1和G8)不是协议的一部分。

-


  1. 爱丽丝和鲍勃选择共同的选择 pg 在哪里 p 是一个大质数,并且 g -基本字段元素  mathbbZp
    鲍勃创建一对私钥和公钥 bKB

     beginarraylb2 leqb leqp1KB=gb bmodp endarray


    公钥 KB 它是对各方开放的公共通道。 密码分析员不能替代他-替代将很明显。
  2. 爱丽丝挑一个秘密 x 并计算会话密钥 K

    K=KxB=gbx bmodp


    Alice \到\左\ {g ^ x \ bmod p \右\} \到Bob

    Alice \到\左\ {g ^ x \ bmod p \右\} \到Bob
  3. 鲍勃计算会话密钥

    K=gxb=gbx bmodp


该协议不保证在每个协议会话(G10)中都选择新的会话密钥,也不保证使用“主”密钥 KB 传输会话密钥使攻击者可以在私钥被泄露时计算过去会话中的所有会话密钥 b (目标G9)。

MTI / A协议(0)


1986年,C。Matsumoto(松本Tsutomu Matsumoto )),I. Takashima( 阳一Youichi Takashima ))和H. Imai( Hideki Imai )提出了几种算法,后来称为MTI协议族( [Matsumoto,Tsutomu,Imai 1986] )。 由于双方公钥的初步分配,他们提供了隐式密钥身份验证(目标G7)。 即,只能保证相应公钥的所有者接收到会话密钥。 我们将考虑该家族的代表之一-MTI / A(0)协议。

此前,各方就系统的一般参数达成了一致。 pg 在哪里 p 是一个大质数,并且 g -基本字段元素  mathbbZp

MTI/A(0)

每个参与方(Alice和Bob)都生成了一对私钥和公钥:

 beginarrayllAlicea  KA=ga bmodpBobb  KB=gb bmodp\结array


  1. 爱丽丝产生了一个随机数 RA2 leqRA leqp1
    爱丽丝\到\左\ {g ^ {R_A} \ bmod p \右\} \到Bob爱丽丝\到\左\ {g ^ {R_A} \ bmod p \右\} \到Bob
  2. 鲍勃产生一个随机数 RB2 leqRB leqp1
    鲍勃想出一个会话密钥 K=gRAb cdotKRBA bmodp
    Bob \到\左\ {g ^ {R_B} \ bmod p \右\} \到AliceBob \到\左\ {g ^ {R_B} \ bmod p \右\} \到Alice
  3. 爱丽丝计算了会话密钥 K=gRBa cdotKRAB bmodp

如果公钥 KAKB 匹配您的私钥 b ,则参与者计算出的会话密钥匹配:

 beginarraylllgRAb cdotKRBA bmodp=gbRA+aRB bmodpgRBa cdotKRAB bmodp=gaRB+bRA bmodp endarray


由于离散对数任务的复杂性,攻击者将无法获得 aRAbRB 从传输的消息中进行,公共密钥的初步发布可确保只有合法用户才能接收会话密钥。 随机选择 RARB 确保双方都可以确保在每个协议会话中创建一个新的会话密钥。

与密码系统协议的其他代表一样,MTI的开发并未考虑到可能会破坏闭合的“主”密钥 b (目标G9)。

站到站协议


STS协议( Station-to-Station[Diffie,Oorschot,Wiener,1992] )适用于移动通信系统。 它使用了Diffie-Hellman协议和RSA密码系统的思想。 该协议的一个特点是使用电子签名机制对双方进行相互认证。

此前,各方就系统的一般参数达成了一致。 pg 在哪里 p 是一个大质数,并且 g -基本字段元素  mathbbZp

每边 B 拥有长期密钥对:用于解密和创建电子签名的私钥 K textpublic 和用于加密和签名验证的公钥 K textpublic

\开arrayllAKA\文privateKA\文public forallM\文VerifyAMSAM=trueDAEAM=MBKB textprivateKB textpublic forallM\文VerifyBMSBM=trueDBEBM=M\结array



哪里 \文A\点 它具有检查公钥上的电子签名的功能 KA textpublicDA -使用私钥的解密功能 KA textprivate

该协议包括四 ,其中三步包括消息的传输( [Cheryomushkin 2009] )。

STS


  1. 爱丽丝选择一个随机数 RA2 leqRA leqp1
    Alice \到\左\ {A,m_A = g ^ {R_A} \ bmod p \右\} \到BobAlice \到\左\ {A,m_A = g ^ {R_A} \ bmod p \右\} \到Bob
  2. 鲍勃挑选一个随机数 RB2 leqRB leqp1
    鲍勃计算会话密钥 K=mRBA bmodp
    鲍勃\到\左\ {B,A,m_B = g ^ {R_B} \ bmod p,E_K(S_B(m_A,m_B))\右\} \到爱丽丝鲍勃\到\左\ {B,A,m_B = g ^ {R_B} \ bmod p,E_K(S_B(m_A,m_B))\右\} \到爱丽丝
  3. 爱丽丝计算会话密钥 K=mRAB bmodp
    爱丽丝验证邮件中的签名 EKSBmAmB
    爱丽丝\到\左\ {A,B,E_K(S_A(m_A,m_B))\右\} \到Bob爱丽丝\到\左\ {A,B,E_K(S_A(m_A,m_B))\右\} \到Bob
  4. 鲍勃验证消息中的签名 EKSAmAmB

该协议确保了新密钥(G10)形成的保证,但不能保证完美的直接保密(G9)。

如Lowe 1996攻击所示( [Lowe 1996] ),该协议不能保证对主题(目标G1),密钥(G7)和会话密钥(G8)的所有权证明进行身份验证。 尽管如果该协议仅用于验证主题,则攻击者无法访问新的会话密钥,但是Alice可以将攻击者误认为Bob。

STS


  1. 爱丽丝选择一个随机数 RA2 leqRA leqp1
    Alice \到\左\ {A,m_A = g ^ {R_A} \ bmod p \右\} \到Mellory〜(Bob)
  2. Mellory \到\左\ {M,m_A \右\} \到Bob
  3. 鲍勃挑选一个随机数 RB2 leqRB leqp1
    鲍勃计算会话密钥 K=mRBA bmodp
    Bob \到\左\ {B,M,m_B,E_K(S_B(m_A,m_B))\右\} \到Mellory
  4. Mellory〜(Bob)\到\左\ {B,A,E_K(S_B(m_A,m_B))\右\} \到爱丽丝
  5. 爱丽丝计算会话密钥 K=mRAB bmodp
    爱丽丝验证邮件中的签名 EKSBmAmB
    爱丽丝\到\左\ {A,B,E_K(S_A(m_A,m_B))\右\} \到Mellory〜(Bob)

成功完成协议后,爱丽丝确信自己正在与鲍勃交流。

像所有其他“密码系统协议”一样,站到站协议基于与参与者公共密钥有关的某些外部信息源,而无需怀疑此源的正确性和可靠性。 在一般情况下,这是不正确的。 如果需要在每个协议会话的外部接收有关参与者密钥的信息(例如,如果参与者很多,并且不可能记住所有密钥),那么获取公钥的渠道将成为所考虑协议的主动密码分析器的主要目标。 下一部分将介绍如何使用非对称密码原语来保护自己。

文学作品


  • [Diffie,Hellman 1976] Diffie W.,Hellman ME密码学的新方向//信息论,IEEE事务处理。 -1976年-11月。 -t。22,第6号--p。 644-654。 -ISSN 0018-9448。 -DOI:10.1109 / TIT.1976.1055638。
  • [ElGamal,1984] El Gamal T.公钥密码系统和基于离散对数的签名方案// CRYPTO 84关于密码学进展的论文集。 -美国加利福尼亚州圣塔芭芭拉:Springer-Verlag纽约公司,1985年。 10-18。 -ISBN 0-387-15658-5。 -URL: dl.acm.org/citation.cfm?id=19478.19480
  • [ElGamal,1985年] El GamalT。一个基于离散对数的公钥密码系统和签名方案// IEEE Transactions on Information Theory。 -1985年-7月。 -t。31,No. 4--p。 469-472。 -DOI:10.1109 / TIT.1985.1057074。
  • [Matsumoto,Tsutomu,Imai 1986] Matsumoto T.,Takashima Y.,Imai H.在寻求智能公钥分配系统时// Trans。 研究所 电子 公社 。 日本 教派 E. T. 69.问题 2.-02.1986。 -与 99-106。
  • [Diffie,Oorschot,Wiener 1992] Diffie W.,Van Oorschot PC,Wiener MJ认证
    和经过身份验证的密钥交换//设计,代码和密码学。 -1992年-6月。 -第2号,第2号。 107-125。 -ISSN 1573-7586。 -DOI:10.1007 / BF00124891。
  • [Lowe 1996] Lowe G.对安全协议的一些新攻击//第9届IEEE计算机安全基础研讨会的CSFW '96会议记录。 —美国华盛顿特区:IEEE计算机协会,1996年。 162。
  • [Cheremushkin 2009] Cheremushkin A. V.加密协议:基本属性和漏洞//应用离散数学。 -2009年-11月。 -问题。 2.-页。 115-150。 -网址: cyberleninka.ru/article/n/kriptograficheskieprotokoly-osnovnye-svoystva-i-uyazvimosti.pdf

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

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


All Articles