首页 > 其他分享 >密码学之可证明安全初探

密码学之可证明安全初探

时间:2023-08-18 11:26:06浏览次数:42  
标签:敌手 证明 算法 初探 mathcal 密码学 安全性

本文将简要介绍现代密码学中的一项关键技术: 安全性证明. 任何一个现代密码算法或协议都需要先经过完整的安全性证明, 才能去讨论其理论和应用价值. 如果一个密码方案无法做到可证明安全, 那么它声称的各种能力都将只是空中楼阁.

然而, 刚开始阅读现代密码学论文的时候, 很容易被其中占据了大量篇幅的安全性证明章节给吓住. 因此本文将简单地对这一主题进行介绍, 在保持简明的同时尽可能体现其核心逻辑. 在阅读本文前, 具备以下背景知识可极大提升阅读体验:

  • 现代密码学是一门什么样的学科 ?
  • 如何理解 \(P\) 问题, \(NP\) 问题 ?
  • 现代密码学中的安全模型一般有哪些 ?

安全性"证明"?

与从小到大学习的各种数学证明类似, 在密码学的安全性证明中, 也需要明确证明的命题, 以及命题中的假设和待证明结论. 然而, 证明一个数学定律这件事是明确的, 比如我们都学习过的各种平面几何定理的证明, 就是要寻求不同线段, 角度, 图形之间的位置或数量规律. 可是我们该怎么用数学的语言 "证明" 一个方案的安全性呢? 也就是说, 一个方案安全与否, 如何用 形式化的数学语言 来证明呢 ?

在现代密码学发展早期, 人们"证明"方案的安全性就是去寻找是否存在有效的攻击, 如果暂时找不到, 就认为这个方案是安全的. 显然, 在这种方式下, 密码学很难被认为是一门严肃的学科. 直到上世纪80年代-90年代, Goldwasser与Bellare才先后提出了密码学的可证明安全理论模型, 这也才让安全性证明具有了与一般数学证明相同的形式和框架. 那在安全性证明中, 假设、待证明结论以及用到的证明技术分别又是什么或代表什么意义呢 ?

安全假设

在理论计算机领域, 我们可以用P 问题 , NP 问题NP-Hard 问题来描述所处理问题的求解"难度". 以密码学中的单向函数 (One-Way Function) 为例, 有如下观察来帮助大家理解密码学与 \(P\) vs. \(NP\)之间的联系:

  • 单向函数的正向计算就是一个P 问题, 即可以在多项式时间内 (快速) 求解;
  • 单向函数逆的求解好像是一个 NP 问题, 即直接求逆似乎是比较复杂的, 但可以在多项式时间内 (快速) 验证;

了解密码学的读者可能知道, 单向函数是几乎所有密码方案和理论的基础. 因此在密码学中, 对于那些具有多项式资源的敌手, 安全假设往往是从那些 可能是 NP 或 NP-Complete 的问题里来构造. 因为这些问题有计算复杂性理论作为支撑, 且能依赖 \(P\) vs. \(NP\) 这一数学与计算机界都有研究共识的基础假设.

标签:敌手,证明,算法,初探,mathcal,密码学,安全性
From: https://www.cnblogs.com/max1z/p/17637151.html

相关文章

  • Python爬虫初探
    title:Python爬虫初探date:2023-08-0116:16:51categories:CTF-Web入门description:爬取吉大贴吧前十页帖子标题终于到了基础知识的最后一节,python写爬虫程序。Python写简单爬虫主要是两个模块,requests和re,下面分别介绍一下这两个模块。requests模块初探请求模块,用来......
  • 关于 n+1 个点可以唯一确定一个 n 次函数的证明
    设原函数\(f(x)=\sum\limits_{i=0}^{n}{a_ix^i}\)。定义一个范德蒙矩阵\(V\)为:\[V=\begin{bmatrix}1&x_0&x_0^2&\cdots&x_0^n\\1&x_1&x_1^2&\cdots&x_1^n\\1&x_2&x_2^2&\cdots&x_2^n......
  • 主定理(但是没有证明)
    没有证明绝对不是因为我不会,证明可看:重谈主定理(master定理)及其证明这篇文章主要是写给自己看的,写的不好。\[\text{如果有}T(n)=aT(\lceil\frac{n}{b}\rceil)+O(n^d)\]\[\text{其中}n\text{问题规模,}a\text{为递推子问题数量,}\frac{n}{b}\text{为每个子问题的规模,}f(n)\text{......
  • 转载:错位排列递推公式证明
    转载自:【组合数学】错排问题(递推公式|通项公式|推导过程)★韩曙亮————————————————版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/shulianghan/article/deta......
  • c++的线程初探-2
    (目录)一、条件变量条件变量是一种线程同步机制。当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。C++11的条件变量提供了两个类:condition_variable:只支持与普通mutex搭配,效率更高。condition_variable_any:是一种通用的条件变量,可以与任意mutex搭配(包......
  • jquery mobile 初探
    现在已经进入了移动web时代。所以现在的mobile的js框架也开始流行。浏览器有一个好处:不用区分安卓还是iOS,也不用下载app。随着框架和控件的日益增多,应用将更加丰富。比较著名的如:jquerymobile,Moobile(基于mooltools框架)TheMProject,senchatouch(继承ExtJS4的应用程序MVC架构),Ti......
  • Knockout.js初探
    Knockout是一个轻量级的js的UI类库,通过应用MVVM模式(Model-View-ViewModel,MVP是用在某个特定页面上,WPF技术出现,使得MVP晋级成MVVM。模式也是依次进化而形成MVC—>MVP—>MVVM。WPF就是WindowsVista的用户界面框架,属于NETFramework3.0的一部分。)使JavaScript前端UI简单化。Knockout......
  • 密码学
    什么是密码学?答:密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学。总称密码学。 最通用的计算机密码算法有哪些?1、DES(数据加密标准)是最通用的计算机加密算法。DES是......
  • .net中如何证明List<int>是线程非安全的
      我们可以通过以下代码来验证List<int>为何是线程非安全的,执行以下代码,然后查看输出结果。  staticvoidMain(){vartoCount=100;#regionlist线程非安全varlist=newList<int>();//并行添加元素Parallel......
  • 3-硬件以及软件初探
    目录一.开发板简介二.软件Keil简介一.开发板简介1.最小系统电路(内核,存储器,时钟,复位,电源管理).广泛意义上应该是:单片机,晶振电路,复位电路.2.芯片启动方式二.软件Keil简介1.软件安装见链接2.工程结构......