前言

大约也是在去年的这个时候,笔者非常荣幸听了一次郭老师的学术讲座,当时的主题是安全归约与模拟,一个密码学里面非常重要的内容

由于笔者是研究零知识证明的,姑且算是半个密码学研究生吧,平时看的许多ZKP的论文里面都会提到模拟的概念,于是就去听了郭老师的讲座,听完之后收获满满,对模拟的概念有了更深的理解

后来又断断续续学习了《卧报》的部分内容,以及郭老师在b站上传的一些视频,算是弥补了笔者研究生阶段的很多漏洞和知识盲区

前阵子在图书馆找签名相关的书籍的时候,机缘巧合下搜到了这本书,然而图书馆仅有检索条目,并没有收录这本书

前段时间boss打算开一门与可证明安全相关的课程,后来又在赵老师的课件中又看到了这本书,于是光速下单买了这本书,前两天也是有空把这本书读完了

全书行文非常轻松,许多部分略带调侃气氛,其中还会出现诸如“贼好”、“普及一波”之类的,或许是所谓的自己这样的“年轻人”的聊天方式,阅读过程更像是在与朋友或者同门聊天,而不是简单的罗列一下密码学中乏味的理论

只不过这位“朋友”已在密码学领域深耕多年,他希望以一种独特的角度,展现密码学的研究到底有多有趣,这也是前言所提到的:本书将密码学研究看作研究人员的一种游戏,研究人员通过这样的游戏相互“竞争”与“比较”,进而推动密码学的研究向前发展

看了刘逸师兄$[2]$写的书评,笔者认为这本书应该不算偏科普类的书籍,《图解密码技术》那本更像是科普,生动形象的阐述密码学的基本框架和部分技术细节

或许《密史》更倾向于简史之类的?不过简史好像也算是偏科普的分类,whatever,这不是重点

总之,笔者读完之后的感受也是和郭老师的前言所写的完全一致:在本书的帮助下系统全面地了解密码学的研究问题,至少站在数字签名的角度,了解密码学研究的起源、现状与方向

一些个人的思考

《密史》的故事从Diffle和Hellman的那篇划时代的论文开始,整本书印象最深刻的片段在第一章,郭老师写了一个虚构的小故事来介绍DH密钥交换的核心思路,这里或许郭老师并不想表达这个核心思路是什么,更想描写科研人员理解问题的角度和方式

DH密钥交换是什么,无非就是下面这个等式

$$ (g^a)^b=g^{ab}=(g^b)^a $$

没记错的话DHKE需要模一个素数$p$,不过模不模这个素数都一样,因为这是幂运算的基本运算法则,初中就学过了

再进一步看,$g$也不要了,DH密钥交换的本质是什么,$a*b=b*a$,乘法交换律么,这他妈的能有什么难度,小学二年级就学了,这点技术含量也能发论文?

但是数学家和密码学家就能琢磨出最简单的数学知识中蕴含的奥妙,并基于此建立了公钥密码学的基本框架

这里扯个题外话:笔者前段时间在看信息论的教材,其实香农的信息论也是一样的,最基本的概念就是信息熵

信息熵是什么?其实就是自信息的数学期望,那自信息又是什么?其实就是随机变量的负对数

对数和数学期望,高中都学过,就算是高考完之后忘了,大学里面大部分理工类的学生都会在大一数学课上再学一遍

尽管自信息和信息熵的计算公式有严格的推导与证明过程,但是作为这门学科最基本的概念,居然简单到只用两个高中数学知识就可以解释

说回正题,有些人觉得密码学难,无论是课程内的教材,还是上研之后看的论文,都充斥着各种各样由看不懂的鬼画符组成的公式(其实就是Latex的花体字),笔者认为主要有两方面的原因

首先是缺乏对密码学的总体的认知,不知道密码学需要解决什么样的问题,过程中会遇到什么样的困难,解决这些困难需要用到(改进)什么技术,这个技术是否有问题,之后是否又存在新的问题,等等

国内的许多密码学教材,第一章就是绪论,充斥着各种各样看不懂的术语,包括但不限于安全模型、安全威胁、加密与认证

然后打开目录,一章一章讲过去,似乎每一章都是完全独立,相互之间没有什么联系,每一章单独拎出来,我都知道他想干什么,但是全部捏在一起我就不知道了

其实大多数密码学的教材的目录都大致概括了现代密码学的基本框架,对称密码、公钥密码、Hash函数、签名、认证,缺一不可

但是或许是教材的原因,或许是任课教师的原因,大部分情况下上完这门课,学生都还是一知半解的状态

《密史》整本书也就五章,和密码学教材比起来可太少了,但是《密史》可以完美的为读者构建起密码学的总体世界观

成长与构造之路(阐述密码学需要解决什么样的问题),发展之路(过程中会遇到什么样的困难),升级之路(需要用到/改进什么技术),分析之路(技术本身的问题,新的问题)

和大部分的密码学教材的目录与内容相比,这个流程简直不要太清晰

另一点就是对数学工具的理解与使用了,这部分其实和《密史》没什么关系

无论是公钥密码学,还是信息论,现在回头再去看这些完善的理论体系,基本概念里面并没有利用什么复杂的数学知识,加法和乘法,或者只是一些简单的概率论知识,仅此而已

说白了,现代密码学有很多概念也没有很复杂,RSA的加解密可能给中小学生也能讲明白,同态无非也是在玩运算的交换律和结合律

感觉就和做饭一样,最高端的食材往往只需要最简单的处理方式

我们从小到大学了这么多的数学,加减乘除,到三角函数,微积分,如果以后搞密码还要学数论、代数等等相对进阶一些的内容

数学工具固然重要,但是更重要的是如何利用这些数学工具,创新性的解决一个实际问题

这也是郭老师在《密史》里面提到的:需要对一个知识点理解到极致,然后提出一个小学生都能理解的技术,这比学习数学本身要重要得多,也困难得多

回到《密史》

全书重点应该是三四两章吧,和刘逸师兄说的一致:非专业人士看的可能很费劲,但是却给专业人士的很多帮助

第三章主要从方案构造的角度来探讨如何做密码学研究,比如从算法的角度,从安全模型的角度,效率,敌手的能力等等

看似整章都在讲故事,但是郭老师在通过讲故事的方式,引导读者如何在科研的过程中以不同的角度看待需要解决的问题

或者说,论文的工作与目的需要解决哪一个问题,可以是内存开销更小,也可以是验签更快,或者说是基于标准假设的方案

第四章就更为复杂一些了,书本的原话就是“能”与“不能”的逻辑,研究者需要在签名的几个常识点之间做权衡与功能升级

比如禁止签名者知晓待签名消息,这叫盲化,比如限制签名者无法独立完成签名,这叫门限,包括现在顶会顶刊常见的群签名、环签名、属性签名等等

这也是郭老师在书中写到的:密码圈的功能升级逻辑是“从正常到反常”,通过功能升级来得到多个可研究的、有趣的、更细节话的研究目标,从而引领密码学研究的百家争鸣

这两章的内容不仅仅是对研究问题(第三章)和签名方案(第四章)的细化分类,更重要的是郭老师详尽展示了分类的角度与过程

这就是所谓的授人以渔,带领读者去提出问题,思考问题,解决问题,然后提出新的问题

或许这也是郭老师这本书的目的与初衷吧

后记

笔者接触密码学的时间不长,正式接触应该是大三的上学期的密码学专业课,而且上课上的一知半解,大部分时间都在自学

好在兴趣使然,能有足够的动力学下去,可能只是数学底子太差了,这条路稍微走得慢了一些,但是仍在前进

后来有幸来到了新的高校进修,也在入学的第一个学期内就确定了自己的研究方向——零知识证明

在笔者看来,密码学的魅力,尤其是公钥密码学的魅力,在于它尝试去追求一种近乎于完美的方案,将对第三方的信任,转移到密码学假设上

或者说,这是一种无条件的信任,一种不受人的意志所转移的信任,一种来自于世界本源数学规律的信任,永世长存,亘古不变

密码学的研究者们穷尽了一生的智慧,不断尝试突破人类认知的极限

所以,

$$ 这个问题很有趣,你有解决思路吗? $$

References

$[1]$ 《数字签名密史:从急需到有趣》官方MV - Bilibili

$[2]$ 推荐郭福春老师新书《数字签名密史:从急需到有趣》 - 知乎 (zhihu.com)

$[3]$ 卧村密码学报 (uow.edu.au)