看雪CTF.TSRC 2018 团队赛 第十五题『 密码风云』 解题思路

发布者:Editor
发布于:2019-01-02 17:41



最新赛况战况一览


2018年的最后一天,看雪CTF.TSRC 2018 最后一题画上句号。作为本次比赛的决胜局,无团队攻破,为本题添上些许神秘色彩。



最后一题过后,攻击方比赛排名继续保持如下:



感谢各位选手一个月以来的优秀表现,最终比赛结果将是如何?接下来将由比赛组委会对所有比赛成绩进行复盘、审校,成绩将于1月2日揭晓!



第十五题 点评


crownless:

“密码风云”此题涉及梅森素数、Hash算法、传统加密、对称算法、ECC公钥密码,可以说是密码学的大杂烩,对没有相关知识积累的逆向者造成了极大的考验,创造了本届看雪CTF第一题无人攻破的历史。



第十五题 出题团队简介


出题团队:BlackChamber  


成员cnbragon,密码学和逆向爱好者,非常喜欢分析研究密码学算法在各种软件和协议中的应用,希望能和CTF比赛中的密码学爱好者多交流



第十五题 设计思路


由看雪论坛cnbragon原创




说明:


其中Rotor加密可从相关的Python模块源码中获取,Skipjack算法对其F-Table进行了变换。


整个题目涉及梅森素数、Hash算法、传统加密、对称算法、ECC公钥密码,总体思路如下:


1. 前面两个数都是梅森素数,即p是素数,2^p -1也是素数,对于10进制3位数,只有两个值。


这里为了降低难度,给出线索,在尝试出错10次以后,增加判断是否是素数的逻辑,便于判断这是梅森素数公式。


2. 计算两个梅森素数的和,并且计算转化为字符串之后的SM3哈希值,并简单计算Hash值的XOR校验值,如果校验通过,则用该Hash值作为Rotor算法的Key。


3.对输入的Serial中间的24个字符数据进行解密,得到字符串cryptography,取其前10个字符,作为接下来Skipjack算法的密钥,对程序中预存的24个字节进行解密,解密后的值为pediyctf2018.by.cnbragon,用于后面ECNR步骤的消息计算。这里对Skipjack的F-Table进行了变换。


4.使用同样的密钥,对serial的后面32个字符进行Skipjack解密,解密后的结果分别作为签名c和签名d。


5.将字符串pediyctf2018.by.cnbragon以64位作为单位,进行xor,结果是ECNR的真正明文message。


6.对签名c和签名d做ECNR签名验证,如果验证通过,为了保证serial的惟一并且进一步降低难度,增加了额外的加法校验。

题目源码请点击下方“阅读原文”查看哦!





合作伙伴



腾讯安全应急响应中心 

TSRC,腾讯安全的先头兵,肩负腾讯公司安全漏洞、黑客入侵的发现和处理工作。这是个没有硝烟的战场,我们与两万多名安全专家并肩而行,捍卫全球亿万用户的信息、财产安全。一直以来,我们怀揣感恩之心,努力构建开放的TSRC交流平台,回馈安全社区。未来,我们将继续携手安全行业精英,探索互联网安全新方向,建设互联网生态安全,共铸“互联网+”新时代。





本题源码!

https://bbs.pediy.com/thread-248740.htm


转载请注明:转自看雪学院




专栏链接汇总:

















声明:该文观点仅代表作者本人,转载请注明来自看雪