关于密码学
顾名思义就是研究加密的学科。比如要在Alice与Bob两人通信过程中,在有Eve窃听的情况下,依然保证消息不泄露,这就需要Alice用一个加密密钥(类似于开锁的钥匙)对信息加密,而Bob将收到的信息用解密密钥解密,这样Eve就无法得知通信内容。而凯撒密码就是十分著名的一种加密方式,将字母移位,从而达到加密的目的,凯撒密码属于古典密码,在平台的Classic
Crypto分类中就有许多这样的密码。但是它们的安全性都基于对加密算法的保护,一旦加密算法暴露,哪怕没有密钥,也能够进行解密。因此,现代密码学要求在加密算法公开的情况下,只要不知道密钥,就无法对消息进行解密。这样的话,仅需要保护一个不算长的密钥即可保护一段信息;即使密钥泄露,换个密钥就能继续用同一个加密算法加密。所以,密码学就是要寻找一个在不知道密钥情况下无法破解的算法。因此,下面这些题目,都会有一个用python写的加密脚本,这些都是有漏洞的加密方式,你需要从中找出漏洞,并且在没有密钥的情况下恢复明文。
密码学需要什么基础知识
数学基础:
密码学是数学的一个应用学科,最早的公钥密码算法RSA就是基于数论的,因此学习密码学通常还需要从数论开始学起,公钥密码往后发展的过程中,也逐步用到了线性代数与抽象代数的内容,那些东西由于过难在本次新生赛不会涉及,因此请先从数论开始(除了用于防大佬新生ak的Easy
RSA有用到线性代数的复杂知识,想要钻研的这题的新生请慎重)。其次,最早不是基于数学的块密码,在发展的过程中,也被运用数学的语言来描述,从而更能够更清晰的找到攻击方法。因此,学习密码学会涉及到大量的数学知识,欢迎对数学感兴趣(至少不讨厌)的同学来钻研学习
编程基础:
现代密码学比古典密码复杂许多,它的加密解密算法不是人能够口算或者笔算出来的东西,因此也需要编程。而密码学由于经常要用到特别大的数字,远超c和c++的long
long
int的上限,因此一般使用python编写程序。python是一个较接近自然语言的编程语言,因此容易上手,灵活运用搜索引擎以及网上一些教程很容易学会。
英语基础:
你有可能会遇到一些需要阅读纯英文文章才能解决的题目,需要有一定的耐心才能看明白。
密码学需要哪些工具
python
两个用的挺多的python库:pycryptodome,gmpy2(网上均有安装方法,使用方法也有,也可直接查文档)
(sagemath)对初学者来说用处不大
如何学习密码学
善用搜索引擎
在ctfwiki的crypto分区寻找一些crypto的基础知识
当我在做题时遇到困难怎么办
先去各大搜索引擎轮番搜一遍
阅读《提问的智慧》
寻找管理员里那个密码fw寻求帮助
当然,就算做题没遇到困难,只要对密码学感兴趣,也欢迎去找那个密码fw闲聊.并教教他密码学,他可菜了。
crypto是个比较小众的方向,但也相当有趣。会有很硬核的数学让人想放弃,但坚持下来慢慢搞,一定会有很大收获。
moectf{I_L0Ve_M@th_AnD_CRypT0}