这种做法应该算是:选择密钥攻击
http://mslc.ctf.su/wp/boston-key-party-ctf-2016-hmac-crc-crypto-5pts/
HMAC–CRC(m,k)=(qm(x)⊕rm(x)k(x))modP(x),
根据这个式子,当m不变时,qm(x)和rm(x)不变
令k(x)=0,则有:HMAC–CRC(m,0) = (qm(x))modP(x),
令k(x)=1,则有:HMAC–CRC(m,1) = (qm(x)⊕rm(x))modP(x),
两式异或得到:
HMAC–CRC(m,0)⊕ HMAC–CRC(m,1) = rm(x) modP(x)
HMAC–CRC(m,0)⊕ HMAC–CRC(m,k) = rm(x)k(x) modP(x)
所以,当明文m密文hmac已知,把k=0代入,即key.txt中写入0,得到hmac0;k=1代入,得到hmac1
有了这四个值,求得密钥K,得到K之后放入key.txt,正向跑题目中代码即可得到flag
代码链接里有,也就不贴了
# obtain from running hmac-task on m = "zupe secret"
hmac0 = 0xef6bbf832c7eced2
hmac1 = 0xf39e6a4125801b84
另外一种写法好像也是这个意思:
第一行代码多了个import,删掉就行,安装好sage就能跑
http://andrewl.dreamhosters.com/lblog/2016-03-06_bostonkeyparty_hmac_crc_writeup/writeup.html
这个手动过程很详细
CRC:在有限域的多项式上处理输入数据,在一个不可约多项式上求除法的余数的加密方式
https://github.com/DeliciousHorse/2016.03.BostonKeyParty/blob/master/hmac_crc.md

本文介绍了一种利用HMAC-CRC算法的选择密钥攻击方法,通过设定特定密钥值,推导出密钥K的具体步骤,并提供了解决方案及实现代码链接。
664

被折叠的 条评论
为什么被折叠?



