前言
在密码学中,为了证明一个密码方案是安全的,我们会将其安全性归约到一个已知的困难问题上。这是因为在没有任何已知条件下,要证明一个密码方案是安全的,必须要说明所有可能的算法都不能在多项式时间内攻破该方案。而采用归约证明,将一个公认数学问题是困难的作为已知条件,只需要证明一个逆否命题——“如果已知问题是困难,那么密码方案是安全的”,就能够说明该方案是可证明安全的。归约证明为密码方案没有基础性缺陷提供了依据,同时也为选择方案的参数提供了依据。
常见的困难问题有两种:平均情况(average-case)困难问题和最坏情况(worst-case)困难问题。在根据2012年BIU密码学冬令营的格课程[1]学习相关基础知识时,我对平均情况困难问题和最坏情况困难问题产生了困惑,一度难以理清楚其中的复杂逻辑。在与导师简单讨论并研究了相关优质解答后,尝试整理我的理解与感悟。
本文将以大整数NNN分解难题和格上的困难问题为例,谈谈我对这两种困难问题的理解。
平均情况困难问题
我们常见的大整数NNN分解难题就是一个平均情况困难问题,经典的RSA系统就是基于它构造的。类似的,Rabin密码学系统[2]的精髓是一个模平方函数fN(x)=x2mod Nf_N (x)=x^2 \mod NfN(x)=x2modN,它的安全性在于逆向计算fNf_NfN函数的难度与函数实例对应的NNN的分解难度相关,即,实现了逆向计算也就成功分解了NNN。如图1所示,NNN与fNf_NfN函数实例之间是一一对应的,其中橙色部分的NNN是难分解的,它里面每个NNN对应的fNf_NfN函数也是难以被逆向的。也就是说,基于大整数NNN分解难题的函数实例,有一些是困难而有一些不是。

Rabin给出的安全性证明为:在密码学定义上,只要大部分NNN是难以被分解的,那么对应的fNf_NfN函数也是难以被逆向的。在平均情况下,只要我们大概率拿到的NNN是难的,那么相应的fNf_NfN也是难的。比如说,实际中使用RSA系统时,我们会利用素性检测选取强素数,来以较高的概率构造难以被分解NN

本文介绍了密码学中平均情况困难问题和最坏情况困难问题的概念,通过大整数N分解难题和格上的困难问题为例进行阐述。平均情况困难问题如RSA系统的安全性依赖于大部分N难以分解,而最坏情况困难问题则意味着所有实例都是困难的,如格上的最短独立向量问题。在密码方案设计中,平均情况困难问题易于构造,但需要确保随机实例的安全性,而最坏情况困难问题提供了一种在所有情况下都安全的保障。

341

被折叠的 条评论
为什么被折叠?



