CTF 密码学方向

密码学不仅是 CTF 竞赛中的一个重要的独立考察方向,也经常作为考点出现在其他方向的题目当中。密码学的难度也是让很多人望而生畏的,CTF密码学能力完全可以通过刷题训练来得到提升,那样子确实是可以应付大多数比赛。

那样的密码学手并不是理想的密码学选手,我理解的密码学选手应该可以充分理解密码学的原理,将密码学作为一门学科来进行学习,可以充分理解论文中所阐述的原理,对各类比赛的题目可以运筹帷幄。

密码学的路线是陡峭的且艰难的,也只有真正热爱密码学的人才可以走到最后,看到密码学的美丽风景。

技能概况

Crypto技能 思维导图

image20211002110256471.png
密码这么多技能该如何进行入手和学习呢?我们应该怎么进行密码学的学习呢?

根据我自身的情况,首先是要把密码学作为一个学科来进行学习,由于密码学的特殊性,不像其他的CTF方向有着很多的技巧性。密码学有着相对较强的学术性和理论性。只有清晰且透彻地了解和学习密码学的原理,才能在CTF比赛中厚积薄发,脱颖而出。

学习路线

学习路线相对比较系统,效果可能在后期可能比较明显,建议在学习过程中编程和刷题同步进行,增强综合能力,能够运用理论和代码解决CTF中的各类密码学题目。

  1. 密码体制学习以及密码学概况了解
  2. 基础数论知识学习
  3. 古典密码学
  4. 编程技能学习和训练 Python
  5. 对称加密体制——流密码学习
  6. 对称加密体制——分组密码学习
  7. 对称加密体制——DES学习
  8. 抽象代数知识的学习
  9. 对称加密体制——AES学习
  10. Hash函数的知识学习
  11. 非对称加密——背包问题密码
  12. 编程技能学习和训练 SageMath
  13. 非对称加密——RSA
  14. 椭圆曲线和离散对数知识学习
  15. 非对称加密——ECIES ElGamal (EC)DSA
  16. 格知识学习
  17. 格密码学习
  18. 论文阅读训练和论文检索学习

学到最后的论文,密码学的知识体系和技能树基本上是完善了,密码学学习过程中既要学习密码编码学的知识同时也要学习着密码分析学的知识。要清晰的知道了了解密码学相关的攻击方法以及攻击方法可能涉及到的原理,清晰地认知密码学的体系。

值得关注的 CTF

由于 CTF 竞赛中专职密码学方向的选手通常较少,因此一场比赛是否有较高质量的密码学题目其实往往取决于办比赛的战队中有没有一个优秀的密码学选手,目前有一些比赛的密码学题目质量是要远高于其他竞赛的,值得参赛选手去重点关注(另外有一些战队虽然拥有很强的密码学选手,但是战队办比赛较少,可以关注其每次比赛赛后发布的 writeup 来了解其做题时的一些思路和解法):

  • Teaser Dragon CTF(波兰 Google 安全团队 Dragon Sector 战队主办)
  • 0CTF/TCTF (中国腾讯安全 A0E 战队主办)
  • HXP CTF (德国慕尼黑工业大学 HXP 战队主办)
  • ASIS CTF & Crypto CTF (伊朗谢里夫理工大学 ASIS 战队主办)
  • CODE BLUE CTF (日本联合战队 binja 主办)
  • PlaidCTF (美国卡耐基梅隆大学 PPP 战队主办)
  • Midnight Sun CTF (瑞典 HackingForSoju 战队主办)
  • SpamAndFlags Teaser CTF (匈牙利布达佩斯技术与经济大学!SpamAndHex
    战队主办)
  • PwnThyBytes CTF (罗马尼亚 PwnThyBytes 战队主办)

对于一名密码学方向的 CTF 选手来讲,除了通过活跃于各大 CTF 比赛和在平时保持足够的 CTF 题目训练强度来提升自己的水平之外,实际上还有一些其他的密码学相关竞赛可以用来作为训练,每年诸如 NSU CRYPTO、WhibOxContest 等解题类密码学竞赛,也可以参加或做赛后练习用,以此来锻炼密码分析能力。

学习资料

网站:

书籍:

  • 《深入浅出密码学》
  • 《现代密码学》 杨波
  • 《现代密码学:原理与协议》
  • 《密码编码学与网络安全》
  • 《公钥密码学的数学基础》 王小云
  • 《信息安全数学基础》陈恭亮

参考

  1. [原创]All About Crypto - CTF竞赛密码学方向指南-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com
  2. 《密码学生存指北》 - 公开课 - 看雪-安全培训|安全招聘|www.kanxue.com

Q.E.D.