现代密码学导论-20-流密码

news2025/1/20 22:45:29

目录

3.6 实际操作和加密方式

3.6.1 流密码

CONSTRUCTION 3.30 使用伪随机函数构造流密码

3.6.2 流密码的同步模式

CONSTRUCTION 3.31 流密码的异步模式


3.6 实际操作和加密方式

现代密码学导论-14-基于伪随机发生器的EAV安全_南鸢北折的博客-CSDN博客

CONSTRUCTION 3.17 一种基于伪随机发生器的私钥加密方案

现代密码学导论-19-基于伪随机函数的CPA安全_南鸢北折的博客-CSDN博客

CONSTRUCTION 3.28 构造基于伪随机函数的CPA安全的加密方案

以上两种方案有一些缺点,使得它们不适合在现实中应用

其中,方案3.17只是EAV安全的,不能抵御选择明文攻击。此外,这两种方案都只定义用于对固定长度的消息进行加密

以下这里所讨论的操作模式即在使用流密码或者块密码加密长的明文时所采用的加密流程


3.6.1 流密码

现代密码学导论-12-伪随机发生器_南鸢北折的博客-CSDN博客

上文中的 DEFINITION 3.14 伪随机发生器的定义,我们从中不难看出

伪随机发生器G是相当不灵活的,因为它的输出长度是固定的。具体来讲,我们假设G的膨胀系数是l,对于一个长度为l’>l的消息,我们就不能简单地使用单个n位长度的密钥对该消息进行加密。对于一个长度为l’<l的消息,使用G加密后的输出是l位,虽然我们可以通过截取其前l’位得到密文,但是这样做相当于有长度为l-l’的伪随机序列没有起到任何作用就被白白丢弃掉了,这样做是一种浪费。

形式上,流密码是一对确定性算法(Init,Next),其中:

  1. Init将一个种子s和一个可选的初始化向量IV作为输入,并输出一些初始状态st。
  2. Next将当前状态st作为输入,并输出一个比特y,以及更新状态为st

(当然,在现实中,Next可能输出一个字节甚至更多的随机位,而不是一次输出单个位。为了简单起见,我们假设它每次被调用时只输出一位)

从某个初始状态st0开始,我们可以通过多次重复调用Next来生成任何所需的位数。

我们定义了一个GetBits算法,以初始状态st0和一个期望长度1^l作为输入,然后:

对于i,从1一直到l,计算

返回长度为l的比特串和最终状态st_l。其中返回的比特串为

 

GetBits算法的输出有两个,第一个是长度为l的比特串,第二个是最终状态

我们规定GetBits_1表示运行GetBits并只返回其第一个输出,即长度为l的比特串的输出


CONSTRUCTION 3.30 使用伪随机函数构造流密码

设F是一个伪随机函数。定义流密码(Init,Next),其中Init接受一个3n/4位的初始化向量,Next在每个调用中输出n位:

Init:输入为s∈{0,1}^nIV∈{0,1}^(3n/4),输出st =(s, IV, 0)

Next: 输入为st = (s, IV, i),输出y := Fs(IV‖<i>),并更新状态为st = (s, IV, i+1)


3.6.2 流密码的同步模式

流密码的操作模式有两种:同步模式异步模式

同步模式。假设发送方S接收方R已经共享了密钥k,会话过程如下:

双方都调用Init (k)来获得相同的初始状态st0

st_S为S的当前状态,如果S想加密一个消息m,S就计算

S将密文c := m⊕y发送给接收方R,并更新自身状态为st_S

st_R为R的当前状态,当R从发送方接收到一个密文c时,计算

得到消息m := c⊕y,并将自身状态更新为st_R

请注意,对于同步模式,流密码不需要使用初始化向量IV。没有密文扩展,因为从发送方到接收方的总通信长度完全等于被加密的消息的总长度。


CONSTRUCTION 3.31 流密码的异步模式

设(Init,Next)为一个接受n位IV的流密码,为任意长度的消息定义一个私钥加密方案,如下所述:

Gen:输入为1^n。随机均匀选择一个k∈{0,1}^n并输出

Enc:输入为k∈{0,1}^n和一个消息m∈{0,1}∗,随机均匀选择一个初始化向量IV∈{0, 1}^n,计算并输出密文

Dec:输入为k∈{0,1}^n和密文<IV,c>,得到消息m

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud整合Nacos集群

目录 第一章 微服务架构图 第二章 Spring Cloud整合Nacos集群 第三章 Spring Cloud GateWay 第四章 Spring Cloud Alibaba 整合Sentinel 第五章 Spring Cloud Alibaba 整合SkyWalking链路跟踪 第六章 Spring Cloud Alibaba 整合Seata分布式事务 第七章 Spring Cloud 集成Auth用…

计量数据分析数据库-Stata分析包使用指南、计量分析资料等八大数据大全

一、计量前沿stata 分析包使用指南 当考虑自变量X对因变量Y的影响时&#xff0c;如果X通过影响变量M来影响Y,则称M为中介变量&#xff08;mediator或mediating variable) (Judd & Kenny, 1981; Baron &Kenny,1986)。X通过中介变量M对Y产生的影响就是中介效应&#xff…

【深入理解C++】可调用对象、std::function、std::bind()

文章目录1.可调用对象1.1 函数指针1.2 具有operator()成员函数的类对象/仿函数/函数对象1.3 可被转换为函数指针的类对象1.4 类成员函数指针2.std::function2.1 绑定普通函数2.2 绑定类的静态成员函数2.3 绑定具有operator()成员函数的类对象2.4 绑定可被转换为函数指针的类对象…

【无标题】SAR雷达系统反设计及典型目标建模与仿真实现研究——目标生成与检测(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

408考研科目《数据结构》第八章第一节:排序的基本概念和插入排序(直接插入排序,折半插入排序,希尔排序)

文章目录教程1.排序的基本概念1.1 排序算法的评价指标1.2 排序算法的分类2. 插入排序2.1 直接插入排序2.1.1 算法效率分析2.2 折半插入排序总结2.3 希尔排序 &#xff08;Shell Sort&#xff09;总结教程 排序&#xff1a; https://www.bilibili.com/video/BV1b7411N798/?p77…

队列——算法专项刷题(七)

七、队列 常用于辅助遍历树&#xff0c;设计队列先进先出特性的数据结构 7.1 滑动窗口的平均值 给定一个整数数据流和一个窗口大小&#xff0c;根据该滑动窗口的大小&#xff0c;计算滑动窗口里所有数字的平均值。 实现 MovingAverage 类&#xff1a; MovingAverage(int si…

图书管理系(附源码PPT)

图书管理系统1 绪 论1.1 研究背景1.2 研究意义1.3 相关研究现状1.3.1 高校图书管理面临的问题1.3.2 信息化为图书管理带来新变化2 相关技术2.1 JSP 概述2.2 MySQL 数据库技术2.3 Spring2.4 SpringMVC2.5 Dbcp2.6 Maven3 系统分析3.1 需求分析3.1.1 系统的功能需求分析3.1.2 系统…

利用衍射表面消色差的混合目镜建模

1. 摘要 同时具有折射和衍射表面的混合透镜已成为一种极具潜力的解决方案应用于多种领域。在此案例中&#xff0c;我们将演示混合目镜的一个例子&#xff0c;其中利用衍射透镜表面对色差进行了校正。由ZemaxOpticStudio进行初始化设计&#xff0c;并导入VirtualLab Fusion进行进…

TensorRt(2)快速入门介绍

文章目录1、使用ONNX部署的示例1.1、导出模型1.2、设置batch size批处理大小1.3、指定数值精度1.4、转换模型1.5、部署模型2、使用ONNX转换为engine再部署的示例2.1、导出ONNX模型2.1.1、从TensorFlow中导出ONNX2.1.1、从PyTorch中导出ONNX2.2、ONNX 转化为 TensorRT Engine2.3…

27个超实用Chrome控制台调试技巧 Source 全局搜索(关注更新)

谷歌开发者工具提供了一系列的功能来帮助开发者高效 Debug 网页应用&#xff0c;让他们可以更快地查找和修复 bug。在谷歌的开发者工具中&#xff0c;有非常多有用的小工具&#xff0c;但是很多开发者并不知道。通过这篇文章&#xff0c;我把我常用的那些高效 Debug 的 Chrome …

ARM 汇编指令集1_2

一、两个概念&#xff1a;指令与伪指令 &#xff08;汇编&#xff09;指令&#xff0c;是 CPU 机器指令的助记符&#xff0c;经过编译后会得到一串10组成的机器码&#xff0c;可以由 CPU 读取执行。&#xff08;汇编&#xff09;伪指令&#xff0c;本质上不是指令&#xff08;…

版本控制利器——changelog

问题描述 当前&#xff0c;我们项目需要进行版本的确定&#xff0c;人工审核代码已接近尾声&#xff0c;但为了防止后续继续出现该问题&#xff0c;我希望能够做到在每次push到master时&#xff0c;更新changelog 将每一个版本的commit记录下来&#xff0c;类似于下列 解决…

K8s 集成 Jenkins 部署Go Web项目

风离不摆烂学习日志 Day9 K8s 集成 Jenkins 部署Go Web项目 Dockerfile FROM golang:alpine as builder # 需要go环境 MAINTAINER fl1906WORKDIR /work # 源 RUN go env -w GOPROXYhttps://goproxy.cn && go env -w CGO_ENABLED0 && go env -w GO111MODULEon C…

Splunk UBA 从 Ldap 成功导入 HR 数据

1: 今天在配置Splunk UBA 的HRdata 和asset data 的时候,都要用到ldap, 所以还非要装add-on:\ add-on 的名字: Splunk Supporting Add-on for Active Directory (SA-LDAPSearch) (SA-LDAPSearch) 这个add-on 的配置: Configure the Splunk Supporting Add-on for Activ…

使用腾讯云cos搭建图片服务器

背景 当我们能不希望把图片上传到自己的服务器时&#xff0c;可以采用腾讯云cos帮我们免费代图片&#xff0c;我们只需要在自己的数据库里保存一个图片地址就行了 二、注册账号免费试用 1、注册腾讯云账号 按照腾讯云的注册方式&#xff0c;注册自己的账号 2、实名认证 选择个…

blender boxCutter插件

boxCutter可以用来进行bool运算 打开boxCutter 方法1&#xff1a;物体模式在舞台左侧选择boxCutter图标 方法2&#xff1a;物体模式按N&#xff0c;在舞台右侧的侧边栏里选择boxCutter 方法3 物体模式alta 打开BoxCutter后&#xff0c;舞台上方&#xff0c;N键的弹出菜单&…

进行 Spring 6 迁移的最佳方式

介绍 在本文中&#xff0c;我们将了解如何将现有应用程序迁移到Spring 6以及如何充分利用此升级。 本文中的提示基于我在Hypersistence Optimizer和高性能 Java Persistence 项目中添加对 Spring 6 的支持所做的工作。 爪哇 17 首先&#xff0c;Spring 6 将最低 Java 版本提…

2022.11.27 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.基于后向传播算法的多时间尺度RNN4.1 循环神经网络&#xff08;RNN&#xff09;4.2 基于多时间尺度的RNN预测模型5.实验5.1 数据简介5.2 数据分析5.3 评价指标5.4 实验结果6.结论深度学习1.循环神经网络&#xff08;RNN&#xff09;1.…

Flutter 5 大本地数据库解决方案

Flutter 5 大本地数据库解决方案 原文 https://levelup.gitconnected.com/top-5-local-database-solutions-for-flutter-development-6351cd494070 前言 这里列出了最流行的数据库解决方案以及代码示例。 选择正确的数据管理系统对于提高效率和可 extension 性以及影响可用性和…

3DConvCaps:3DUNet与卷积胶囊编码器用于医学图像分割

摘要 卷积神经网络需要大量的训练数据&#xff0c;无法处理物体的姿态和变形。此外其中的池化层也倾向于丢弃位置等重要的信息。CNN对旋转和仿射变换非常敏感。 胶囊网络是最近出现的一种新型体系结构&#xff0c;其通过动态路由和卷积步长代替池化层&#xff0c;在部分整体表…