公钥密码学

news2024/11/15 1:52:53

1. 非对称密码学

        非对称密码学(Asymmetric Cryptography) 中的 “非对称” 指的是用于加密数据的密钥和用于解密数据的密钥是不一样的(如果一样,那就是对称密码学)。对称密码学也称为共享密钥密码学。类似地,非对称密码学也有一个别称,即公钥密码学(Public Key Cryptography)。这是因为它使用一对公钥和私钥分别加密和解密数据。目前使用的非对称密码方案包括 RSA、DSA 和 EIGammal。

        下图显示公钥密码学加密/解密的大致过程

         上图显示的公钥密码学加密/解密过程大致如下:发送者使用接收者的公钥对明文数据 P 进行加密(E),生成密文数据 C,然后通过网络将发送给接收者。密文数据 C 到达接收方之后,接收者使用私钥将已加密的密文数据 C 馈送到解密函数 D 中进行解密,解密函数 D 将输出明文数据 P 。

        这样,私钥保留在接收方,无须像对称密码学那样共享密钥即可执行加密和解密。

        下图显示了接收者使用公钥加密来验证接收到的消息的完整性。在此模型中,发送方使用私钥对数据进行签名,然后将消息发送给接收者。接收者收到消息后,将通过发送者的公钥验证其完整性。

        值得注意的是,此模型中没有执行加密和解密的过程。

        在上图中可以看到,发送者使用私钥对明文数据 P 进行数字签名(签名函数 S),生成密文数据 C,该数据被发送到接收者,接收者使用发送者公钥和验证函数 V 验证密文数据 C ,以确保消息确实来自发送者。

        公钥密码系统提供的安全机制包括密钥建立、数字签名、标识、加密和解密。

        密钥建立机制(Key Establishment Mechanism) 与协议的设计有关,协议将允许在不安全的信道上建立密钥。

        可以使用数字签名(Digital Signatures) 来提供不可否认服务,这在许多情况下都是非常理想的方式。

        有时我们不仅要对用户进行身份验证,还要识别交易中涉及的实体,这可以通过数字签名和挑战应答协议( Challenge-Response Protocol) 的组合来实现。

        最后,也可以使用公共密钥密码系统(如 RSA、ECC 和 EIGammal) 来获得提供机密性的加密机制。

        公钥算法在计算方面比对称密钥算法慢,因此,它们不适用于大型文件的加密或实际数据的加密。它们通常用于交换对称算法的密钥。一旦安全地建立了密钥,就可以使用对称密钥算法对数据进行加密。

        公钥加密算法基于各种基础数学函数。

 1.1 整数分解

        公钥密码学的安全源于基本的数学原理。公钥和私钥是有数学联系的,不然解密和签名操作就不可能实现,但是也不是由公钥算出私钥,如果可以算出来,那么加密的安全性就无从谈起。因此,公钥加密算法都是基于一些目前仍然无解的数学问题,也称为单向陷门函数(One-way Trapdoor Function),如整数分解或离散对数。

        整数分解方案(Integer Factorization Scheme)就是基于大整数很难分解的事实,RSA 是此类算法的典型示例。

        大整数分解究竟有多难呢?我们可以使用两个质数的乘积来创建所谓的半质数。半质数是最难分解的,在使用传统计算机的情况下,要将它分解为两个质数的乘积可能要花费超过四千万亿年的时间,这甚至比宇宙的寿命还要长很多。所以,基于整数分解的加密算法目前还是比较安全的。

1.2 离散对数

        离散对数方案(Discrete Logarithm Scheme) 基于模运算中的问题。计算模函数的结果很容易,但是找到生成器(Generator) 的指数在计算上是不切实际的。换句话说,很难从结果中找到输入。离散对数正是目前仍然无解的数学问题之一,它也是一个单向陷门函数。

        例如,考虑以下等式:

        现在,在给定数字 9 的情况下,很难确定前面的方程中发现的结果为 2 (2 正是生成器 3 的指数)。在 Diffie-Hellman 密钥交换和数字签名算法中通常使用此难题。

        Diffie-Hellman 密钥交换过程是非对称密钥交换的典型形式,以 Whitfield Diffie 和 Martin Hellman 的名字命名。

1.3 椭圆曲线

        椭圆曲线算法(Elliptic Curve ALgorithm) 基于离散对数问题,但是,它是有限域上的椭圆曲线的代数。椭圆曲线是域上的代数三次曲线,可以通过以下公式定义。该曲线是非奇异的,这意味着它没有尖点或自相交。它具有两个变量 a 和 b,以及一个无穷大点。

        在这里,a 和 b 是整数,其值是定义椭圆曲线的域的元素。可以在实数、有理数、复数或有限域上定义椭圆曲线。出于加密目的,可使用质数有限域上的椭圆曲线代替实数。此外,质数应大于3 。

        通过改变 a 或 b 的值可以生成不同的曲线。

        基于椭圆曲线最常用的密码系统是椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm ECDSA) 和椭圆曲线密钥交换算法(Elliptic Curve Diffie-Hellman,ECDH)。 

 2. 公钥和私钥

        私钥(Private Key), 顾名思义,是随机生成的数字,该数字是保密的,并由用户私下保存。私钥需要受到保护,不得对该私钥进行未经授权的访问;否则,整个公钥加密方案都会受到威胁,因为私钥是用于解密消息的密钥。私钥的长度可以不同,具体取决于所使用算法的类型和类别。例如,在RSA中,通常使用 1024 位或 2048 位的密钥。1024 位的密钥大小不再被认为是安全的,因此建议至少使用 2048 位的密钥。

        公钥(Public Key) 可免费获得,并由私钥所有者发布。任何想要向公钥发布者发送加密消息的人都可以使用已发布的公钥对消息进行加密,然后将其发送给私钥的持有者。例如,A 有一对公钥和私钥,他可以将公钥发布出去,把私钥自己保存好。B 想要将消息发送给 A,他就可以使用 A 发布的公钥加密消息,然后将加密后的消息发送给 A,其他任何人都无法解密该消息,因为相应的私钥已由预期的接收者(A)安全地持有。接收到公钥加密的消息后,A 就可以使用私钥对消息进行解密。

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

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

相关文章

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展,各种大模型如雨后春笋一样涌出,逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…

neural-admixture:基于AI的快速基因组聚类

最近学习祖源分析方面的内容,发现已经有了GPU版的软件,可以几十倍地加快运算速度,推荐使用!小数据集的话家用显卡即可hold住,十分给力! ADMIXTURE 是常用的群体遗传学分析工具,可以估计个体的祖…

注册中心技术选型

优质博文:IT-BLOG-CN 市面上流行的开源注册中心很多,耳熟能详的有Eureka、Zookeeper、Nacos、Consul。我们在选型的时候也主要从这四个组件中进行筛选。下面就对我们内部的讨论内容进行整理: 第一个维度:开源公司的实力 Eureka…

InceptionV4 Pytorch 实现图片分类

一、目录结构 训练过程: 在训练集和测试集分类目录中放好待训练的分类图片(f1,f2,f3)运行模型训练代码,生成模型参数文件运行分类测试文件,设置待验证的图片路径,调用模型文件得出分类结果 二、模型构建代…

Auto-Unit-Test-Case-Generator -- java项目自动测试生成

0.Pre-预备知识: 0.1.Maven是什么? [by Maven是什么?有什么作用?Maven的核心内容简述_maven是干什么用-CSDN博客 ] 是Java 领域中最流行的自动化构建工具之一,Maven 作为 Java 项目管理工具,具有: 包管…

AI的基本使用

AI使用 一、网页端AI二、手机端AI三、AI提问指令大全四、AI绘画 一、网页端AI 讯飞星火网页版百度文心一言通义万相(主要用于生图)通义听悟(主要用于音频)通义智文(主要用于生文)腾讯文档里的智能助手&…

Laravel 中间件与事件应用教程

前言 在 Laravel 框架中,中间件(Middleware)和事件(Events)是两种强大的机制,用于处理 HTTP 请求和应用程序中的特定动作。它们各自有独特的应用场景和优势。本教程将详细介绍中间件和事件的基本概念、区别…

网络压缩之稀疏模型设计

通过网络架构的设计来达到减少参数量的效果。等一下 要跟大家介绍深度可分离卷积(depthwise separable convolution)。在讲这个方法之前,先复 习一下CNN。在 CNN 的这种卷积层里面,每一个层的输入是一个特征映射。如图1 所 示&…

Mysql——高可用集群部署

目录 一、源码编译mysql 二、mysql的主从复制 2.1、主从复制 2.2、延迟复制 2.3、慢查询日志 2.4、MySQL的并行复制 三、MySQL半同步模式 四、mysql高可用组复制 五、mysql-router 六、mysql高可用MHA 七、为MHA添加VIP功能 一、源码编译mysql 1、安装依赖 [rootm…

HX711—称重模块

1、简介 HX711 采用了海芯科技集成电路专利技术, 是一款专为高精度电子秤而设计的 24 位 A/D 转 换器芯片。 2、原理图 PCB参考设计原理图 3、模块驱动代码(固件库) 数据读取代码分析 HX711信号读取时序 初始化: 将 PD_SCK&…

C练手题--A snail enters a bar! 【7 kyu】

一、原题 链接:Training on A snail enters a bar! | Codewars Problem Description: A snail is crawling along a rubber band that has an initial length of x units. The snail moves at a constant speed of y units per minute. As the snail crawls from t…

upload-labs靶场通关(附靶场环境)

链接: https://pan.baidu.com/s/1GQP5zthh598A4Mp-WQM4vA 提取码: zovn 环境搭建 步骤一:将环境附件下载到phpstudy_pro\WWW下面修改名字为upload 步骤二:询问绑定地址 第一关 less-1 步骤一:上传一句话木马 步骤二:更改文件名…

昇腾 编程范式 - 矢量编程流水任务设计

昇腾 编程范式 - 矢量编程流水任务设计 flyfish 编程范式简单来说就是不同编程风格或方式的“套路”。按着套路走就可以。 矢量算子编程范式把算子的实现流程分为3个基本任务:CopyOut,Compute,copyout CopyIn负责数据搬入操作, Compute负责…

spring入门(一)spring简介

一、spring简介 Spring技术是JavaEE开发必备技能,企业开发技术选型命中率>90% spring能够简化开发,降低企业级开发的复杂性。框架整合,高效整合其他技术,提高企业级应用开发与运行效率。 主要学习&…

Leetcode3244. 新增道路查询后的最短距离 II

Every day a Leetcode 题目来源:3244. 新增道路查询后的最短距离 II 解法1:贪心 由于题目保证添加的边(捷径)不会交叉,从贪心的角度看,遇到捷径就走捷径是最优的。所有被跳过的城市都不可能再出现在最短…

从人机环境系统的角度看,自下而上和自上而下两种认知方式如何有机地结合使用?...

从具体的“态”到抽象的“势”,从感觉到认知是自下而上的,例如 GPT;反之,则是自上而下的,比如有经验的人。理性偏自下而上,神性(感觉)则自上而下。其中,“态”和“势”是…

[000-01-008].Seata案例应用

业务说明:这里我们创建三个服务,一个订单服务,一个库存服务,一个账户服务。当用户下单时,会在订单服务中创建一个订单,然后通过远程调用库存服务来扣减下单商品的库存;再通过远程调用账户服务来…

如何用命令行工作流做定制化 AI 文献回顾?

(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 千万不要把 AI 生成的结果,直接端出去给你的导师,甚至是投稿到出版社。 需求 我最近在 B 站发布了一个视频,叫做《AI…

Redis:Redis性能影响因素

这里写自定义目录标题 一、CPU对Redis的影响二、磁盘对Redis的影响三、网络对Redis的影响四、Swap对Redis的影响 一、CPU对Redis的影响 二、磁盘对Redis的影响 性能建议: 如果是热点场景,建议大家关闭rdb和aof。在SATA和SAS普通盘上,append…

【微服务】springboot 自定义注解+反射+aop实现动态修改请求参数

目录 一、前言 二、动态修改接口请求参数的场景 2.1 动态修改请求参场景汇总 2.1.1 数据格式标准化 2.1.2 安全需要 2.1.3 参数校验与默认值设定 2.1.4 数据隐私保护 2.1.5 适配不同客户端 2.1.6 统计与监控 2.1.7 高级功能特性 三、springboot 使用过滤器和拦截器动…