【密码学】六、公钥密码

news2024/10/7 2:18:13

公钥密码

  • 1、概述
    • 1.1设计要求
    • 1.2单向函数和单向陷门函数
  • 2、RSA公钥密码体制
    • 2.1加解密
    • 2.2安全性分析
  • 3、ElGamal公钥密码体制
    • 3.1加解密算法
    • 3.2安全性分析
  • 4、椭圆曲线
    • 4.1椭圆曲线上的运算
    • 4.2ECC
  • 5、SM2公钥密码体制
    • 5.1参数选取
    • 5.2密钥派生函数
    • 5.3加解密过程
      • 5.3.1初始化
      • 5.3.2加密过程
      • 5.3.3解密过程

公钥密码体制的出现是迄今为止密码学发展史上一次最伟大的革命。
在公钥密码体制中有公钥(用于加密或验证签名)和私钥(用于解密或签名)之分,且公钥是公开的,通信双方不需要利用秘密信道就可以进行加密通信。
在公钥密码之前的密码都是基于代换和置换两个基本方法实现的,而公钥密码体制是采用的数学函数。
在对称密码体制中,密钥的分配、管理不方便,密钥量很大。

1、概述

1.1设计要求

密钥对(pk,sk),pk是公钥,sk是私钥。
使用公钥进行加密,使用私钥进行解密。
①产生密钥对的计算是容易的;加解密的计算是容易的;
②不能通过pk计算出sk;不能通过密文和公钥恢复出明文;
③加解密的次序可换。

1.2单向函数和单向陷门函数

单向函数
已知X求Y很简单,但是已知Y求X很难;
单向陷门函数
已知X求Y很简单,在参数t未知的情况下,已知Y求X很难,但是t已知的情况下,已知Y求X很简单。
单向陷门的例子:大素数相乘比因式分解容易;函数求导很容易但是求积分有可能很困难。

2、RSA公钥密码体制

RSA的基础是数论的欧拉定理,它的安全性依赖于大整数因子分解的困难性。RSA既可以用于加密,也可以用于数字签名,具有安全、易懂、易实现等特点。

2.1加解密

①选取两个不同的大素数p,q
②计算n=pq,r(n)=(p-1)(q-1),其中r(n)是n的欧拉函数
③随机选取整数e作为公钥,满足gcd(e,r(n))=1
④采用欧几里得算法计算私钥d,使得ed=1(modr(n)),即d=e-1(modr(n))
⑤加密函数:E(m)≡me(mod n)
⑥解密函数:D©≡cd(mod n)

2.2安全性分析

大因子分解很难;
侧信道安全性分析也称为信息泄露攻击,分为能量分析攻击、计时攻击、错误分析攻击。

3、ElGamal公钥密码体制

是基于离散对数问题且主要为数字签名的目的而设计,是继RSA之后最著名的数字签名方案。

3.1加解密算法

参数p是一个素数,g是Z*p上的一个生成元。
密钥生成,a∈(1,p-1),b=ga mod p,那么私钥为a,公钥为(p,g,b)
加密过程:任意选择随机数k∈(1,p-1),计算r=gk mod p和 t= mbk mod p,得到密文c=(r,t)
解密过程:计算r-a t = (gk)-at = m mod p =m,得以得到明文m

3.2安全性分析

算法的安全性是基于离散对数问题,求解离散对数问题的攻击算法有:Shanks算法、指标计算法、Pohlig-Hellman算法

4、椭圆曲线

研究学者将椭圆曲线引入密码学,提出了基于有限域GF§的椭圆曲线上的点集构成群,在这个群上定义了离散对数系统并构造出基于离散对数的一类公钥密码体制,即基于椭圆曲线的公钥密码体制,其安全性基于椭圆曲线上离散对数问题求解的困难性
椭圆曲线是指由三次平滑代数平面曲线,可以表达为
E: y2+axy+by = x3+cx2+dx+e
其中a b c d e属于F,椭圆曲线是其上所有的点外加一个无限远点O(O不在椭圆曲线上)

通过坐标变换,可以简化称E:y2 = x3+ax+b

4.1椭圆曲线上的运算

⊕的运算如下:
①O⊕O=O;O是椭圆曲线的无穷远点
②P⊕O=P
③若P=(x,y),则P⊕(-P)=O,即P的逆-P=(x,-y)
④若P=(x1,y1),Q=(x2,y2),则R=P⊕Q=(x3,y3)
公式
⑤满足加法交换律,P⊕Q=Q⊕P
⑥满足假发结合律,(P⊕Q)⊕R=P⊕(Q⊕R)

kP=P⊕P⊕P…P⊕P k个P相加
(s+t)P=sP⊕+tP

椭圆曲线的阶是椭圆曲线中元素的个数

4.2ECC

设E是有限域GF(pm)或GF§上的椭圆曲线,其中p是素数,m是正整数,已知E对运算⊕构成一个群,ECC椭圆曲线公钥密码体制包括三个过程:选取参数、加密过程和解密过程
选取参数:选取椭圆曲线E(a,b),取其生成元G,任意选取x∈(1,ord(G))为私钥,Y=xG为公钥
加密过程:任意选取k,密文为c=(c1,c2),其中c1=kG,c2=M⊕kY
解密过程:c2-xc1=M,其中-为⊕的逆过程

5、SM2公钥密码体制

SM2是一种椭圆曲线公钥密码算法,密钥长度是256bit。SM2算法有基于素域和二元扩域的椭圆曲线。

5.1参数选取

p:有限域F( p )中元素的数目,越大越安全,但是会变慢
a,b:是方程中的系数,取值于F( p )
G:是基点
n:是点G的阶,大素数,应当尽可能大
h:是椭圆曲线上点的个数N除以n的结果,也称为余因子

5.2密钥派生函数

密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据,需要调用杂凑函数,杂凑函数的输出比特长度为v
在SM2中,密钥派生函数是通过输入比特串Z=x2||y2和整数len,从而得到一个长度为len的比特串。

5.3加解密过程

5.3.1初始化

A->B发送数据,先选取椭圆曲线,后产生B的私钥dB和对应的公钥PB

5.3.2加密过程

发送消息为M,长度为len,则A需要:
①产生随机数k∈[1,n-1],其中n是椭圆曲线基点G的阶次
②计算椭圆曲线点C1=[k]G=(x1,y1)
③计算椭圆曲线上的点S=[h]PB
④计算椭圆曲线点[k]PB=(x2,y2)
⑤计算t=KDF(x2||y2,len)
⑥计算C2=M⊕t
⑦计算C3=Hash(x2||M||y2)
⑧输出密钥C=C1 || C2 || C3

5.3.3解密过程

①从C中取出C1,验证C1是否满足椭圆曲线方程,不满足就解密错误
②计算S=[h]C1,S若为无穷远点则解密错误
③计算[dB]C1=(x2,y2)
④计算t=KDF(x2 || y2,len),若t是全0比特串则解密错误
⑤从C中取出C2,计算M’ = C2⊕t
计算u=hash(x2 ||M’ ||y2),从C中取出C3,若u≠C3则解密错误
⑥M’就是解密后的明文

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

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

相关文章

photoshop生成器引入到electron项目(electron与photoshop建立通信)

Photoshop引入了nodejs,在启动的时候,通过pipe调起nodejs运行时核心generator-builtin,通过KLVR机制与ps进行通信和交互,同时会加载用户编写的扩展。 这里记录一下引入时的踩坑过程 generator-core就是它的源码,elect…

【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON

问题背景 这个报错发生在之前部署的一个前后端分离的项目中。后端使用的Spring Boot,前端使用的JavaScript,前后端交互使用Thymeleaf框架。 现象 项目组的另一个小伙伴说,突然有个页面打不开了,整个页面全空白。我F12打开浏览器…

JAVA集合框架 一:Collection(LIst,Set)和Iterator(迭代器)

目录 一、Java 集合框架体系 1.Collection接口:用于存储一个一个的数据,也称单列数据集合(single)。 2.Map接口:用于存储具有映射关系“key-value对”的集合(couple) 3.Iterator接口&#…

pycharm的Terminal中如何设置打开anaconda3的虚拟环境

在pycharm的File -> Settings -> Tools -> Terminal下面,如下图所示 修改为红框中内容,然后关闭终端在重新打开终端,即可看到anaconda3的虚拟环境就已经会被更新

开源语言模型的历史和重要性;Edge浏览器将推出Bing AI重写文本功能

🦉 AI新闻 🚀 微软即将推出桌面版Microsoft Edge浏览器的Bing AI重写文本功能 摘要:微软最近在桌面版Microsoft Edge浏览器中引入了一个新功能,允许用户使用Bing AI重写文本。用户可以选择不同的语气、格式和长度,然…

5、螺旋矩阵

螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。如: 1 2 3 4 10 11 12 5 9 8 7 …

让三驾马车奔腾:华为如何推动空间智能化发展?

上个月,国务院常务会议审议通过了《关于促进家居消费的若干措施》,其中明确提出了“推动单品智能向全屋智能发展创新培育智能消费”“开展数字家庭建设试点”等推动全屋智能拼配发展的建议与方案。 可以说,以整屋为单位的空间智能品类&#x…

神码ai伪原创【php源码】

大家好,小编为大家解答python必备常用英语词汇笔记的问题。很多人还不知道python中常用的英语单词,现在让我们一起来看看吧! 火车头采集ai伪原创插件截图: 一.什么是注释 注释是对一段代码的解释,不参与程序运行&…

LeetCode题解:判断是否能拆分数组

⭐简单说两句⭐ 作者:后端小知识 CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 上周做了力扣周赛的题,给大家分享一个中等题目&#xff…

适用HarmonyOS 3.1版本及以上的应用及服务开发工具 DevEco Studio 3.1.1 Release 安装

文章目录 安装步骤1.下载安装包2.安装成功后,初次运行studio2.1 配置node与ohpm的环境2.2安装sdk2.3等待安装结束 3.创建项目3.1 点击Create Project3.2 选择一个空项目3.3 项目配置3.4 Finish、等待依赖下载完毕3.5 项目创建完成 tip 提示4.配置运行环境4.1 真机运…

C++-使用clang-format格式化代码

clang-format既是一个库,也是一个单独的工具,它可以自动格式化代码。下面我们介绍如何在QtCreator中使用clang-format。 点击帮助->关于插件,勾选Beautifier 重启后,点击工具->选项->Beautifier->Clang Format&…

[保研/考研机试] KY109 Zero-complexity Transposition 上海交通大学复试上机题 C++实现

描述: You are given a sequence of integer numbers. Zero-complexity transposition of the sequence is the reverse of this sequence. Your task is to write a program that prints zero-complexity transposition of the given sequence. 输入描述&#xf…

开发安卓项目kotlin编写时应用闪退

最近在开发一个公司的安卓项目(kotlin和java混合)遇到一个问题卡了半天。 TODO("Not yet implemented")自己实现了一个方法,系统自动生成了 TODO("Not yet implemented")注释。刚开始也没有在意(java开发时常…

【VisualGLM】大模型之 VisualGLM 部署

目录 1. VisualGLM 效果展示 2. VisualGLM 介绍 3. VisualGLM 部署 1. VisualGLM 效果展示 VisualGLM 问答 原始图片 2. VisualGLM 介绍 VisualGLM 主要做的是通过图像生成文字,而 Stable Diffusion 是通过文字生成图像。 一种方法是将图像当作一种特殊的语言进…

Go-Gin框架

一、Gin介绍 Gin是一个用Go编写的HTTPweb框架。它是一个类似于martini但拥有更好性能的API框架, 优于httprouter,速度提高了近 40 倍。 点击此处访问Gin官方中文文档。 二、安装 1、安装Gin go get -u github.com/gin-gonic/gin 2、代码中引入 import "g…

云服务器搭建到使用

云服务器基本搭建 一、搭建二、 配置三、登录 一、搭建 腾讯云为例 1链接进入后选择 国内地域 选择合适的,一般个人学习使用可以选择2核2G就足够了。1核如果需要后面使用就行联合使用可能就比较吃力,比如链接一个vscode来进行g编译。可能体验感就会很差…

网络安全渗透测试之靶场训练

NWES: 7月26号武汉地震检测中心遭受境外具有政府背景的黑客组织和不法分子的网络攻击。 目前网络攻击主要来自以下几种方式: DDOS:分布式拒绝服务攻击。通过制造大量无用的请求向目标服务器发起访问,使其因短时间内无法处理大量请求而陷入瘫痪。主要针对…

在Vue2.0中集成Vform动态表单

目录 一、打包下载源码,引入组件 1、项目地址 2、下载并打包 二、将vform集成到项目中 1、导入v-form-designer、v-form-render两个组件 2、在项目的main.js文件中引入组件,并注册组件 三、注册路由 1、引入VFormDesigner 设计器 2、使用VFor…

Azure Kinect DK + ROS1 Noetic使用教程

作者: Herman Ye Galbot Auromix 版本: V1.0 测试环境: Ubuntu20.04 更新日期: 2023/08/08 注1: 本文内容中的硬件由 Galbot 提供支持。 注2: Auromix 是一个机器人爱好者开源组织。 注3: 本文在…

Ajax同源策略及跨域问题

Ajax同源策略及跨域问题 同源策略ajax跨域问题什么是跨域?为什么不允许跨域?跨域解决方案1、CORS2、express自带的中间件cors3、JSONP原生JSONPjQuery发送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略(Same-Origin Policy&#…