密码学 总结

群 环 域

群 group

G是一个集合,在此集合上定义代数运算*,若满足下列公理,则称G为群。
1.封闭性 a ∈ G , b ∈ G a\in G,b\in G aG,bG=> a ∗ b ∈ G a*b\in G abG
2.G中有恒等元素e,使得任何元素与e运算均为元素本身(如:单位矩阵、加法的0,乘法的1)
3.G的每个非0元素都有逆元素,使得元素*逆元素=e(如:加法中的负数,乘法中的倒数)
4.满足结合律

阿贝尔群(可交换群):
1.满足群的四条公理
2.满足交换律(矩阵不满足)

例:(7,3)码在模2加法下构成群,(n,k)码又称群码
0000000 单位元
0011101
0100111
0111010
1001110
1010011
1101001
1110100
封闭性可验证。存在e。每个元素的逆都是他们本身。模2加法相当于异或,满足结合律。故此运算为群。
线性分组编码

环 Ring

R是一个集合,在其上定义两种代数运算+、*,若满足下列公理则称为环
1.+下构成群
2.*下满足封闭性
3. *下满足结合律
4. 分配律成立(包括左分配和右分配)
左分配:a(b+c)=ab+ac
右分配:(b+c)a=ba+ca
如:矩阵的乘对加满足分配律

e.g.
整数集合是环,加法和乘法构成整数环
实系数的多项式环
在这里插入图片描述

域 Field

在F集合上定义两种代数运算+和*,若满足下列公理,则F称为域
1.在加法下构成群
2.全体非0元素构成交换乘群(=加法和乘法都成群)
3.对加法和乘法分配律成立

域是有单位元素、非0元素有逆元素的交换环
e,g,以p=3为模的剩余类全体{0,1,2}构成域

有限域:域中元素数目是有限的; 记为: GF(q)q为域的阶,称为q元域;
无限域:域中元素的数目是无限的;
域的阶:域中元素的数目;

GF(2)为二元域,是最小的域
实际应用中,q的量级是 2 1024 2^{1024} 21024,非常巨大

数域包括 复数域、实数域、有理数域

二元域上的多项式

系数取自GF(2),含有一个未定元x的多项式称为GF(2)上的多项式,用f(x)表示。
多项式的加法:同幂次的系数相加
多项式的乘法:正常展开
相加时使用模2加法,即异或,即不进位的加法
x 2 − x = x 2 + ( 1 ) − 1 x = x 2 + x x^2-x=x^2+(1)^{-1}x=x^2+x x2x=x2+(1)1x=x2+x

二元域上的既约多项式

f(x)是次数>0的多项式,若除了1和多项式本身以外,不能再被GF(2)上的其他多项式除尽,则称为f(x)是二元域上的既约多项式(不可约多项式)。
即,不能分解为两个多项式的乘积
e.g.m=4,f(x)= x 4 + x + 1 x^4+x+1 x4+x+1 等价于五元向量(1,0,0,1,1)

f(x)不能在GF(2)上分解,但可以在更大的范围域内分解
定义:如果有两个域F1,F2,如果 F 1 ⊂ F 2 F_1\subset F_2 F1F2,则F2是F1的扩域。
在域F1上的一个不可约多项式,在其扩域F2上可能有根,如果f(x)在F2上有根 α \alpha α,则在F2上f(x)有分解因子 ( x − α ) (x-\alpha ) (xα)

e.g. x 2 + 1 x^2+1 x2+1在R内不可分解,但在复数域上可以分解为(x+i)(x-i)

设P(x)是GF(2)上的m次既约多项式,GF(2)上所有次数小于m的多项式的全体,在模2加法、模P(x)乘法运算下构成一个 2 m 2^m 2m阶的有限域,称为GF( 2 m 2^m 2m),GF(2)是扩域GF( 2 m 2^m 2m)的基域。扩域GF( 2 m 2^m 2m)中有 2 m 2^m 2m个元素,每个元素形如: a m − 1 x m − 1 + a m − 2 x m − 2 + . . . + a 1 x + a 0 a_{m-1}x^{m-1}+a_{m-2}x^{m-2}+...+a_1x+a_0 am1xm1+am2xm2+...+a1x+a0,可记为m维二元向量的形式( a m − 1 , a m − 2 , . . . , a 1 , a 0 a_{m-1},a_{m-2},...,a_1,a_0 am1,am2,...,a1,a0)

设P(x)是GF(2)上的一个m次既约多项式,如果构成的扩域GF( 2 m 2^m 2m)中的全体非0多项式元素对模P(x)乘法构成乘法循环群,即,存在GF( 2 m 2^m 2m)的一个非0元素 α ∈ G F ( 2 m ) \alpha \in GF(2^m) αGF(2m),它的各次幂 α 0 , α 1 , . . . , α 2 m − 2 \alpha ^0,\alpha ^1,...,\alpha ^{2^m-2} α0,α1,...,α2m2恰好构成扩域GF( 2 m 2^m 2m)的全部非零元素,则称P(x)是GF(2)上的一个m次本原多项式。有:
1. α \alpha α是GF(2)的一个本原元
2. α \alpha α是GF(2)上的既约多项式P(x)在扩域GF( 2 m 2^m 2m)中的一个根
3.GF(2)上的本原多项式P(x)在扩域GF( 2 m 2^m 2m)中的任何一个根都是本原元

e.g.
在这里插入图片描述
( 0 , 1 , α , α 2 , . . . . , α 14 ) (0,1,\alpha,\alpha^2,....,\alpha^{14}) (0,1,α,α2,....,α14)构成域,称为GF(2)的4次扩域。域的阶为16,记为GF( 2 4 2^4 24)。也构成循环群。

求逆:扩展欧几里得算法

对称加密算法 AES

AES(Advanced Encryption Standard) 之 Rijndael算法

迭代分组密码,分组长度为128b,密码长度为128/192/256b,相应的轮数r为10/12/14

讨论密钥长度为128b,分组长度为128b的情况
128b的消息被分为16个字节,每字节8位,记为InputBlock=m0,m1,m2…m15
密钥分组如下:InputKey=k0,k1,k2…k15
内部数据结构表示为一个4x4的矩阵:
I n p u t B l o c k = [ m 0 m 4 m 8 m 12 m 1 m 5 m 9 m 13 m 2 m 6 m 10 m 14 m 3 m 7 m 11 m 15 ] InputBlock=\begin{bmatrix} m0& m4& m8& m12\\ m1& m5& m9& m13\\ m2& m6& m10& m14\\ m3& m7& m11& m15 \end{bmatrix} InputBlock= m0m1m2m3m4m5m6m7m8m9m10m11m12m13m14m15

I n p u t K e y = [ k 0 k 4 k 8 k 12 k 1 k 5 k 9 k 13 k 2 k 6 k 10 k 14 k 3 k 7 k 11 k 15 ] InputKey=\begin{bmatrix} k0& k4& k8& k12\\ k1& k5& k9& k13\\ k2& k6& k10& k14\\ k3& k7& k11& k15 \end{bmatrix} InputKey= k0k1k2k3k4k5k6k7k8k9k10k11k12k13k14k15

轮变换

Round(State,RoundKey)
State是轮消息矩阵,被看作输入和输出,RoundKey是轮密钥矩阵,由输入密钥通过密钥表导出,一轮的完成将导致State的元素改变状态。
每轮变换由四个不同的变换组成:

SubBytes(State)

模f(x)= x 8 + x 4 + x 3 + x + 1 x^8+x^4+x^3+x+1 x8+x4+x3+x+1得到扩域GF( 2 8 2^8 28),有256个元素。
SubBytes函数为State的每个字节(x)提供非线性变换,任一非0的字节x ∈ F 2 8 \in F_{2^8} F28被下面的变换取代: y = A x − 1 + b y=Ax^{-1}+b y=Ax1+b 。求逆体现了变换的非线性,A是可逆的,所以此变换可逆。
在这里插入图片描述
e.g.
在这里插入图片描述
由于系数是0或1,因此可以将任何这样的多项式表示为比特串
加法是这些位串的XOR
乘法是移位&XOR
通过用不可约多项式的余数重复替换最高幂来实现模约简(也称为移位和XOR)

ShiftRows(State)

在这里插入图片描述
每行分别循环左移0,1,2,3位

MixColumns(State)

这个函数对State的每一列作用,迭代四次,下面仅仅描述对一列的作用:
令State的一列为: [ S 0 S 1 S 2 S 3 ] \begin{bmatrix} S_0\\ S_1\\ S_2\\ S_3 \end{bmatrix} S0S1S2S3 ,把这一列表示为三次多项式: s ( x ) = s 3 x 3 + s 2 x 2 + s 1 x + s 0 s(x)=s_3x^3+s_2x^2+s_1x+s_0 s(x)=s3x3+s2x2+s1x+s0,因为s(x)的系数是字节,也就是说是 F 2 8 F_2^8 F28域中的元素,所以这个多项式是 F 2 8 F_2^8 F28上的。
列s(x)上的运算定义为将这个多项式乘以一个固定的3次多项式c(x),然后模x4+1:
d ( x ) = c ( x ) × s ( x ) ( m o d   x 4 + 1 ) d(x) = c(x) × s(x) (mod \ x^4+1) d(x)=c(x)×s(x)(mod x4+1)
c ( x ) = c 3 x 3 + c 2 x 2 + c 1 x + c 0 c(x)=c_3x^3+c_2x^2+c_1x+c_0 c(x)=c3x3+c2x2+c1x+c0
其中, x i ( m o d   x 4 + 1 ) = x i m o d 4 x^i(mod \ x^4+1)=x^{imod4} xi(mod x4+1)=ximod4
Rijndeal给出:c3=“03”, c2=“01”, c1=“01”, c0=“02”
在乘积d(x)中,x2的系数是d2=c2s0+c1s1+c0s2+c3s3
上述乘法的系数可以写成以下矩阵乘法:在这里插入图片描述
F 8 F_8 F8上,c(x)与 x 4 + 1 x^4+1 x4+1是互素的,所以在 F 8 ( x ) F_8(x) F8(x)中,逆 c ( x ) − 1 ( m o d x 4 + 1 ) c(x)^{-1} (modx^4+1) c(x)1(modx4+1)是存在的。这等于说,上述矩阵变换是可逆的。

AddRoundKey(State, RoundKey)

这个函数是逐字节、逐比特地将RoundKey中的元素与State中的元素相加。这里的加,是F2中的加,也就是异或运算,是平凡可逆的。
不同轮的密钥比特是不同的。它们使用一个固定的“密钥表”导出密钥,每轮密钥不同,该“密钥表”是非秘密的。具体细节可参阅有关NIST的标准文件。

解密

在这里插入图片描述

非对称加密算法 RSA

非对称,指的是加密和解密的密钥不同。

陷门单向函数

若函数f:A->B可逆(单射+满射),且满足对 x ∈ A x\in A xA,易于求解f(x),但由f(x)求x极为困难,则称为 单向函数
陷门单项函数
f z : A z − > B z , z ∈ Z f_z:A_z->B_z,z\in Z fz:Az>Bz,zZ,Z是陷门信息集合。
1)在给定 z ∈ Z z\in Z zZ下容易找到一对算法 E z E_z Ez D z D_z Dz,使得对所有 x ∈ A x\in A xA,易于计算 f z f_z fz及其逆,即: f z ( x ) = E z ( x ) , D z ( f z ( x ) ) = x f_z(x)=E_z(x),D_z(f_z(x))=x fz(x)=Ez(x),Dz(fz(x))=x
2)只给定 E z E_z Ez D z D_z Dz时,对所有 x ∈ A x\in A xA都很难从 y = f z ( x ) y=f_z(x) y=fz(x)中计算出x

单向函数是求逆困难的函数,而陷门单项函数是在不知道陷门信息下求逆困难、在知道陷门信息下求逆容易的函数。

用于构造双钥密码的单向函数

  1. 多项式求根

  2. 离散对数DL

  3. 大整数分解FAC

  4. 背包问题

  5. 赫尔曼问题 DHP

  6. 二次剩余问题QR

  7. 模n的平方问题 SQROOT

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

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

相关文章

vue实现把Ox格式颜色值转换成rgb渐变颜色值(开箱即用)

图示: 核心代码: //将0x格式的颜色转换为Hex格式,并计算插值返回rgb颜色 Vue.prototype.$convertToHex function (colorCode1, colorCode2, amount) {// 确保输入是字符串,并检查是否以0x开头let newCode1 let newCode2 if (t…

YOLOv9改进策略:block优化 | Transformer架构ConvNeXt 网络在检测中大放异彩

💡💡💡本文改进内容:Transformer架构 ConvNeXt 网络在图像分类和识别、分割领域大放异彩,同时对比 Swin-T 模型,在多种任务中其模型的大小和准确率均有一些提升,模型的 FLOPs 较大的减小且 Acc …

Solana 低至 0.4 Sol 创建OpenBook市场ID教程

Raydium上线代币之前,需要OpenBook ID,但是Raydium官方提供的链接创建需要花费 3-4 SOL。这成本使得我们对发行代币望而却步。 本篇文章介绍OpenBook的概念和教大家如何更低成本 (最低0.4 SOL) 创建 OpenBook Market ID。 目录 1、Raydium加池子创建为什…

机器学习中的 K-Means算法及其优缺点(包含Python代码样例)

一、简介 K-Means算法是一种经典的无监督学习算法,用于将数据集中的样本分为 K 个不同的类别。K-均值聚类算法的工作原理如下: 随机选择 K 个中心点作为初始聚类中心。将每个样本点分配到离其最近的聚类中心,形成 K 个初始聚类。通过计算每…

亮数据——让你的IP走出去,让价值返回来

亮数据——让你的IP走出去,让价值返回来 前言跨境电商最最最大的痛点——让IP走出去超级代理服务器加速网络免费的代理管理软件亮数据解决痛点亮数据优势介绍亮数据浏览器的使用示例总结 前言 当前社会信息的价值是不可想象的,今天在亮数据中看到了个【…

大话设计模式之模板方法模式

模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个算法的框架,将特定步骤的实现延迟到子类中。模板方法模式通过在父类中定义算法的骨架,而将具体步骤的实现留给子类来完成,从而使子类…

用搜索引擎收集信息-常用方式

1,site csdn.net (下图表示只在csdn网站里搜索java) 2,filetype:pdf (表示只检索某pdf文件类型) 表示在浏览器里面查找有关java的pdf文件 3,intitle:花花 (表示搜索网页标题里面有花…

linux查找指定目录下包含指定字符串文件,包含子目录

linux查找指定目录下包含指定字符串的文件,包含子目录 linux查找指定目录下包含指定字符串的指定文件格式,包含子目录 指定目录 cd /home/www/linux查找指定目录下包含指定字符串的文件,包含子目录 grep -r "指定字符串"注释 gr…

微信开发者工具接入短剧播放器插件

接入短剧播放插线 申请添加插件基础接入app.jsonapp.jsplayerManager.js数据加密跳转到播放器页面运行出错示例小程序页面页面使用的方法小程序输入框绑定申请添加插件 添加插件:登录微信开发者平台 ——> 设置 ——> 第三方设置 ——> 插件管理 ——> 搜索“短剧…

操作系统导论-py2文件修改为py3文件快捷解决方法

在操作系统导论作业中,我们需要用到HW文件。但是这个代码包中,所有.py文件都是py2格式的,需要我们修改为py3文件后运行,即将.py文件开头的 #! /usr/bin/env python 修改为: #! /usr/bin/env python3 在前面小部分文件中…

【快捷部署】010_MySQL(5.7.27)

📣【快捷部署系列】010期信息 编号选型版本操作系统部署形式部署模式复检时间010MySQL5.7.27Ubuntu 20.04Docker单机2024-03-28 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1a…

idea类已经存在却报错

一句话导读 在idea中导入新的项目,很多类都飘红报错,mvn compile可以通过,可能是因为idea缓存问题导致。 由于这个项目是由老项目复制过来后,再继续开发新的功能,很多同事导入后,都爆出新的类找不到。而编译…

正弦实时数据库(SinRTDB)的使用(4)-快照查询

前文已经将松果实时数据库的安装、创建点表、创建测点、接入OPC DA的数据进行了介绍,没有了解的可以先看如下博客: 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入O…

【吊打面试官系列】Redis篇 -怎么测试 Redis 的连通性?

大家好,我是锋哥。今天分享关于 【怎么测试 Redis 的连通性?】面试题,希望对大家有帮助; 怎么测试 Redis 的连通性? 使用 ping 命令。 要测试Redis的连通性,可以使用redis-cli命令行工具或编写代码。以下是…

Docker 哲学 - Dockerfile 指令

Dockerfile 的 entrypoint 和 cmd 书写方式一样吗,分别用一个node项目的 demo来举例 Dockerfile 的 entrypoint 、cmd 有什么区别,分别举例他们同时出现的场景和 单独出现的场景 entrypoint 和 cmd 命令: 同时出现: 1、cmd 作为 e…

格式化危机!教你轻松恢复数据!

一、遭遇格式化,数据恢复并非难事 当存储设备遭遇格式化后,许多人可能会陷入恐慌,担心重要数据一去不复返。但实际上,数据恢复并非如想象中那般困难。格式化操作主要清除了文件系统的索引信息,而实际的数据往往还残留…

[STM32] Keil 创建 HAL 库的工程模板

Keil 创建 HAL 库的工程模板 跟着100ASK_STM32F103_MINI用户手册V1.1.pdf的第7章步骤进行Keil工程的创建。 文章目录 1 创建相关文件夹2 创建“main.c/h”和“stm32f1xx_clk.c/h”3 复制CMSIS和HAL库4 创建新的Keil工程5 添加组文件夹和工程文件6 配置Keil设置 1 创建相关文件…

Ollama使用

当前各种大模型层出不穷,但想要在本地运行起来一个大模型还是有一定门槛的。 并且模型众多, 每个模型都有自己不同的配置和使用方法,使用非常不便。 Ollama就是一个非常好的工具, 可以让你方便在本地运行各种大模型。 1 安装 支…

【前端学习——js篇】11.元素可见区域

具体见:https://github.com/febobo/web-interview 11.元素可见区域 ①offsetTop、scrollTop offsetTop,元素的上外边框至包含元素的上内边框之间的像素距离,其他offset属性如下图所示: 下面再来了解下clientWidth、clientHeight…

报错there is no HDFS_NAMENODE_USER defined

在Hadoop安装目录下找到sbin文件夹,修改里面的四个文件 1、对于start-dfs.sh和stop-dfs.sh文件,添加下列参数: HDFS_DATANODE_USERroot HDFS_DATANODE_SECURE_USERhdfs HDFS_NAMENODE_USERroot HDFS_SECONDARYNAMENODE_USERroot 2、对于st…