详解一次一密

目录

一. 介绍

二. 一次一密方案

三. 正确性分析

四. 证明一次一密方案是完美安全

五. 一次一密的应用

六. 小结


一. 介绍

一次一密,英语写做one time pad。

在1917年,Vernam提出了一个完美安全的加密方案,后世将其称之为一次一密。在当时,完美安全的概念还没有引出,大约25年后,Shannon提出了完美安全的定义,并且证明了一次一密是符合完美安全的(perfect secrecy)。

假定a为长度为l的比特串,如下:

a=a_1\cdots a_l

同理有个相同长度的比特串b,如下:

b=b_1\cdots b_l

两者的异或运算,写做bitwise exclusive,也就是XOR运算,如下:

a\bigoplus b=(a_1\bigoplus b_1)\cdots (a_l\bigoplus b_l)

在一次一密方案中,密钥,消息,密文的长度均相等。并且要求密钥是均匀且随机的比特串,紧跟着对密钥和密文做异或运算即可以得到密文。

二. 一次一密方案

固定一个整数l>0,消息,密钥和密文均为长度l的比特串。也就是消息空间M,密钥空间K和密文空间C,均为:

\lbrace 0,1\rbrace^l

(1)Gen密钥生成算法

密钥生成算法会根据均匀分布,从密钥空间K中选择一个密钥。密钥空间为2^l,所以每个密钥被选择的概率都是相等的,均为:

2^{-l}

(2)Enc加密算法、

给定一个密钥k和一个明文m,格式均满足:

k,m\in\lbrace0,1\rbrace^l

加密算法可计算密文如下:

c=k\bigoplus m

(3)Dec解密算法

给定一个密钥k和密文c,格式均满足:

k,c\in\lbrace0,1\rbrace^l

解密算法可计算得到明文,如下:

m=k\bigoplus c

三. 正确性分析

对于任意的密钥k和消息m,我们都可以得到:

很显然,一次一密的方案是正确的。

四. 证明一次一密方案是完美安全

无论明文是什么,如果都能证明密文是均匀分布的,则可以说明一次一密方案是完美安全的。接下里,我们将利用一种严格的形式来证明完美安全性。

对于任意明文m是可取的,也就是Pr[M=m]>0,我们来看此时密文的分布情况:

第一个等号:方案对加密的定义,要注意此时明文为m是固定的

第二个等号:异或运算的性质;

第三个等号:密钥K是均匀且随机分布的l比特串,且跟M无关,所以可计算其概率。

接着我们来计算密文为c的概率:

第一个等号:考虑所有明文的情况;

第二个等号:刚才的结论;

第三个等号:求和概率

接着利用Bayes定理,也就是条件概率,可计算为:

第一个等号:条件概率的性质

第二个等号:带入以上计算结果

第三个等号:化简

根据以上可得已知密文对明文没有任何的影响,所以该方案为完美安全的。

五. 一次一密的应用

在20世纪中期,一次一密方案被应用于很多国家情报机构(national intelligence agency),主要用来加密对时间敏感的数据。比如,白宫(white house)和克里姆林宫(Kremlin)在冷战时期的通信就通过“红电话”。US和USSR的政府机构可以借助可信的通讯员来交换很长的密钥,把随机的字母写在纸张上。

一次一密方案的安全性非常好,但是在网络安全中如今并不常见,其还是有很多的限制。比如,方案中我们要求密钥的长度和明文的长度一样,在加密很长的消息时,则不太实用。而且,往往合法的通信双方是无法提取预测具体消息的长度。

一次一密方案要求密钥k只能使用一次。如果使用同一个密钥来加密多个消息,会出现什么情况?比如我们假设消息m和m'都是使用k来进行加密的,此时我不知道具体的k是什么,但首先我们知道密文格式为:

由此可计算:

也就是m和m'的异或结果信息会被泄露,换句话说就是两个消息的区别则被获取。如果对多个消息的加密使用同一个密钥的话,那么该方案肯定不符合完美安全的要求,只要其相同消息足够多,那么借助频率攻击法,很有可能解密出明文。

历史上,VENONA项目就分析过此类的安全性。曾经,前苏联(Soviet Union)在几十年内就重复使用过密钥,美国(US)和英国(UK)就解密出明文。

六. 小结

在现代密码学中,保密原理指的是,系统保密性完全依赖于密钥的安全性,不依赖于加密体制或算法。

然而现有的保密通信体系不存在无条件安全的方案来分发密钥,这个过程是很难实现的。现代密码学常用对称密码体制和公钥密码体制:

  • 对称密钥体制:也被称之为私钥密码,比如使用AES(高等数据加密标准)等进行密钥扩张和分配
  • 非对称密钥体制:也被称之为公钥密码,比如使用基于大整数因子分解问题的RSA体制和Rabin体制、基于有限域上或者基于椭圆曲线上的离散对数问题的Diffie-Hellman公钥体制和ElGamal体制。然而这些体制均依赖于数学计算复杂性,并不是无条件安全的,而且其依赖的数学难问题并不是不可解决的。

常规体制不存在多项式算法复杂性的假设并未得到证明。所以我们常说密码学使用的是一种假设的安全,也就是目前不存在算法可以解决某些困难问题,至于以后有没有可能被解决那就不得而知了。

目前,长达1024比特长度的RSA体制已经被破解。

基于Hash函数的世界通行密码标准系列算法MD5等被王小云教授等人破解。

Shor的大数分解量子算法可以以低的复杂性破解RSA体制(例如,1分钟就可以破解1024比特RSA)

使用穷举破译法,量子计算机能够进行把 复杂性降低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345209.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Element中的el-input-number+SpringBoot+mysql

1、编写模板 <el-form ref"form" label-width"100px"><el-form-item label"商品id&#xff1a;"><el-input v-model"id" disabled></el-input></el-form-item><el-form-item label"商品名称&a…

选择国产压测工具应注意什么?

随着互联网和信息技术的飞速发展&#xff0c;压力测试成为了确保软件系统稳定性和性能的不可或缺的环节。在压测工具的选择上&#xff0c;近年来国产压测工具逐渐崭露头角&#xff0c;但在使用时仍需谨慎。本文将探讨在选择国产压测工具时需要注意的关键因素。 功能完备性&…

离线编译 onnxruntime-with-tensortRT

记录为centos7的4090开发机离线编译onnxruntime的过程&#xff0c;因为在离线的环境&#xff0c;所以踩了很多坑。 https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境&#xff0c;所以很…

中国大模型迎来“95后” 百度奖学金发掘百位“未来AI技术领袖”

在人工智能掀起的科技革命和产业变革浪潮下&#xff0c;大模型成为最受关注的研究领域。1月22日&#xff0c;第十一届百度奖学金颁奖典礼在北京举行&#xff0c;来自全球顶尖高校及科研机构的10位“未来AI技术领袖”脱颖而出&#xff0c;他们平均年龄仅27岁&#xff0c;其中8人…

关于Redis的最常见的十道面试题-分布式锁和布隆过滤器

面试题一&#xff1a;有序集合在日常工作中的使用场景有哪些&#xff1f; 有序集合在工作中的应用场景有很多&#xff0c;例如“ 排行榜&#xff1a;可以将用户的得分作为有序集合的分支&#xff0c;用户的ID作为成员&#xff0c;通过有序集合的排名功能可以得到用户的排名信…

OpenCV第 2 课 OpenCV 环境搭建

文章目录 第 2 课 OpenCV 环境搭建1.安装 Numpy2.从 Ubuntu 存储库安装 OpenCV3.验证 OpenCV 安装 第 2 课 OpenCV 环境搭建 1.安装 Numpy 每一张图像都有很多个像素点&#xff0c;这也导致了程序中会涉及大量的数组处理。Numpy 是一个 Python 的拓展库&#xff0c;它对多维数…

MySQL怎么根据当前时间获取连续十二个月统计数据

需求 在某些业务场景中&#xff0c;需要后台获取连续十二个月的统计数据&#xff0c;如下图&#xff1a; 解决方式 1、创建一张临时表&#xff0c;在表中插入序号数据 该表的最大数量决定统计返回的最大条数 CREATE TABLE sys_redundancy (id bigint(22) NOT NULL AUTO_I…

YOLOv7调用摄像头检测报错解决

yolov7detect.py文件调用本地摄像头&#xff0c;把source参数设为0 parser.add_argument(--source, typestr, default0, helpsource) # file/folder, 0 for webcam 报错&#xff1a;cv2.error: OpenCV(3.4.2) 一堆地址:The function is not implemented. Rebuild the library…

【数据分析】matplotlib、numpy、pandas速通

教程链接&#xff1a;【python教程】数据分析——numpy、pandas、matplotlib 资料&#xff1a;https://github.com/TheisTrue/DataAnalysis 1 matplotlib 官网链接&#xff1a;可查询各种图的使用及代码 对比常用统计图 1.1 折线图 &#xff08;1&#xff09;引入 from …

时间序列大模型:TimeGPT

论文&#xff1a;https://arxiv.org/pdf/2310.03589.pdf TimeGPT&#xff0c;这是第一个用于时间序列的基础模型&#xff0c;能够为训练期间未见过的多样化数据集生成准确的预测。 大规模时间序列模型通过利用当代深度学习进步的能力&#xff0c;使精确预测和减少不确定性成为…

力扣hot100 排序链表 归并排序 递归

Problem: 148. 排序链表 &#x1f469;‍&#x1f3eb; 参考 &#x1f496; 归并排序&#xff08;递归&#xff09; ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) /*** Definition for singly-linked list.* public class ListNode {*…

【Go学习】Ginkgo测试框架学习实践 + 问题记录 + 怎么解决(0)

1、ginkgo测试框架介绍&#xff1a;https://onsi.github.io/ginkgo/ 2、重点是学习实践 问题记录 怎么解决 3、送福利&#xff1a;国内好用的ChatGpt有很多&#xff0c;比如&#xff1a;天工、文心一言、讯飞星火、通义万相等 1. 安装 xxxmacdeMacBook-Pro-3  /Volumes/mac…

Linux驱动程序

驱动程序框架: dev_t dev_num; struct file_operations fops {.open //define function.read //define function.write //define function };struct cdev dev;demo_init() { MKDEV(); cdev_init(); cdev_add(); register_chrdev_region(); //class_create(); //device…

opendds之GUID理解

在opendds的调试日志中大量充斥各种entity的guid&#xff0c;如下所示&#xff1a; (838182|838209) DataLink::release_reservations() - releasing association local: 0103bab5.84e0eba6.ca269681.01000004(b02bd8da) <--> with remote 0103bab5.84e0eba6.a56d6aff.01…

自定义错误页面在Spring Boot中的实现

引言 在SpringBoot中&#xff0c;常用的异常处理有两种&#xff1a;一种是 BasicErrorController&#xff0c;另一种是 ControllerAdvice。BasicErrorController 用于处理非Controller抛出的异常&#xff0c;而ControllerAdvice 用于处理Controller抛出的异常&#xff0c;对于…

2024 年 7 个 Web 前端开发趋势

希腊哲学家赫拉克利特认为&#xff0c;变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

动态IP与静态IP有何区别?怎么使用选择?

动态代理IP和静态代理IP在跨境业务中具有非常广泛的实用性&#xff0c;但仍然有非常多小白选手并不清楚什么场景适合用哪一类IP&#xff0c;哪一中代理IP类型更适合你&#xff1f;其实他们各有其优点和缺点&#xff0c;为了使您的网络营销、社媒推广、跨境电商运营、网络抓取尽…

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…

跟着我学Python进阶篇:04. 错误和异常

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 跟着我学Python基础篇&#…