TL;DR
密码学里需要保密的不是加密算法,而是密钥。
课程情况
《现代密码学》这个课程虽然我是大三选的,但其实这是一个大二大三都想选的课程。同时面向计算机系和叉院都开设。
课程容量大概是100人,但当时选课的人却不少,我记得我好像还是从150个人中靠着二志愿“杀出重围的”。一般选课时不好选的课,退课时总也舍不得退。这学期我在退课时本来在纠结退密码学,但最后也没有退。可能就有这方面的原因吧。
我就去线下上了两节课,后面就再也没去过,期末周的时候看了一遍录屏……老师语速不快,并且是那种说话对时间分布比较平均的类型。也就是说,看回放加速1.5倍也会比较友好,我当时打到了1.7倍,应该是没问题。
课程内容
课程本身覆盖面是比较广的。
- 从古典密码开始讲起,一直讲到德军Enigma密码机与波兰数学家与图灵对密码机的破解。
- 对称密码体制,feistel结构与SPN结构等等,以及经典的des、aes和对应的差分分析、线性分析等等。
- 加密算法体质,讲md5结构、sponge结构,以及对应的生日攻击、后缀攻击等等
- 公钥密码体质,这一部分挺有意思的。我之前确实不知道公钥密码的原理,属实是打开眼界了一番。讲了怎么构造有后门的数学难题,在此基础上在应用层讲了rsa、diffle-hellmen、elgmal等等算法
我认为,这个课涉及的面很广,每个面都还有很多值得深入挖掘的地方。这个课用到的内容很基础,但保护的是计算机很底层的安全问题。总体,还是比较建议选这个课的。(相比其他的牛鬼蛇神竞争对手……)
考核
2021春季学期,这个课是40分的作业,10分的签到,50分的考试。
作业
本学期实行了作业改革。
- 第一次作业是破解几种古典密码,照着课本拟合就行。
- 第二次大作业是设计一种对称密码或者hash函数,5人一组,老师会根据大家的设计结果进行评估,再综合安全性和新颖性给出设计分
- 我们当时设计了基于以太坊的加密算法
Scrypt
的一个hash函数,结果老师说功耗太大不利于在FPGA运行,被扣了两分,有点阴间…(如果后面有时间,我也许会讲讲我们组的算法设计)
- 我们当时设计了基于以太坊的加密算法
- 第三次大作业分组不变,是来破解某一组的第二次大作业。虽然听起来很卷,但其实不是,老师会在第三次提交之前给第二次打分,不会因为算法被别的组破解导致第二次大作业稀烂。不过,如果第三次作业没有破解出来,可能你们组第三次作业分会被扣一些
- 我们组运气好,当时的被攻击者的sponge结构f函数不可逆,而且混淆扩散速度比较慢,被我们用数学方法构造出了碰撞…老师给了我们好多分。
听说之前的后两次大作业是实现sha。新版的大作业我更喜欢一些,比起实现,还是创新做着更有动力。
考试
考试题挺基础的,大家考的也都不错,以上。