uvw77ay_aiffip
题目
小明听说某软件会自动备份自己的聊天记录,非常恼火,一怒之下设计了个超级基础协商协议。某天他准备和你通讯,发给你了一段协商消息,附件中还有公用生成元g和你的私钥,以及保证密钥长度的质数。那么,你们的最后协商的32位密钥是啥呢?(题目标题有玄机,答案为32位的十进制数) 注意:得到的 flag 请包上 flag{} 提交
你们共同有一个公开已知生成元g=34
你的私钥=9360
小明向你发来协商数据:57687185873717832710418532982088
保证长度的质数为:72542982052896163041354492265957
解题
光看题目看着很懵啊,去搜了一下,知道是DH密钥协议
Diffie–Hellman(以下简称DH)密钥交换是一个特殊的交换密钥的方法。它是密码学领域内最早付诸实践的密钥交换方法之一。DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于对后续信息交换进行对称加密。
安全依据:计算离散对数(Discrete Logarithm Problem,DLP)的困难程度
方案原理:Alice和Bob想共有一个密钥,用于对称加密。但是他们之间的通信渠道是不安全的。所有经过此渠道的信息均会被敌对方:Eve看到。哪他们要如何交换信息,才能不让Eve知道这个密钥呢?
方案要求:q是一个很大的素数(如1024bit),而且(q-1)/2也是个素数。
Alice,Bob在不安全的信道建立相同的密钥:
Alice选择一个底数g,素数p,随机数a,
计算A=ga mod p,发送g,A,p给Bob
Bob选择一个随机数b,
计算B=gb mod p,将B发送给Alice,同时计算Ab mod p作为密钥k
Alice再计算Bamodp作为密钥k,那么最终密钥是相同的。
如果想直接破解就是离散对数问题,但是DH密钥交换难以抵御中间人攻击。
将a,A看作Alice的私钥和公钥,b,B看作Bob的私钥和公钥。
另外相似的,椭圆曲线上的密钥交换ECDH。
回到这个题,只需要计算:
B=57687185873717832710418532982088,
a=9360,
p=72542982052896163041354492265957,
那么k=pow(B,a,p)=37799067929880674766269861874334
答案
flag{37799067929880674766269861874334}