如何在一个月内入门密码学? 不邀自答。 写在前面 这个问题在我时间线上停留很久了,今天无意中看到 @Megumi Megumi 的回答,突然有种想答题的冲动。因为工作原因,我也经常需要向没有太多密码学甚至抽象代数基础的朋友介绍密码学的基本概念。为此,我也尝试了很多不同的方法。实话说,大部分的方法都不是特别好,很容易让人对密码学有畏惧情绪。不过,最近我在尝试的方法有不错的效果,特来推荐。 英语,英语,英语 要说入门密码学,本质上还是要看知友当前的知识深入和广度,以及知友的英语水平。是的,没错,如果真的想认认真真入门密码学,还是建议知友直接取看英文的内容。用英文直接理解密码学的基本概念反而比中文更合适一些。举个例子,前一阵子我和另一个朋友在翻译安全多方计算(Secure Multi-Party Computation,SMPC)的一本书。SMPC是密码学中非常重要的研究领域了,毕竟几乎所有的密码学方案都可以看成SMPC的一个特例。SMPC中有一个非常常见的术语,叫做Corrupted Party。这个词如果直译的话应该叫做”腐蚀参与方“,听起来就令人费解。这个术语的本意是,协议的攻击者可以控制一部分参与方,使这些参与方可以和攻击者一起实施攻击,像是被攻击者“腐蚀”了一样。我们一直没有找到Corrupted Party的准确翻译,直到将翻译的初稿发送给原作者,原作者邀请自己之前的博士生Yan Huang老师查阅,Yan Huang老师推荐了一个非常准确的翻译:攻陷参与方。我们一致认为这是一个非常准确的翻译,但我们之前从来没有见过有谁提出应该这么翻译。反之,如果直接用英文理解,就可以避免这类理解有偏差的情况出现。 另一个有趣的例子是Oblivious Transfer,这也是SMPC中的一个术语,表示一种特定的协议,协议的功能是:参与方Alice的输入是两个消息
,参与方Bob的输入是一个比特
。协议执行完毕后,如果
,则Bob可以得到
,但没法得到
;反之,如果
,则Bob可以得到
,但没法得到
;Alice自始至终都无法知道Bob的输入比特
是什么。如果稍微理解一下这个协议的功能就会发现,Alice相当于给Bob发送了一条消息,但Alice不知道发送的消息是哪一个,而Bob也不知道另一条消息是什么。这就好像Alice莫名其妙地给Bob传输了一个她都不知道传的是哪个的消息。Oblivious Transfer的标准翻译叫做“不经意传输”,也有学者翻译为”茫然传输“、”默然传输“,但好像都不能非常形象地描述出Oblivious这个词的意思。如果直接用英文理解,这个词的意思很清晰,用中文理解反而会引入一些歧义。 公开课,不错的入门方法 对于入门一个领域,我一般不会推荐去读一本书,而是推荐看一门优秀的公开课,特别是领域著名专家讲解的公开课。入门一个新领域,我认为最重要的是把握好节奏,确定每天要学哪些内容,并且按照计划把要学习的内容看完。虽然书是分章节的,可以按照章节进行时间划分,但由于每个章节的难度对每个读者来说都不一样,且新领域的知识都是新的,哪怕这本书写得再通俗易懂、再一目了然,也很难明确地给自己一个清晰的时间规划。如果不能按照计划完成相应的章节,很容易出现挫败感。例如,《Head First Java》对于Java初学者来说已经是非常优秀的入门教材了,但面对IO流、UI界面这种不是特别好理解的章节,可能相对需要花费更多的时间。反之,优秀的公开课每个章节的内容量相对比较平均,难度大的章节讲得会细一些,难度低的章节讲得会快一些。这样一来,每个时间段的知识相对是比较平均的。于此同时,公开课的内容相对更注重连续性,知识点之间环环相扣,更容易触类旁通、举一反三。此外,公开课一般都会有讨论区,可以和同一时间学习的小伙伴们一起交流。 这就好像会议论文都需要主讲人去会议现场讲解一样。现场讲解会给出论文的主要内容、最核心的思想和贡献,可以让其他学者快速了解论文的主要贡献,从而带着基本思想去阅读论文,达到事半功倍的目的。与之类似,等学习完公开课,具备了入门的知识后,可以再去看相应的教材、甚至是论文。 密码学入门公开课及其优劣比较 密码学领域一直以来有两个非常著名的公开课。一个是斯坦福大学教授Dan Boneh在Coursera上的公开课《Cryptography I》(https://www.coursera.org/learn/crypto)。Coursera现在访问速度有点慢,B站有人搬运了所有的视频,还有简单的翻译(参见https://www.bilibili.com/video/BV1Ht411w7Re?from=search&seid=)。然而,Dan Boneh公开课的问题是:Dan Boneh的语速太太太太快了。熟悉我的知友们肯定知道我一直在翻译BIU Winter School的讲座,但我一直没胆量翻译BIU Winter School on Cryptography 2013, Pairing-Based Cryptography(http://cyber.biu.ac.il/event/the-3rd-biu-winter-school/)。我自己博士期间就是做身份加密(Identity-Based Encryption)、属性加密(Attribute-Based Encryption)的,要说对Pairing-Based Cryptography应该很熟,最主要的原因就是我实在没法准确听译出Dan Boneh的讲座,不敢乱翻…Dan Boneh的课程只包括第一部分。我应该是第一波学习完这门课程的,时间大概是2012年6月左右,但现在已经是2020年6月了,第二部分还没出… 另一个著名的公开课就是Jonathan Katz教授的《Cryptography》(https://www.coursera.org/learn/cryptography)。这门课目前我没有找到比较好的搬运版本,知友们需要在Coursera上面观看。Jonathan Katz是著名密码学教材《Introduction to Modern Cryptography, edition 2》的作者之一。无论是书籍还是课程,都是非常好的密码学学习材料。然而,这门课相对来说有点”数学“,无论是讲解还是作业,涉及到的数学运算都比较多。如果喜欢数学的话,这门公开课是比较不错的选择。 《Applied Cryptography》,怒荐 如果对数学有些许的畏惧,想先了解了解密码学的基本知识,并在一个月内能够入门,我会强烈推荐Udacity的公开课《Applied Cryptography》(https://www.udacity.com/course/applied-cryptography–cs387)。 这门课的主讲人是David Evans,也是密码学领域、乃至计算机科学领域的著名教授。如果浏览David Evans的主页(http://www.cs.virginia.edu/~evans/),会发现他竟然出过一本面向儿童的计算机科普漫画,可见David Evans的科普功底。他和密码学家Vladimir Kolesnikov、Mike Rosulek合著的教材《A Pragmatic Introduction to Secure Multi-Party Computation》也是目前最新、最全面的SMPC教材之一。没错,我和另一位朋友翻译的就是这本书,我们也为这本书找到了不少笔误,David Evans、Vladimir Kolesnikov、Mike Rosulek也非常高兴地把我们的意见列举在勘误列表之中(https://securecomputation.org/docs/errata.pdf)。 我这里主要推荐《Applied Cryptography》的原因如下:这门课难度非常适中。我在工作中尝试让小伙伴们一起来学习,并且为大家讲解课程中的内容,基本都可以顺利的讲出来并了解的比较全面。这门课的英文讲解很清晰。很少有老师能同时做到上课清晰、科研前沿。David Evans的语速适中,几乎没有任何口音,用词非常简单,内容讲解也非常的清晰。这门课的英文字幕非常准确。作为长期听译英文演讲视频的人来说,我知道很难能制作准确的英文字幕。这门课的英文字幕已经非常准确,部分内容甚至有中文翻译。当然了,这个中文翻译不是我做的… 后面有机会我可以问问David Evans,看有没有兴趣帮他翻译一下这门课。这门课是完全免费的,可以提交小练习、提交作业,有着很好的互动操作。这门课的讲解速度适中。这门课没有讲义,大部分内容都是David Evans教授手写。手写讲义的好处在于,讲义书写节奏适中,方便学生跟上讲解速度。当然了,David Evans也是一个灵魂画手,来看看这灵魂一般的作图:
《Applied Cryptography》一共有10个Lessons,涵盖了古典密码学、对称密码学、非对称密码学、密钥协商、秘密分享及其应用、乃至电子货币、区块链、安全多方计算等前沿密码学研究领域。把这门课听完,基本上可以了解密码学的整体概览,为进一步深入研究相应分支领域提供帮助。 热心的学生们也整理了David Evans课程的讲义(https://www.cs.virginia.edu/~evans/courses/crypto-notes.pdf),David Evans也将讲义免费放出,供参考。从讲义内容也可以看出,这门课覆盖的知识点已经足够丰富了。 我自己对密码学有着基本的了解,每个Lesson平均学习时间大约在3小时(就是听一遍所有的视频、把内容简单整理一下),做编程练习(这是可选项)大约需要2小时的时间。如果对密码学没有太多的了解,可能需要3-4天的时间完成一个Lesson,差不多1个月的时间就可以完成整个课程的学习了。 其他材料推荐 近年来隐私事件频出、区块链蓬勃发展,数据安全领域大火,很多知友都想学习密码学的基础知识。提到密码学书籍,相信大多数人都会推荐两本书,一本是Jonathan Katz和Yehuda Lindell撰写的《Introduction to Modern Cryptography, edition 2》(http://www.cs.umd.edu/~jkatz/imc.html),另一本是Oded Goldreich撰写的《Foundations of Cryptography》(http://www.wisdom.weizmann.ac.il/~oded/foc.html)。这两本书都是非常优秀的教材,对于想深入理解密码学原理的知友们来说是不可多得的优秀材料。 不过,上面两本书有点老生常谈了。实际上,很多新生代密码学家也撰写了新的书籍。我这里推荐两本目前还没有写完,还在更新的教材。 一本是Dan Boneh和Vector Shoup撰写的密码学研究生教材《A Graduate Course in Applied Cryptography》(http://toc.cryptobook.us/)。这是一本非常全面的密码学教材,我认为可能比《Introduction to Modern Cryptography》甚至是《The Foundation of Cryptography》更加全面,当前的最新版本是2020年01月更新的,已经接近1000页了。 另一本是新生代密码学家Mike Rosulek的教材《The Joy of Cryptography》(https://web.engr.oregonstate.edu/~rosulekm/crypto/)。Mike Rosulek是个大帅哥,相信可以吸引很多迷妹… 他的演讲视频讲解得非常清晰,估计过一段时间我就会为知友们带来不少他讲解的讲座了。《The Joy of Cryptography》目前的版本是2020年02月更新的。大概在2周前,Mike Rosulek给我发送了邮件,称预计9个月之后这本书基本可以撰写完毕。如无变化,届时我也会主要参与这本书的翻译工作。当然了,由于这本书是完全免费公开的,翻译版本大概率也会是免费公开的。 以上。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/39529.html