为了做大数据安全的研究工作, 必须先把密码学基础知识补齐, 于是有了这篇依据Journal of WoCrypt第四期总结的(公钥)密码学学习路线
原文链接

1 引言

刚开始进入一个领域时,入门材料的选择非常重要。密码学是一个数学、计算机、电子信息的交叉学科。具有数学背景的同学往往无法理解计算复杂度、数据结构与算法等计算机学科的相关知识,在面对安全性证明、原型系统实现时会一筹莫展;具有计算机背景的同学可能会受困于群论、格等相对复杂的数学理论,在设计密码学方案时毫无办法;具有电子信息背景的同学虽具有两个学科的背景知识,但无论从深度还是从广度看,背景知识的掌握可能无法达到要求。如果没有掌握必要的基础知识,在阅读密码学论文,特别是三大密码学顶级会议(CRYPTO、EUROCRYPT、ASIACRYPT)和四大安全类会议(Security & Privacy、USENIX Security、CCS、NDSS)论文时或许会遇到困难,如难以理解约定俗成的符号表示,难以适应相关知识点的描述方式。在理解密码学概念时,背景知识的欠缺也可能导致理解出现偏差或错误,而这些最终会反应到所撰写的论文中。如果基本的定义描述出现偏差或错误,审稿人有理由相信论文中可能存在更严重的错误,对论文产生负面印象,甚至导致拒稿。

期刊给出了入门阅读材料(主要涉及公钥密码学和部分隐私保护技术, 另外大部分知识也适用对称密码研究)
本文着重解决基础知识问题,推荐必学公开课和必学教材。公开课对基础知识的学习带来很大的帮助:(1)每节公开课的时长相对固定,这可以帮助我们合理安排时间,制定相应的学习计划;(2)可以将公开课看作教材的索引,帮助我们定位知识点,加深理解;(3)与阅读教材相比,观看公开课相对可能更有趣一些。优质的教材会帮助我们建立正确的密码学思维方式,了解约定俗成的符号定义和描述方法,为阅读论文扫清障碍。如果推荐的材料有对应的中文翻译版本,我们会进行注明。如果中文翻译材料为书籍,我们一并给出豆瓣读书的评分。如果感觉直接使用英文材料较为困难,可以先阅读对应的中文翻译版本。但我们想强调的是,早晚有一天我们需要阅读和撰写英文论文。因此,不如对自己狠一点,直接阅读英文教材.

2.1 密码学导论

相关推荐

  • Dan Boneh 教授的公开课“Cryptography I”。这门课程已经包含密码学中常见概念的介绍,包括 Stream Cipher、Block Cipher、Message Integrity、Authenticated Encryption、Basic Key Exchange、以及 Public-Key Encryption。
  • Jonathan Katz 教授和 Yehuda Lindell 教授撰写的《Introduction to Modern Cryptography,
    2nd Edition》。这本书足够新,写得足够好、论述得足够深。最为重要的是,这本书通俗易懂地讲解了密码学的核心概念,以及安全性证明的核心思路。

2.2 (公钥)密码学安全性证明

推荐资料

  • Victor Shoup 教授的论文《Sequences of Games: A Tool for Taming Complexity in Security Proofs》。这篇论文不会让安全性证明变得简单,但是会讲解怎么更系统地整理证明思路,把细节一步步有调理的放在一串攻击者与仿真者的游戏里。读完里面关于RSA 和 ElGamal 安全性证明的“改写”,会对原先的证明过程有全新认识。
  • Fuchun Guo、Willy Susilo、Yi Mu 的著作《Introduction to Security Reduction》。这本书最突出的特点是对几乎所有安全性证明写得非常好的方案进行了完整的讲解,如数字签名中随机预言模型下的 Boneh-Lynn-Shacham方案、标准模型下的 Boneh-Boyen 方案;公钥加密方案中第一个选择密文安全的 Cramer-Shoup 方案、第一个基于身份加密(Identity-Based Encryption,IBE)方案 Boneh-Franklin 方案、标准模型下两个 IBE 方案 Waters 方案和 Gentry 方案。这几个方案所对应原始论文的安全性证明都写得非常清晰,建议精读。
  • Cramer-Shoup 方案的论文。相比于近些年来动辄数十页甚至上百页的论文来说,这篇论文的长度会短得多,阅读起来会显得轻松不少。这篇论文的安全性证明堪称范本,应用单个游戏的模式完成了安全性证明,描述非常清晰,很容易理解证明思路。
  • Lewko-Waters 方案论文, 有关逐个游戏迭代模式的安全性证明. 这篇论文应用对偶证明方法,在合数阶双线性群下将 Boneh-Boyen-Goh 选择性安全(Selectively Secure)的层次基于身份加密(Hierarchical Identity-Based Encryption,HIBE)方案转换成了适应性安全(Adaptively Secure)的HIBE 方案。对偶证明方法需要以逐个游戏迭代模式完成证明
  • 有关通用密码学协议的安全性证明学习,推荐 Yehuda Lindell 的文章《How To Simulate It – A Tutorial on the Simulation Proof Technique》。这是目前为止唯一一个针对密码学协议,以教程
    (Tutorial)的形式分析仿真安全性证明方法的文章。全文从半诚实攻击者攻击下安全的不经意传输协议(Oblivious Transfer Secure against Semi-Honest Adversary)这一最基础的协议开始,到混合模型下的证明(Security in Hybrid Model ),再到 顺序 组合 定理( Sequential Composition Theorem)和针对恶意攻击者攻击的转换方法,最后在结尾简要介绍了通用组合性(Universal Composition)的概念,每一步的讲解都极尽精准和详细。

注意:
很多论文都有会议版本和期刊版本。如果论文只有会议版本,作者一般也会将论文的扩展版本(或称完整版本)上传至国际密码学研究协会(International Association for Cryptologic Research,IACR)的网站上。如果想精读一篇论文,建议寻找发表在IACR 上的版本,此版本的内容可能会更加全面。

3 分支领域推荐入门材料

学习完必学材料后,我们可能就会切入到具体的研究方向中,开展自己的密码学研究了。然而,每一个密码学领域或多或少都有一定的差异,对应的经典论文也不尽相同。如何快速把握某一分支领域的核心思想和关键论文就成为了接下来的难题。接下来,介绍一些可以快速了解密码学分支领域的材料.

  • 巴伊兰大学冬令营演讲视频, 巴伊兰大学的密码学冬令营(BIU Winter School on Cryptography)。这可能是密码学研究者们为全世界带来的最佳密码学分支领域科普材料。自 2011 年起,以色列巴伊兰大学每年冬天都会选择一个密码学主题,邀请这个主题下全世界最著名的密码学家来到巴伊兰大学带来精彩的讲座。巴伊兰应用密码学和网络安全研究中心(The BIU Research Center on Applied Cryptography and Cyber Security)在 YouTube 上传了全部讲座的视频录像。可以在对应的官方网站上找到所有视频的幻灯片。
  • 密码学基础指南, Oded Goldreich 教授是密码学先驱科学家,他的学生们联合起来,于 2017 年撰写了一本有关高级密码学理论和计算复杂性的研究生教材,教材名称为《Tutorials on the Foundations of Cryptography》, 教材涵盖了当前密码学的几大分支领域:安全多方计算中的乱码电路、公钥密码学、伪随机函数、单向函数、同态加密、仿真证明技术、差分隐私,对应的章节名称分别为:《Garbled Circuits as Randomized Encodings of Functions: a Primer》、《The Complexity of Public-Key Cryptography》、《Pseudorandom Functions: Three Decades Later》、《The Many Entropies in One-Way Functions》、《Homomorphic Encryption》、《How to Simulate It: A Tutorial on the Simulation Proof Technique》、《The Complexity of Differential Privacy》。
  • 信息安全、隐私与信任系列讲义, 面向应用研究人员的教材。推荐 Elisa Bertino 和 Ravi Sandhu 主编的系列丛书《Synthesis Lectures on Information Security, Privacy, and Trust》. 系列书籍已经涵盖了异常检测、智能电网安全、区块链与密码货币、差分隐私、隐私风险分析、安全外包计算、数据库隐私、社交网络安全、RFID 安全、隐私信息检索、操作系统安全等多个领域。
  • 细分领域入门材料
    • 密钥协商与密钥交换, 推荐 Mihir Bellare、David Pointcheval 和 Philip Rogaway 撰写的论文《Authenticated Key Exchange Secure against Dictionary Attacks》[8]和Tibor Jager、Florian Kohlar、Sven Schäge、Jörg Schwenk 撰写的论文《On the Security of TLS-DHE in the Standard Model》
    • 差分隐私, 建议直接阅读 Kunal Talwar 和 Frank McSherry 撰写的论文《Mechanism Design via Differential Privacy》。这篇论文提出了差分隐私中最重要的机制之一,指数机制( Exponential Mechanism)。几乎所有ϵ-差分隐私机制都可以看成指数机制的特例,因此理解指数机制也意味着基本可以理解差分隐私的核心思想。如果仍然不能很好地理解差分隐私的概念,可以尝试阅读 Ninghui Li、Wahbeh H. Qardaji、Dong Su 等人的论文《Membership Privacy: A Unifying Framework for Privacy Definitions》。此篇论文提出了成员隐私(Membership Privacy)的定义。相比差分隐私,成员隐私应用先验概率和后验概率之间的关系描述隐私保护程度。这篇论文可以帮助我们从更广义的层面理解差分隐私.
    • 不经意随机存取机, 建议从 Oded Goldreich 和 Rafail Ostrovsky 的论文《Software Protection and Simulation on Oblivious RAMs》[28]开始。这篇论文首次提出了 ORAM 的概念,虽然篇幅稍长 , 但无论是RAM模型(RAM Model )或者是不经意性(Obliviousness),论文中都给出了非常详细的定义和解释.

4 基础学科推荐入门材料

  • 4.1 离散数学与抽象代数, 推荐阅读 AT&T 实验室 Kenneth H. Rosen 撰写的教材《Discrete Mathematics and Its Applications, Seventh Edition》。这本教材已经由徐六通、杨娟、吴斌老师翻译并出版,教材名称为《离散数学及其应用,原书第 7 版》;抽象代数的学习就没有那么轻松了。我们推荐哈佛大学Benedict Gross教授的公开课“Abstract Algebra”。Benedict Gross 教授的讲解激情四射,引人入胜,唯一的遗憾就是他的课堂笔记实在有一些凌乱。可以在网络上找到这门课程的笔记,这可能会对学习有所帮助.推荐的抽象代数教材为麻省理工学院 Michael Artin 撰写的《Algebra, Second Edition》。这也是 Benedict Gross 教授的公开课所使用的教材。这本教材已经由姚海楼、平艳茹老师翻译并出版,教材名称为《代数(原书第 2 版)》
  • 4.2 计算复杂性, 推荐来自卡耐基梅隆大学的 Ryan O’Donnel 教授的计算复杂性课程。Ryan O’Donnel 教授分别为本科生开设了课程“Undergraduate Complexity Theory”,为研究生开设了课程“Graduate Computational Complexity Theory”. 推荐 Ryan O’Donnel 教授这两门公开课所使用的教材,分别是 Michael Sipser 撰写的《Introduction to the Theory of Computation,3rd Edition 》 以及 Sanjeev Arora 和 Boaz Barak 撰写的《Computational Complexity: A Modern Approach》
  • 4.3 编程基础(emm, 这个不多说了吧)

5 其它相关材料介绍

列举其它一些或者有趣、或者对相应密码学领域有帮助的材料

  • 5.1 其它推荐材料

    • 《 An Introduction to Mathematical Cryptography 》, Jeffery Hoffstein、Jill Pipher、Joseph Silverman 著.
    • 《 Understanding Cryptography: A Textbook for Students and Practitioners》,Chirstof Paar、Jan Pelzl 等著
    • “ A Few Thoughts on Cryptographic Engineering ”, Matthew Green。著名密码学家 Matthew Green 的博客
  • 5.2 建议入门后精读的材料
    • 《Foundations of Cryptography》,Oded Goldreich 著。这本书是 Oded Goldreich 撰写的重量级著作,分为两卷,第一卷讲解基础工具,第二卷讲解基础应用。这本书适合资深科研人员,概念密度很大,表述略显精简,需要一句一句精读。这本书是入门时学习的必备辅助材料,尤其研究安全多方计算,这本书是不可或缺的。
    • 《The Algorithmic Foundations of Differential Privacy》,CynthiaDwork、Aaron Roth 著。虽然是差分隐私提出者 Cynthia Dwork研究员本人亲自撰写的书籍,书籍的描述非常严谨、准确,但这本书的阅读难度非常大。建议直接阅读相应技术的论文,当在相关公式、引理、定理等的推导过程中遇到困难时,再尝试从这本书找到答案。
    • 《 Universally Composable Security: A New Paradigm for Cryptographic Protocols》,Ran Canetti 著。只要研究密码学协议,就一定听说过广义可组合性(Universal Composition)。
      由于 UC 安全证明里涵盖环境(Environment)、参与方(Parties)、理想功能模块(Ideal Functionality,记为ℱ)、仿真者(Simulator)和攻击者(Adversary)这 5 类实体,并使用了:(1)多带互动图灵机作为基本计算模型;(2)带有三个限定量词(Quantifier)的两个序列来定义安全性;(3)多重标识(sid、ssid、qid)来标记一个会话(session).

6 总结

推荐公开课汇总

推荐教材与书籍汇总


7 个人总结

这篇文章讲了入门到做密码学研究的必要知识的学习路线, 总之就是非常详细, 推荐的资料也经过了作者的筛选, 可以让新进研究者少走弯路, 剩下的就是个人的长期积累学习和修炼的过程, 尽可能汲取前人经验, 夯实基础, 更快走到密码学研究工作的前沿.

从入门到前沿的密码学学习路线相关推荐

  1. [转]从入门到精通,Java学习路线导航

    引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...

  2. python 量化分析 入门_量化入门-小白到菜鸟的学习路线

    小白到菜鸟的入门学习路线,不要盲目以为多看策略就能学会,要注意学习方法. 本文的主要目的 很多新人面对多如牛毛的策略不知从何下手,在很多较难的帖子下面留言一些最基础的问题.小白不知道该先学什么,后学什 ...

  3. 从入门到精通,Java学习路线导航

    引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...

  4. 从入门到精通,Java学习路线导航(附学习资源)

    引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...

  5. 从入门到精通,Java学习路线导航(附学习资料+持续更新)

    引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...

  6. JavaEE 从入门到精通(含学习路线)

    学习路线 1,首先我们得知道 JavaEE 学习路线是怎样的,对吧?这是我在网上搜到的文章: 我的JavaEE学习路线图 JAVA EE 自学路线 搜索一下,网上有很多. 学习内容 Java SE ( ...

  7. Python 3 天从入门到入职完整学习路线

    精讲视频包括 360 分钟的随选视频 36 篇图文配套讲解 20 道编码练习题 完整的永久访问权 随时随地在移动设备上观看 Python 将是每个开发者的标配 爬虫 大数据 机器学习 数据处理 Web ...

  8. 从入门到实战,Android学习路线大全,程序员翻身之路

    多Acitivity管理: AndroidManifest.xml文件的作用 Intent的使用方法 使用Intent传递数据的方法 启动Activity的方法 IntentFilter的使用方法 A ...

  9. 【入门建议收藏】密码学学习笔记之线性分析入门篇——EzSPN

    前言 上一篇了解了一下差分分析,这次我们结合一道CTF题目聊一聊线性分析 同属于选择明文的差分分析不同,线性分析属于已知明文攻击方法,它通过寻找明文和密文之间的一个"有效"的线性逼 ...

最新文章

  1. 论一名项目经理的能力素养
  2. 事务,视图 ,函数,存储过程,触发器
  3. modelsim显示状态机名称的方法
  4. python中的reduce函数用法
  5. php引擎,php基于什么引擎
  6. 论文推荐 | 一文了解百度10篇ACL 2019概况和该技术的实际可落地应用
  7. 配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题
  8. 超频电脑黑屏(超频失败怎么办)
  9. 求二元一次方程 的解 C语言
  10. Android P 图形显示系统(八) SurfaceFlinger合成流程(三)
  11. 阿波罗无法通过链接外网
  12. 微信公众号自定义菜单如何添加特殊符号?
  13. 单向链表—在单向链表的头部插入一个元素
  14. C4D全版本软件安装包(含最新2023)
  15. 同时使用两片I2C同型号设备时地址怎样设置 (如何更改器件地址)
  16. 机器学习讲座总结-读图时代的识图技术
  17. Loss.backward()
  18. Spring Boot项目开发流程
  19. 七牛云数据迁移到网易nos
  20. 论文|SDNE的算法原理、代码实现和在阿里凑单场景中的应用说明

热门文章

  1. Linux Centos7 搭建简易堡垒机安装jailkit实现chroot
  2. 作为一名程序员,你觉得最重要的能力是什么?
  3. Photoshop CS5自学学习笔记
  4. uniapp微信头像
  5. c语言实验心得100字,实验心得100字_100个面试常见经典问题_100个面试问题和答案...
  6. 解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
  7. 2017-10-20 西电 新一代人工智能与深度学习“国际”研讨会第一天见闻
  8. Ubuntu 10.04 LTS 下 Android 4.1.2_r1 源代码的下载
  9. webofscience入口注册_Web of Science科研数据库平台
  10. java 图片 缩略图_java 图片缩略图的两种方法