详解一次一密

Python实现一次一密:从理论到代码,揭秘无条件安全的密码学圣杯 序列密码是密码学中一种重要的加密方式,它通过将明文与密钥流进行逐位运算来实现数据保护。其核心原理在于利用异或运算的自反性和比特级操作特性,确保加密过程可逆且不引入额外信息。这种技术在现代信息安全领域具有重要价值,广泛应用于需要高速加密的场景,如网络通信和数据存储。在实际应用中,序列密码通过伪随机数生成器产生密钥流,平衡了安全性与效率。本文以一次一密(OTP)这一理想模型为例,深入探讨了其无条件安全的理论基础,并通过Python代码演示了如何实现文件流式加密与解密,同时分析了密钥管理、随机性质量等工程挑战,帮 阅读详情
AI摘要

本文介绍了Vernam的一次一密加密方案,强调其在1917年的提出以及后来的完美安全证明。文章详细解释了加密和解密过程,并讨论了该方案在实际应用中的局限性和现代密码学中的替代方法,如对称与公钥密码体制。

目录

一. 介绍

二. 一次一密方案

三. 正确性分析

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

五. 一次一密的应用

六. 小结


一. 介绍

一次一密,英语写做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)

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

用python写一个一次一密 一次一密(One-time pad)是一种加密方法,其中使用一个随机的、只能使用一次的密钥与明文进行按位异或操作,以生成密文。这种加密方法是绝对安全的,前提是密钥必须具有真正的随机性且只能使用一次。请注意,一次一密中密钥和明文的长度必须相同。在示例中,随机生成了一个密钥,它与明文进行异或操作生成密文,然后再使用密钥对密文进行解密操作。请谨记,在实践中,一次一密加密方法很少使用,因为需要生成和保管相同长度的真正随机的密钥非常困难。 阅读详情

相关推荐

[AFCTF2018]你听过一次一密么?

[AFCTF2018]你听过一次一密么? 附件: Problem.txt 25030206463d3d393131555f7f1d061d4052111a19544e2e5d 0f020606150f203f307f5c0a7f24070747130e16545000035d 1203075429152a7020365c167f390f1013170b1006481e1314 0f4610170e1e2235787f7853372c0f065752111b15454e0e09 081543000e1e6

2er0!=O的博客 3103

密码学常见基本概念-序列密码,一次一密

提到序列密码,不得不先从一次一密这个概念说起。     一次一密(one-timepad)指在流密码当中使用与消息长度等长的随机密钥,密钥本身只使用一次。就字面来说,一次一密就是一个完全随机的密钥只使用一次,用这个密钥对明文进行加密后销毁,然后下次加密使用下一个完全随机的密钥。也就是说只要窃听者得不到你当次使用的密钥,就不可能获得你的真实数据。随机密钥序列异或一非随机的明文消息产生一完全随机的密文

三千幻想乡 1万+

一次一密密码简介

一次一密密码(one-time pad)最早是由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的。原理简单,使用便捷,其安全原理是基于信息传递,双方的密钥是随机变化的,每次通讯双方传递的明文都使用同一条临时随机密钥和对称算法进行加密后方可在线路上传递。因为密钥一次一变,且无法猜测,这就保证了线路传递数据的绝对安全。即使拥有再大的破解计算能力,在没有密钥的前提下对线路截取的密文也是无能为力的。 这套方案在当时的背景下,还是比较完美的解决

我不是码农的博客~~~ 2543

一次一密,DES

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 加密前言一、一次一密(One-time password)二、分组密码(Block cipher)1.DESDES加密过程:DES解密总结 前言 个人学习整理笔记,希望能对后来者有所帮助。 提示:以下是本篇文章正文内容,下面案例可供参考 一、一次一密(One-time password) 一个序列密码称为一次一密必须满足以下条件: 通过真随机数生成器得到密钥序列s0,s1,s2,… 只有合法的通信方才知道密钥序列; 每个密钥序列位si

..L.. 4124

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

保姆级教程:用NovAtel Inertial Explorer 8.7搞定GNSS/INS紧组合后处理(附避坑指南)

本文提供NovAtel Inertial Explorer 8.7的GNSS/INS紧组合后处理全流程教程,涵盖环境准备、数据转换、基站坐标解算及紧组合处理等关键步骤。特别针对零基础用户,分享实用技巧和常见陷阱,帮助高效完成高精度组合导航数据处理,适用于测绘、自动驾驶等领域。

weixin_42614269的博客 277

信息安全技术--一次一密钥密码

2.5  一次一密钥密码 1. 加密原理 ? 一个随机密码字母集,包括多个随机密码, 这些密码就好象一个本本,其中每页上记 录一条密码。 ? 类似日历的使用过程,每使用一个密码加 密一条信息后,就将该页撕掉作废,下次 加密时再使用下一页的密码。 2. 一次一密钥密码的推广 ? 可推广到二进制数据的加密。 ? 用二进制数据组成一次密码本,用异或代替 加法,

suwu150 5420

从FP16到FP8:我是如何让Stable Diffusion 3.5提速40%而不丢画质的

本文分享了StableDiffusion模型优化的实战经验。通过FP8精度转换、分层处理敏感模块,实现显存占用降低35%、推理速度提升40%。文章详细介绍了提升画质的五大技巧、本地/云端/移动端部署方案,以及二次元模型定制等垂直领域应用。同时总结了硬件兼容性、数据质量等七大常见陷阱,并强调持续监控和伦理考量。作者指出未来应关注MoE架构、注意力机制优化等方向,认为技术优化是持续追求性能与质量平衡的过程。

达则兼济天下 1186

一次一密加密法

简介 一次一密(OPT)加密法:是牢不可破的加密法,这个加密法不便于日常使用,通常只用于高度机密消息。维吉尼亚程序无需任何修改就可以实现此加密法。 在维吉尼亚加密法的基础上增加以下条件便是一次一密加密法: 1.密钥和要加密的消息同样长 2.密钥由真正随机符号组成 3.密钥只用一次,永不对其他消息复用 一次一密加密法的密钥叫做密码本. 为什么牢不可破 1.如果密钥和消息一样长,那么每个可能的密文字母...

生活屁颠过的博客 3万+

Sonatype nexus3 数据迁移及升级3.71+(迁移到H2数据库)

nexus3旧版本OrientDB升级H2,及整体迁移nexus3数据到其它服务器。

葫芦娃 5550

物联网应用开发教程专栏介绍与说明——列表目录查阅(持续更新)

为方便查阅学习本专栏,特整理专栏介绍与说明及提供列表目录便于查阅。阿齐Archie《物联网应用开发教程》专栏。本专栏为物联网应用开发教程,将更新涵盖常见的WIFI、蓝牙、蜂窝网、以太网、Lora、NB-iot等物联网技术实战应用及详解其技术知识。专栏为技术文章,订阅一个文章即可本专栏内所有文章可看,实战开发,亲测无误,附视频演示效果,会持续更新本专栏。本专栏内有理论篇也有完整实战应用篇。

嵌入式阿齐Archie 2万+

绝对安全的加密方案“一次一密”,视频讲解

一种理想的加密方案,叫做一次一密密码(one-time pad),由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的。 这个视频可以帮助我们来理解这个神奇的加密方案: 上面的视频来自网易公开课,“可汗学院公开课:古代密码学”: 课程列表 名称 视频下载 [第1集] 什么是...

weixin_30596735的博客 637

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 740

绝对安全的加密方案“一次一密”,视频讲解_我是亲民_新浪博客

一种理想的加密方案,叫做一次一密密码(one-time pad),由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的。 这个视频可以帮助我们来理解这个神奇的加密方案: 上面的视频来自网易公开课,“可汗学院公开课:古代密码学”: 课程列表 名称 视频下载 [第1集] 什么是密码学? ...

maxma的博客 795

【从零开始学习SLAM】官方tf教程小海龟跟随程序

ros tf 进行坐标系之间转换的运算和发布

小秋 AI SLAM 入门实战教程 2030

星载SAR的各项指标解读(史上最全)

一、系统指标 系统指标主要指雷达系统的通用的指标,以及和卫星整星相关的指标,主要有一下几项: 工作频段: 雷达体制: 极化方式: 设计s

9268

三钥一次一密不可破解证明

三钥一次一密示意图 加密 解密 图 三钥一次一密各个密钥特征 密钥:K;密钥1:K1,密钥2:K2; K=K1+K2;这里,”+” 表示串接; 外钥:Kout; 内钥:Kin; 明文:P; 密文:C |K|=|K1|+|K2| |K1|=|K2|=|Kout|=|Kin|=|P|=|C| 外钥取自伪随机数序列的一个周期;或者外钥取自真随机数序列。 外钥取自伪随机数序列的一个周期,是用无数个伪随机序列的一个周期代替真随机数序列;

vic93的博客 3507

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

KDC 与 一次一密

KDC 与 一次一密 密钥分发中心(KDC, Key Distribution Center) 模型 上图为KDC模型: Kerberos 提供一种较好的解决方案,它是由MIT发明的,Kerberos建立了一个安全的、可信任的密钥分发中心(KDC, Key Distribution Center)用户A要想申请与用户B对话,他必须按...

weixin_34015336的博客 451

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一次一密密码

一次一密密码 一种理想的加密方案,叫做一次一密密码(one-time pad),由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的。一次一密乱码本是一个大的不重复的真随机密钥字母集,这个密钥字母集被写在几张纸上,并一起粘成一个乱码本。发方用乱码本中的每一密钥字母准确地加密一个明文字符。加密是明文字符和一次一密乱码本密钥字符的模26加

Just Do It 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

不要混淆绝对安全:一次一密(OPT)VS 一次性加密

OTP是信息理论上最安全的加密方式,适用于极高安全需求的场景,但其密钥管理和存储上的复杂性使得它在实际应用中不太可行。SM4 一次性加密方案在效率和密钥管理上具有优势,适用于大规模实时通信等场景,虽然其安全性不如 OTP。

weixin_43215013的博客 2473

不可破解的三钥一次一密简介

1.背景 一次一密是史上唯一不可破解的加密;但因传输与明文等量密钥难题无法解决;只能用物理方式实现;加密学仍处于计算安全阶段。[1-3] 量子计算发展引起了加密界的极度恐慌;因为,量子计算到来之时,所有机密瞬间被破解,绝密军事情报曝光、金融被窃取,卫星、战争机器人可能被敌人掌控……,这是多么可怕的场景和灾难! 2013,我发明了三钥加密、三密码身份验证和三随机数身份验证方法,2014,发表了基于外钥分发的一次一密。本文介绍三钥一次一密完善保密系统。[4-7] 2.三钥一次一密密码体制 三钥一次一密

vic93的博客 4300

一次一密乱码本

/*     ***********************一次一密乱码本*********************基础: c=a^b  a=b^chttp://blog.youkuaiyun.com/unikingest/archive/2009/04/30/4138229.aspx特点:1,密匙长度与信息长度等长。   2,密匙随机生成   3,密匙只能使用一次   4,只适用于少量数据   5,

世界上有两种人,一种是改变世界的人,另一种是被世界同化的人! 1410

无论计算机有多强大、攻击者多么聪明都无法破解的密码:一次一密

在本章中读者将要学习的密码,不论计算机有多么强大、花费了多少时间或者攻击者是多么聪明,都无法破解。它被称为一次一密(One-time pad)。好消息是不必编写新的程序来使用它!读者在第18章中编写的维吉尼亚密码程序可以在不做任何修改的情况下实现此密码。但由于一次一密非常不便于使用,因此它常常只用于最机密的消息。 本章要点 不可破解的一次一密。 两次一密即为维吉尼亚密码。 21.1 不可破解的一次一密 一次一密是维吉尼亚密码的一种,当密钥满足以下标准时,密码将变得不可破解。 它和加密的消息一样长。

人邮异步社区 5401

浅说一次一密乱码本加密

  这种加密方式简单实用是唯一不可破解的安全加密,下面看看它为什么能做到这一点。  大家都知道一次方程里面要是有两个未知数是无法求解的。无法求得确切的解,也就是无解。“一次一密”加密方式与此类似,它用一个密钥加密一个明文,也就是        加密    明文(运算)密钥=密文    (一)        解密    密文(逆运算)密钥=明文   (二)  在(一)式里只知道密文是不能求解密钥或明

sjd163的专栏 5022

一次一密

一次一密 一次一密(one-timepad)指在流密码当中使用与消息长度等长的随机密钥,密钥本身只使用一次。 具体而言,首先选择一个随机位串作为密钥,然后将明文转变成一个位串,比如使用明文的ASCII表示法。最后,逐位计算这两个串的异或值,结果得到的密文不可能被破解,因为即使有了足够数量的密文样本,每个字符的出现概率都是相等的,每任意个字母组合出现的概率也是相等的。这种

LynnZhang的博客 4813
上一篇: 详解线性分组码(linear code)
下一篇: 基于格理论来破解RSA公钥密码(3)【完结篇】
唠嗑!
唠嗑! 优质创作者: 信息安全技术领域 优质创作者: 信息安全技术领域
博客等级 码龄5年 3万+粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值