曲曲弯弯仍向前
来源: 刘忆宁/
桂林电子科技大学计算机与信息安全学院
1408
2
1
2021-02-26

2020年的大半年都是在焦虑中度过的,直到年底在几件事件尘埃落定后才和缓下来。从19年下半年开始不断地梳理研究历程,千言万语概括为一句话“事非经过不知难”,尤其是在学术氛围相对一般的学校,回想过去都不知道怎么坚持下来的。记得在13年左右陆续开始出文章时,也有人向我打听文章的购买渠道,我真不知道哪里有卖的,即使有卖的,我哪里有钱去买呢。

这么多年来单枪匹马地干,不管是研究还是杂事,全是一个人咬牙支撑过来的。直到近期有领导问我怎么不组织一个团队,我哪里不愿意组织。然而,对于无职无权的普通老师,又如何组织得起团队,又有哪个老师愿意加入呢?还是继续孤独前行吧。再说了,最艰难无助、最迷茫彷徨的时候,已经过去了。回顾个人研究经历中的雪山草地,不忘研究初心,走好下一步,且走且珍惜。

这十年研究的起点,来自于2009年的一起网络舆情事件:六连号事件,2009年6月12日湖北省武汉市经济适用房公开摇号,有网友发现在摇中的 6个号码的购房资格证明编号竟是相连的号码。事出反常必有妖,果然发现被人为控制了。

C:\Users\ynliu\Documents\Tencent Files\523584362\FileRecv\MobileFile\Image\PC_]GEI@ZAL45$MR1`@6((Q.png

当时,我正在给学生上密码学课,在课堂上闲扯了密码学与“六连号“的关系,正常的结果应该是公平的。从技术上来说,公平性应该是不可预测性,和密码学上的随机性是差不多的。丢骰子之类的当然是产生随机数的最好办法,但是大多数人没办法现场观看,只能通过录像观看,录像当然是容易被人为控制的。最好的方式是所有参与者都能对最终的结果发生影响,并且能验证自己的影响发挥了作用,且相信其他人的联合不具有更多的优势,从而相信结果是公平公正的。

下课后,有两个学生找我,想把这个思路搞成本科生创新项目。为了把所有参与者融入到一个结果,我们想到了用多项式,比如一百个参与者,每人出一对数,100个人就是100对数,把它们当成100个的点,就会有一条相应的曲线或多项式穿过这些点。这个函数对所有人来说,当然是不可预测的,而且从信息论的角度来说,99个人联合起来所发挥的作用和另外1个人的作用,也是一样的。接下来对这个多项式的参数做处理,当然就可以得到一个对所有人来说都是公平的结果。而且,任何一个人可以验证多项式是否通过自己选的点,从而判断这个结果是否融入了自己的影响。接下来就是用程序验证想法,当设定的点数不多时程序运行情况是不错的。随着数据加大,比如20对、30对、…,很快就发现不行了。问题出在哪里?因为由多个点构造一个函数,实质上是一个近似的多项式。当点数少,多项式的次数不高,验证时把数据代入多项式,误差也不会太大。当点数越来越多时,多项式数次越来越高,会把一点点的误差放的很大,大到了根本无法控制的地步。因此,验证环节就没办法做了。

怎么办?研究过程中最怕是没有坎儿,路太顺,就不会有太多的思考。既然碰到了个坎儿,就想办法迈过去。分析问题是怎么产生的,当然是误差造成的,得想办法把误差消除掉。两个学生还去找了给他们上数值分析的老师,老师建议把拉格朗日插值改为牛顿插值还是埃尔米特插值之类的,我想,这样还是不行啊,顶多是提高一下误差控制的上限。我们希望没有误差,后来想到把所有的运算从实数域上转移到有限域上,所有的数据运算是封闭的,当然就没有误差了。再说了,我们的目标并不是要构造什么样子的曲线,我们的目标仅仅是得到一个各方平等参与的结果。按照这个思路,所碰到的坎儿很快得以解决。

过了一段时间才发现自己知识储备不足,我们解决问题的思路实质上和Shamir的文章“How to share a secret“是一样的(这篇文章的引用数有15000多次),换个角度也可以说,我在没有看Shamir文章的前提下,竟然和他老人家想到了同样的方法。在这里简单描述一下Shamir的秘密分享:比如有个老中医快死了,想把家里的祖传秘方传给儿子,假设老中医有10个儿子,把秘方给长子,长子如果败家把秘方给卖了怎么办?给10个儿子,秘书泄露的可能性更大。怎么办?可以设一个阈值(门坎儿),比如5,把秘方处理一下后,分给10个儿子每人一个shares,当有5个或以上儿子联合起来,可以把秘方恢复出来,少于5个不能恢复出任何信息。具体实现起来也简单,老掌柜生成一个4次多项式(4次多项式有5个系数,其中的常数项设定为秘方),然后用这个4次多项式任意生成10个点,分别给了10个儿子。当有5个儿子合作时,有5个点可以列5个等式构成方程组,正好可以把多项式的5个系数求解出来,其中自然包括常数项(秘方);少于5个点时,是不可能解出5元方程组的。

接下来就拿着这个工具往前走走,看看能不能对别人的工作做些修修补补的工作。也是在2009年开始,自己招收研究生,每天上课之余,坚持读文章和学生讨论。没过多久碰到了两个研究内容,都是用有限域上插值多项式为工具做的,这两个内容也成为我们过去十年研究的起点。

第一个是2010年发表在IEEE Transactions on Computers的一篇文章,设计了群组通信中的密钥分发协议。密钥管理中心选了一个密钥,怎么在公开信道上把它分发出去,让授权的用户能拿到,让非授权的用户拿不到。既然是公开信道上发送,所有人都能收到发送的信息,因此要在分发前做个处理,让授权者收到后做运算可以恢复出来,非授权者收到后恢复不出来。而授权者和非授权者的区别是什么呢?前者与密钥管理中心有共享的秘密数据,而后者没有。因此密钥管理中心构造一个多项式,把所有授权用户和要分发的密钥都揉进去,然后在这个多项式上再另外取几个点作为公开信息发布(发布的数量比恢复多项式要少一个)。非授权者仅凭接收到的点数,无法恢复,而授权者比非授权者多一个信息,当然可以恢复。

这个设计当然是巧妙并且很高效的,但是但是但是(重要的话说三遍),原文献在由密钥中心构造多项式的时候,有一点点疏漏导致了比较严重的后果。具体来说,上面的方案确实能阻止非授权方得到密钥,但群组内部成员却有可能获得群组其他成员与管理中心之间共享的秘密数据。比如说,我和张三在同一个QQ群里,我想得到张三与腾讯之间共享的秘密数据(登录口令),我只需要和张三同在t个成员的群里t+1次就可以攻击成功。具体点,就是(我、张三、李四)组了个t=3的群组1次,如果再有三次,(我、张三、李五),(我、张三、李六),(我、张三、李四)时,我就可以通过解方程来得到张三的登录口令。我们的这一发现于2012年发表在IEEE Transactions on Computers,如果不是我们09年的积累,想要发现并解决这一漏洞的,估计是有难度的。

说实在的,十年前能发这样的期刊还是不多的,以为能评职称了。后来才发现自己想多了,科研成果和职称没什么关系。国情因素使然,在一些山高皇帝远的地方尤为突出。没有靠山、没有关系网,还能怎么办?还是收了情绪,老老实实干活吧。

C:\Users\ynliu\AppData\Roaming\Tencent\Users\523584362\TIM\WinTemp\RichOle\@`YJWGHOW(5@P{A0$(G52CJ.png

我们第二个研究内容是安全电子投票,与群组通信密钥管理差不多同时开始的。首先是看了《计算机研究与发展》的一篇文章,安全多方求和为基础的电子投票,我们在讨论后发现其存在泄露投票内容的风险,后来硕士生们通过加噪的方式给予了解决。从这篇文章开始,我注意到e-voting确实是个受关注的密码学问题,在Rivest的主页上有一半以上的publication或talk是这个主题。大概在2011年上半年,在Springer上看到了文章 “Bingo Voting: Secure and Coercion-Free Voting Using a Trusted Random Number Generator”,使用可信任的随机数发生器设计了能抵抗胁迫攻击的电子投票协议,第一感觉是看看可信任随机数发生器在其中发挥什么样的作用,能不能把它去掉,如果能去掉,当然是我们的一个贡献。

Bingo Voting的基本步骤包括:在投票预备阶段,给每个候选人生成一个假票箱(里面的假票dummy vote实质上是封装起来的随机数);当某个候选人被选中时,在投票间里生成一个新的随机数分配给这个候选人,未被选中的候选人则从自己的假票箱里取一个随机数。之后生成收据(每位候选人对应一个随机数),投票人可以检查新生成的随机数在收据上与自己选的候选人是否对应,如果是,相信自己的投票意图被正确的记录;在计票阶段,对假票箱里封装起来的随机数做两件事:一是打开没有用过的假票,二是用零知识证明的方式,证明没有打开的假票确实被用在了某一个选票上,但是不能让人知道用在了哪张选票上。一个候选人被选中的次数越多,对应的没有用过的假票数量也越多,用这种方式来计票。

经过分析,我们首先发现Bingo voting的隐患在于:如果投票者使用偷拍的手段来证明哪个随机数是现场新生成的,则可以向他人证明自己的投票内容。原因在于,投票者在投票间可以看到Bingo生成的随机数,其他人无法得到这一信息,也就是说投票者相对于其他人可得到多余的信息。原来的方案是用物理的方法或人工检测的手段,阻止外人获得Bingo生成的随机数信息,如果投票者不诚实,自然有动机把这个额外的信息泄露出去。

我们的思路是改进现场生成随机数的方式,使投票者并不比其他人能看到更多的信息量。具体来说,由未选中的候选人以及dummy vote来生成一个多项式,进而代入被选中的候选人,生成新鲜的随机数。假设共有 n 个候选人,这个多项式实际上只是 n-1 维的,任意 n-1 个候选人对应的点是平等(不可区分的)、并可以生成另外的一个点。因投票者自己知道哪个是被选中的,哪些是未被选中的,哪些是dummy votes,并通过检验dummy votes与新随机数的对应关系来判定选票是否反映他的意图;同时,新随机数与dummy votes具有不可区分性,使得投票者无法向其他人证明哪个是新生成的。之后,我大概用了一个月的时间写出来,正好看到Inscrypt征稿就投了过去,也没想着要不要投个SCI期刊之类的。后来才知道,Inscrypt的录用率并不高,比不少灌水的SCI的难度要大的多,我们还算幸运,最终被Inscrypt2011录用。因为这个会议论文集只是个EI收录,自己也没太当回事。直到17年暑假收到google学术推送的邮件,发现这篇文章竟然被Rivest注意到了,https://people.csail.mit.edu/rivest/pubs/RV16.pdf,对我来说无疑是值得高兴的事情,绝对比年度评优更刺激(当然年度评优这种好事基本上轮不到我)。

时间就到了2013年8月,以《安全电子投票协议设计与分析》为题目申报的国家自然科学基金地区项目获批,我是发自肺腑的感谢NSFC的资助,没大佬罩的个体户从身边拿不到资源,只能指望国家。在NSFC的资助下,继续对群组通信、电子投票两个内容开展研究,基本上没有自己的想法,就是不停地找能看懂的文章看,哪些地方需要修修补补就搞一下,下不了手的就放弃。我认为这对于小团队组建初期是合适的,得有文章持续发表才能活命。

在2013年里对Inscrypt的论文进行扩展后找期刊投稿,屡试不中直到2016年才得以发表。文中定义的电子投票攻击模式被美国匹兹堡大学和美国国防信息系统局Defense Information Systems Agency(DISA)非洲方向的司令官)联合发表的文章“Towards modernizing the future of American voting”(10.1109/CIC.2018.00028)给予认可:Because we are using a variety of off-the-shelf technologies, our voting machines across different states, districts, and local counties subject the electronic voting system to possible malware injections. (由于来自世界各地的现成的技术被用于电子投票,使得遍布全国和其他国家的电子投票系统容易受到恶意软件注入的风险,这属于刘的文章中所说的潜信道攻击的形式)。

在2013年里同时发现IEEE Systems Journal的文章“An efficient Merkle tree-based authentication scheme for smart grid,” 存在改进的空间,我大概花了半年的时间,把原文中的树形结构,用多项式代替,从而降低存储消耗。这个文章为主要基础,支撑广西电网信息中心拿到了科技进步二等奖。

D:\科研项目申报\广西电网-博联\广西科学技术奖二等-(可信计算)刘忆宁.jpg

在2013年迎来了一位研究生新同学刘高,从五粮液家乡的宜宾学院考过来,他对我们后续的研究工作起到了非常重要的milestone的作用。虽然前期没有基础,但是挡不住好学啊,很快就独立找到了一个新方向,用差分隐私做数据聚合。在学校期间一共搞了五六篇文章,其中SCI论文就有三篇。然而,刘高同学在学院拿不到奖学金,竟然在2015年底拿到了中科院信息安全国家重点实验室的研究生奖学金。听他说,给他颁奖的黄民强院士很纳闷,没想到桂电的学生还能拿到这个奖。

         

虽然刘高同学在2016年毕业后去西安电子科大读博士,但是数据聚合的研究被我们长期坚持了下来,并且于2016年和2020年分别拿到了国家自然科学基金地区项目“大数据时代具有隐私保护性的数据聚合协议研究( 61662016)”和面上项目“面向数据发布的隐私保护协议研究(62072133)”。

再回到2015年五月,当时的研究方法仍是找能看懂的文章看,发现IET Information Security上的‘Novel and practical scheme based on secret sharing for laptop data protection’, 不仅能看懂,而且好像可以改进一下。我们首先指出该方案存在被单点攻击的可能,主要是因为服务器为中心会造成严重的通信瓶颈和信任瓶颈,攻击者只用最需要向服务器发送大量的垃圾通信,使其无法正常通信,就足以瘫痪整个系统。为解决这一安全漏洞,我们把以服务器为中心的结构改为以用户为中心(User-centered design, UCD),然后又加了一些其他的花里胡哨的东西。15年9月投出去,17年正式发表,出人意料的是竟然在2019年获得了IET的年度最佳论文奖(Premium Awards)。这个评奖和国内的不一样,不需要个人申请,也不知道具体的流程和规则,2019年度的就是从2017-2018两年发表的100多篇文章里面挑一篇。

差不多在同一个时间,我们继续用k-匿名和秘密分享做e-voting的相关改进,也是颇多波折。不过,最终论文还是发出来了,也进了高被引,国外同行的评价也还可以。苏黎世大学的Hanno Scholtz(现为德国康斯坦茨大学教授和瑞士弗里堡大学教授)的肯定,他在Structure and math of Civil democracy中,评价我们的工作:ongoing efforts to lay theoretical foundations for trustworthy e-voting systems in computer science。 (为计算机科学领域中可信任的电子投票系统研究奠定理论基础方面,做出了持续性的贡献)

再接下来,我们还尝试引用区块链这一时髦的工具对电子投票做改进,An improved FOO voting scheme using Block-chain. International Journal of Information Security, vo.19, 303–310 (2020).

另外,数据聚合方面的研究也在持续进行,事实上,电子投票可以看成是数据聚合的特例,数据聚合可以看成是电子投票的一般化。数据聚合的目的是为了保障数据发布时的隐私。我们在投稿时,也多次遇到审稿人把数据安全与数据隐私混淆的情况,有审稿人说,用加解密不就行了吗?不行的。比如:社会调查机构想要统计学生毕业五年后的平均薪资,当然可以把学生们叫回来,当面填写,但是这样成本太高,那就在网上组建一个群,群外的不能看到群内的信息,这当然可以通过加解密来实现,但是群内是不是信息就完全可以共享呢?当然不是的。也就是说,所有的学生要在不让人知道自己薪资的情况下,让辅导员能计算出年级的平均薪资。

当然,有的数据处理后,把平均值发布出去是有价值的,有的数据的平均值或加噪后就失去了意义,这个时候就希望能保持数据的原始值发布,同时,又不泄露数据的隐私。我们这几年发表在IEEE Transaction/Journal的文章大多与此有关,包括IEEE TII两篇、IEEE TETC 1篇、IEEE Systems Journal, IEEE Sensors Journal, JISA, Computer Networks各1篇,其中也有多篇入选ESI高被引论文。

后来我们发现,数据聚合的本质上是把同一个时间点下的一堆数据源生成的数据集的隐私保护问题;如果换个角度,同一个数据源在不同的时间点下形成的数据集,如何平衡可用性与隐私性呢?首先找个场景,我们就想到了轨迹隐私,这个时候已经到了2017年底。我们先在中文期刊网上查到国内有几位学者在做这方面的研究,包括信工所的李凤华教授、西电的李晖、李兴华教授等,当时安排了一位14级的本科生对照着他们发在通信学报上的文章做毕业设计,同时让一位17级的硕士生找外文文献找切入点。客观地说,我觉的这位本科生的毕业设计做的还是很不错的,应该是超过本校很多硕士的工作量的,她把通信学报上的轨迹隐私方案自己做了仿真实验,并给了一些改进。然而,在毕业答辩时,因为大多数同学做的都是老师们熟悉的管理系统,对这个同学的工作量,评委老师们认为无法判断她的工作量,而没有让通过。 而17级的硕士潘同学的研究进展,也算比较顺利。最初是想着别人做假轨迹生成,我们也跟着做,18年上半年一直这么做,做出来的效果并不比别人好。后来想换个角度,生成假轨迹的目的是为了和真轨迹混在一起无从分辨,以前国内外的算法生成的假轨迹,能不能被发现呢?大概分析了一下,原来的假轨迹生成基本上是围绕着真实轨迹做一些偏转或伸缩之类的,而人类的轨迹应该是有一些特定的特征在里面的,怎么样把人类的轨迹特征提炼出来,然后看一段轨迹里面是否有不象人类特征的片断在里面,如果达到一定界限,就判定这个是假的。按照这个思路,我们用CNN和LSTM做了两个检测器,实验效果还可以,真的能把好多假轨迹检测出来。当然,这种攻击型的研究,当然是不太好的,我马上意识到这个研究是很得罪人的,所以要马上转成假轨迹生成,也就是目前我们正在做的做GAN来做能抵抗机器学习攻击的假轨迹生成。

回首过去十年,一路艰辛走到现在。我觉的,不管论文是不是有奖励,根本就是无所谓的事情。我曾经和人聊过,好比你下棋下的好,书法写的好,打球打的好,代表学校出去拿了奖;学校给点奖励当然好,学校不给也无所谓的。你在棋界、书法界得到认可,就足够了。论文也是一样的道理。更多时候,需要把研究当作与下棋打球一样的兴趣,当成乐子,才能当成生活的一部分。在过去也曾遇到过有人要co-author甚至通讯作者的事情,即使得到一个署名,顶多也就是聘期考核时用来交差而已,能对自己的长期研究有什么帮助呢?我觉的是毫无帮助,只会助长自己的惰性。

后面的路还长,且行且珍惜。

 


登录用户可以查看和发表评论, 请前往  登录 或  注册
SCHOLAT.com 学者网
免责声明 | 关于我们 | 联系我们
联系我们: