【密码学】椭圆曲线密码体制(ECC)
椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。
一、椭圆曲线是什么?
(1)椭圆曲线的数学定义
椭圆曲线是一条由方程 给定的曲线,其中a和b是常数,并满足
,以确保曲线没有奇点(即曲线是平滑的)。在无限域(如实数域)上,椭圆曲线看起来像是一条平滑的、不自交的曲线。
椭圆曲线的图像如下:


【注】椭圆曲线并不是椭圆,只因为该方程与计算椭圆周长的方程相似。
可以证明如果 没有重复因子,或者满足
那么椭圆曲线上的点集
可构成一个Abel群(阿贝尔群)。椭圆曲线包括所有曲线上的点以及一个特殊的点,我们称为无限远点
(2)椭圆曲线上的算术运算
椭圆曲线上定义了加法运算,这使得椭圆曲线成为一个群。具体来说,对于椭圆曲线上任意两点 P 和 Q,可以定义它们的和 R=P+Q,其计算方法遵循以下规则:
① 加法运算

加法:如果 P 和 Q 不重合,那么通过连接这两点的直线与椭圆曲线的第三个交点,然后在 y 轴上找到这个点的反射点作为 R

二倍点:如果 P=Q,则使用切线代替直线,找到切线与椭圆的交点,再找到该点关于 y 轴的反射点作为 2P

无穷远点:椭圆曲线上的加法还定义了一个特殊点,称为无穷远点,它与任何其他点相加都保持不变
② 点乘运算
点乘:将一个给定点沿着椭圆曲线进行多次加法操作。点乘运算通常被记作 kP,其中 k 是一个整数,P 是椭圆曲线上的一点。
如上图3P的计算过程,先计算出2P也就是Q,然后再将Q和P连接在一起,找到和椭圆曲线的交点,这个交点关于X轴的对称点就是3P。
二、椭圆曲线密码体制
有限域上的椭圆曲线是椭圆曲线的一个变体,它定义在一个有限域(finite field)上,而不是在实数域或复数域上。有限域上的椭圆曲线在密码学中有重要的应用,特别是用于构建椭圆曲线密码体制(ECC)
(1)有限域上的椭圆曲线
有限域是一个具有有限个元素的域。域意味着在这个集合中定义了加法和乘法操作,并且这些操作满足特定的代数性质,比如加法和乘法的封闭性、结合律、交换律、单位元的存在性、逆元的存在性等。
有限域的一个重要例子是模 p 的剩余类,这个有限域通常记作,当椭圆曲线定义在一个有限域
上时,我们考虑的是所有
,其中
和
都是
中的元素,并且满足上述椭圆曲线方程。这样的点集构成了有限域上的椭圆曲线。

(2)有限域上的椭圆曲线结论
在有限域上的椭圆曲线上定义的加法运算构成了一个阿贝尔群,这是因为加法运算满足群的四个基本性质:封闭性、结合律、存在单位元、存在逆元,同时加法运算还满足交换律。
-
封闭性:
对于椭圆曲线 E 上的任意两点 P 和 Q,它们的和 R=P+Q 也是一个椭圆曲线上的点。这意味着加法运算的结果仍然属于椭圆曲线 E。
-
结合律:
对于椭圆曲线 E 上的任意三点 P、Q 和 R,有 (P+Q)+R=P+(Q+R)。这意味着加法运算的顺序不影响结果。
-
单位元:
椭圆曲线 E 上定义了一个特殊点 O,称为无穷远点,它是加法的单位元。这意味着对于椭圆曲线上的任意点 P,都有 P+O=P。
-
逆元:
对于椭圆曲线 E 上的每一个点 P,存在一个唯一的点 −P,使得 P+(−P)=O。这里的 −P 称为 P 的加法逆元。
-
交换律:
对于椭圆曲线 E 上的任意两点 P 和 Q,有 P+Q=Q+P。这意味着加法运算满足交换律。
(3)椭圆曲线上的离散对数问题(ECDLP)
椭圆曲线上的离散对数问题 (ECDLP) 是椭圆曲线密码学 (ECC) 安全性的基础。ECDLP 是指在给定的椭圆曲线上,找到一个点的倍数所需的秘密倍数的问题。它的定义如下:
ECDLP 的难度在于,虽然给定一个点 P 和一个整数 k,很容易计算出 Q=kP,但是反过来,给定 Q 和 P,找到 k 是非常困难的。这种问题的难解性是椭圆曲线密码学安全性的核心。

ECDLP 的难度确保了椭圆曲线密码系统的安全性。由于目前没有已知的有效算法可以在多项式时间内解决 ECDLP,因此只要选择合适的椭圆曲线和密钥长度,就可以实现高度的安全性。

三、椭圆曲线密码学体制的应用
椭圆曲线密码学利用 ECDLP 的难解性来构建安全的密码协议,例如:
- 椭圆曲线数字签名算法 (ECDSA):用于创建数字签名。
- 椭圆曲线密钥交换协议 (ECDH):用于安全地交换密钥。
- 椭圆曲线集成加密方案 (ECIES):用于加密数据。
(1)椭圆曲线上的DH密钥交换算法(ECDH)举例说明
① 准备阶段
第一步:首先取一个素数 ,以及参数
,则椭圆曲线上的点构成Abel群
第二步:取上的一个生成元
,要求
的阶是一个非常大的数
,
的阶
是满足
的最小正整数。
第三步:将和生成元
作为公钥密码体制的公开参数对外公布,不保密。
② 密钥交换阶段
通过上面密钥交换算法,A和B共同拥有密钥K,攻击者如果想获得密钥K,他就必须由和
求出
,或者由
和
求出
,而这等价于求椭圆曲线上的离散对数问题ECDLP,因此是不可行的,所以确保了安全。
③ 带入具体数字举例说明
相关文章:

【密码学】椭圆曲线密码体制(ECC)
椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。 一、椭圆曲线是什么? (1)椭圆曲线的数学定义…...

第25集《大佛顶首楞严经》
丑二、腾疑细释 分二:寅一、阿难腾疑;寅二、如来细释 请大家打开讲义第五十六页,“丑二、腾疑细释”。 本经的修学重点,就是修学首楞严王三昧。它的整个重点,其实就是一个心地法门。我们在行菩萨道的时候慢慢会发觉…...
python 读写文件之 open 和 with open() 详细解析
python 读写文件之 open 和 with open() 详细解析 文章目录 python 读写文件之 open 和 with open() 详细解析1. open() 和 with open() 能打开不同的文件类型吗?2. 文本文件和二进制文件的区别2.1 文本文件 (Text Files)2.2 二进制文件 (Binary Files)区别 3. 读文…...
操作系统:内存----知识点
什么是虚拟内存? 虚拟内存简称虚存,是计算机系统内存管理的一种技术。它是相对于物理内存而言的,可以理解为“假的”内存。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),允许程序员编…...
pfx如何配置到nginx中
有pfx文件的时候如何在nginx上使用 好的,如果您已经确认没有中间证书(或中间证书内容为空),那么可以直接使用服务器证书和私钥。以下是简化后的步骤: 从PFX文件中导出私钥: openssl pkcs12 -in xxx.com.pfx…...

详细测评下搬瓦工香港CN2 GIA VPS
搬瓦工香港VPS分移动CMI和电信CN2 GIA两个大类,一个属于骨干网,一个属于轻负载。搬瓦工的香港CN2 GIA根据测试来看实际上是CN2 GIABGP,并非三网纯CN2 GIA。详细测评数据如下: 用FIO再给测试一下硬盘I/O,可以仔细看看数…...

Java中的五种线程池类型
Java中的五种线程池类型 1. CachedThreadPool (有缓冲的线程池)2. FixedThreadPool (固定大小的线程池)3. ScheduledThreadPool(计划线程池)4. SingleThreadExecutor (单线程线程池)…...

FFmpeg Windows安装教程
一. 下载ffmpeg 进入Download FFmpeg网址,点击下载windows版ffmpeg。 下载第一个essentials版本就行。 二. 环境配置 上面源码解压后如下 将bin添加到系统环境变量 验证安装是否成功,输入ffmpeg –version,显示版本即为安装成功。...

‘#‘ is not followed by a macro parameter 关于宏定义的错误
今天在项目代码上想定义一个这样的宏,结果编译错误,这个宏定义类似这样的: #define DELETE_FILE_DPP(key) \ #ifdef PLATFORM_DPP \delete_file(&key); \ #endif 因为有平台之分需要用到编译宏,但不想每个调用的地方都写 #i…...

内网穿透--meterpreter端口转发实验
实验背景 通过公司带有防火墙功能的路由器接入互联网,然后由于私网IP的缘故,公网无法直接访问内部主机,则需要通过已连接会话,代理穿透访问内网主机服务。 实验设备 1.路由器一台 2.内网 Win 7一台 3.公网 Kali 一台 4.网络 …...
Python 数据类:减少样板并提高可读性
一.介绍 在本文中,我们将了解数据类。Python 3.7 引入了数据类,这是一个强大的功能,它简化了创建主要用于存储数据的类的过程。数据类减少了样板代码并提供有用的默认行为,使您的代码更简洁、更高效。 二.为什么要使用数据类&am…...
家庭教育系列—北京海淀区”鸡娃“攻略
文章目录 1. 背景介绍2. 道3. 法3.1 **目标设定(Goal Setting)**3.2 **学习计划(Study Planning)**3.3 **资源利用(Resource Utilization)**3.4 **能力培养(Skill Development)**4. 术4.1 英语4.1.1 启蒙4.1.2 启蒙之后4.3 数学4.3.1 奥数4.3.2 普通数学知识4.4 语文4.…...
DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(下)
3.安全语境 安全语境定义了与加密转换有关的安全属性,并包括以下元素: ——安全组件,确定可用的安全算法。 ——安全策略,在AA内对所有xDLMS APDU确定将应用的那种保护; ——与给定的安全算法相关的安全资料,包含安全密钥、初始化向量、公共密钥证书等。由于安全资料是针…...

基于 systemc-2.3.1的virtual device 接入 qemu-arm
1,下载systemc-2.3.1 下载网址: SystemC Files $ wget https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.1.tgz 2,编译安装 systemc-2.3.1 tar zxf systemc-2.3.1.tgz cd systemc-2.3.1/ export CXXg mkdir bu…...
(七)自动化测试
1. 简述什么是UI自动化测试? 正确回答通过率:78.0%[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对用户界面(UI)进行自动化测试的方法。它可以模拟用户与应用程序或网站的交…...

【信创】virtualbox内虚拟机连接U盘 _ 统信 _ 麒麟 _ 中科方德
原文链接:【信创】virtualbox内虚拟机连接U盘 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇关于在信创操作系统上使用VirtualBox虚拟机连接物理主机U盘的文章。在使用VirtualBox虚拟机时,有时候需要将物理主机上的…...

【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分
【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分 本文承接文章【2024】Datawhale AI夏令营 Task3笔记——Baseline2部分代码解读及初步上分思路,对其中vllm加速方式进行修改,推理速度获得了极大提升。另外,…...
腾讯OCR签名算法
云服务器 签名方法 v3-调用方式-API 中心-腾讯云 一,签名算法-官网 copy官网 package com.smcv.customer.service.util;import org.springframework.http.HttpHeaders;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.xml.bind.D…...

CTFHUB-SSRF-DNS重绑定 Bypass
开启题目,页面空白,访问附件 附件是一个知乎的文章,翻到下面点击文中这个链接 跳转之后,进行设置 把得到的链接拼接到题目的后面进行访问,然后得到了本题的 flag...
【oracle】数据库基本使用
一、oracle数据库简介 Oracle 数据库,亦称 Oracle RDBMS,或简称 Oracle,是一款由甲骨文公司推出的高效、稳定且广泛应用的关系型数据库管理系统。该数据库系统不仅在数据管理领域处于领先地位,而且由于其良好的可移植性、易用性和…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...