密码学领域写文章如何找研究点和创新点?

242 2023-12-26 00:56

突然看到有人cue我…但是其实我没有发表过paper…到现在起密码学算是入门了一年不到(去年八月份开始自学),现在还在 @沙金锐 所描述的第一阶段,即学习的过程中-。-

结合这一年下来看过的paper,我来尝试总结一下大概看到的规律…

首先密码学领域的paper,个人感觉特别注重line of work,基本上先要熟悉一下有哪些比较active的领域,然后基于这些领域都有哪几条线的发展。

如果是在承诺方案(我理解为Commitment Scheme?)上来说的话,当前我看到比较active的一条线(只是个人视角)有Sub-Vector Commitment(有一篇今年讲aSVC的paper),然后aSVC的论文又引用了Vector Commitment(CF13),然后CF13的精髓又基于Mercurial Commitment(Chase et al 05),然后Mercurial Commitment又引用了上古时代的一些承诺技术(如BCC88的Chameleon Commitment等)。这条线又与BBF19(用Accumulator来搞承诺)这一条线交织了起来。

几条线看下来就能看到这几十年来在Commitment上大家做的研究。我感觉现在的趋势上来说就是把承诺这个东西玩出了花,以前承诺一个东西,后来承诺一串东西,现在承诺一串东西里的某些东西之类的。其实这条线的发展感觉也跟区块链的应用普及有关,毕竟在链上必须要通过这些可信的承诺机制来确定数据的真实性。区块链也派生出了一系列的性能/优化问题,确保承诺算法是可以高效运行的。

再说说ZK这个领域吧。我个人看下来感觉ZK这个领域也是几条线现在交织在一起。

一方面是以前一帮研究MPC的人,在研究malicious security的时候发现ZKP很好的解决方式,所以就跑来搞ZKP,目的是让MPC变得更加practical。搞得过程中,发现MPC这个东西本身也可以当作ZKP(MPC-in-the-head)hhh

另一方面是这几年搞区块链这一波,出来了很多ZK方面的paper。主要解决的无疑是几个问题:如何减少交互(NIZK)、如何缩短证明大小(SNARK)、如何摆脱Trusted Setup(STARK/SuperSonic)、如何使用更好的假设(LWE NIZK)等等。个人感觉其实ZK反而是简单的部分,没有Trusted Setup的简短证明其实是比ZK还重要的属性?

这些研究方向,每个方向都有自己的一条线,如果觉得感兴趣就可以去追一下某条线。每条上的发展方向无疑是:点兵点将选到一个很牛逼的数学假设->把这个假设好好的定义一下->看看能不能解决一个小问题->看看能不能把大问题compile成无数的小问题然后用它来解决->证明安全->继续优化->和别的假设合并/寻找新的假设->...

在这几条线上,我觉得短期内也许可以做的是,看看最前沿研究到什么地方了,还有什么不太舒服的地方(比如通讯大小、占用内存大小、复杂度什么的)可以去优化一下的,或者可不可以与另一条线整合一下搞点新花样,或者以前的安全证明不太好,可不可以更加详细的证明出一个lower/upper bound之类的。算是非常高级的挤牙膏了。

当然了,我觉得也许还有另外一种打开方式,就是去找应用。

在隐私保护技术这个领域,其实有不少常见的应用技术,比如MPC,PIR,Zero Knowledge Set等等。这些技术背后都有很多具体实施的理论方案(比如MPC就有GC/BGW/GMW这么多实现方法)。

往往一些提出实现方案construction的paper,都只是提出了一个比较简单的,可以被无限扩展的方案。比如说全同态FHE的paper里,就提到了怎么构建NAND门,然后NAND门就可以堆叠起来变成任意的逻辑门之类的。

再比如说PIR技术,提出construction的paper一般说,你可以通过这个协议在一串bits里面privately retrieve一个bit。但是实际的数据库中,可能想要在一个巨大的db里面二分查找一串字符。这个时候就需要把之前的protocol疯狂套娃套起来,比如说先retrieve index table里面的一个index,找到二分查找的起点,然后再去取下一个bit,看下面去哪一个节点等等。这样一来,原本很简单的protocol一下子就变得非常重复。那么这种非常重复的结构,是不是可以简化一下,把所有的setup都放在一起,甚至放在offline,这样就可以获得更加好的amortized time之类的。这一类的paper我也见到不少,主要是把一些已经被提出的construction放到实际应用中再去做进一步的优化,并且可以和别的construction结合。

应用方面的paper,一般会在代码上实现,然后跑一跑看看实际的效率如何,并且再和之前的一些比较一下。最后再分享/开源一波这个代码,做个比较通用的框架,就完美了。

总的来说,我觉得应用方面可能比较容易入手一点,基本上就是看到合适的应用,然后去看最近的新发现(比如aSVC?哈哈哈),然后看看可不可以套到db里面或者某个场景下,做进一步构造和优化。但是坏处可能是原创性相对来说少一点,然后影响力可能不会有理论那么那么大,但是如果能做出一个通用的开源库来还是很牛逼了…毕竟密码学的目的还是要实践应用嘛。

理论方面我觉得还是很有趣的,只要挑选好比较中意的几条线,然后跟着线走一遍,看看还有什么可以improve的,或者找到一点跨界融合。但是感觉很多时候导师的指点和和别的研究团队的交流还是非常重要的,很多idea自己拍脑袋想不出来。我正在纠结要不要读博,因为发现靠上课和自学还是没法进入research的大门…

不知不觉回答写了挺长的,希望对你有所帮助:)

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片