对称密码学

news2024/9/20 0:25:26

1. 使用OpenSSL 命令行

        在 Ubuntu Linux Distribution (发行版)中, OpenSSL 通常可用。当然,如果不可用的话,也可以使用下以下命令安装 OpenSSL:

$ sudo apt-get install openssl

安装完后可以使用以下命令检查 OpenSSL 版本:

$ openssl version

其输出将如下所示:

OpenSSL 1.0.2 1 Mar 2016

2. 密码学简介

        密码学(Cryptography) 是在面对敌手时确保信息安全的科学。这里有一个前提设想是,敌手(或者说对手) 可以使用无限的资源。密码(Ciphers) 是用于加密或解密数据的算法,如果对手拦截到该数据,但是无法解密(Decryption),那么该数据就是无意义的,而解密需要密钥。

        密码学主要用于提供保密服务,它本身不能被认为是一个完整的解决方案,而是在更广泛的安全系统中解决安全问题的关键组成部分。例如,保护区块链生态系统需要许多不同的密码学原语,如哈希函数、对称密钥密码学、数字签名和公共密钥密码学等。

        除保密服务外,加密技术还提供其它安全服务,如完整性(Integrity) 、不可否认性(Non-Repudiation) 和 身份验证(Authentication) --包括实体身份验证和数据源身份验证。另外,它还提供可追责性(Accountability) ,这是许多安全系统的要求。可追责性可以解决电子现金双重支付的问题。 

3. 密码学的数学基础

3.1 集合

集合(Set,记为 S) 就是将不同的对象放在一起,例如 S= {1,2,3,4,5}。

3.2 群

群(Group,记为 G)是定义了一个二元运算的交换集合,该运算组合了集合的两个元素。群运算是分闭的,并全对于已定义的标识元素来说是可结合的。另外,集合中的每个元素都有一个逆(Inverse)。

具体来说,G 中的每个序偶(a,b)通过运算生成 G 中的元素(a,b),并满足以下公理。

封闭性:封闭(Closure)意味着如果元素 a 和 b 在集合中,则对元素执行运算后得到的元素也将在集合中,即如果 a 和 b 都属于 G,则 a.b 也属于 G。

结合律:结合(Associative) 意味着元素的分组不分影响运算的结果。例如,对于 G 中的任意元素a,b,c,都有:

(a.b).c=a.(b.c)

单位元:G 中存在一个元素 e,对于任意元素 都有:

a.e=e.a=a

逆元:对于 G 中的任意元素 a,都存在一个元素 a' G,使得下式成立:

a.a' = a'.a  =e

3.3 域

        域(Field,记为 F) 是一个包含加法和乘法群的集合。更确切地说,集合中的所有元素都构成一个加法和乘法群。它满足加法运算和乘法运算的特定公理(即上面介绍的封闭性、结合律、单位元和逆元)。

4. 密码学模型

下图显示了通用密码学模型

        在上图中,P 表示纯文本( Plaintext), E 表示加密(Encryption),C 表示密文(Ciphertext),D 表示解密(Decryption)。基于该模型,对实体、发送者、接收者、对手、密钥和信道等概念的解释如下:

 实体:发送、接收数据或执行运算的个人或系统。

发送者:发出数据的实体

接收者:接收数据的实体

对手:试图绕开或破解安全服务的实体。

密钥:用于加密或解密其他数据的数据。

信道:为实体之间的沟通提供一种媒介。

5. 现代信息安全的基本要求

现代信息安全的基本要求包括 5 项,即保密性、完整性、可认证性、不可否认性和可追责性。

5.1 保密性

        保密性(Confidentiality) 是指应确保信息仅对授权实体可用,防止将信息泄露给未经授权的人,这涉及加密和解密技术的应用。

5.2 完整性

        完整性(Integrity) 是指应确保仅授权实体能够修改信息,防止信息出现未经授权的篡改,这涉及消息认证码和数字签名等技术的应用。

5.3 可认证性

        认证(Authentication) 可确保有关实体的身体或消息的有效性,保证信息来自正确的发送者,这涉及消息认证和数字签名等技术的应用。

6. 密码学原语

        密码学原语(Cryptographic Primitives) 是安全协议或系统的基本构建块。

        所谓安全协议(Security Protocol) 就是指要采取的一组步骤,它通过利用适当的安全机制来实现所需的安全目标。目前正在使用的安全协议有多种类型,如认证协议、不可否认协议和密钥管理协议等。

         密码学原语的分类如下图所示:

7. 对称密码学介绍

7.1 流密码

7.2 分组密码

8. 分组密密码加密模式

        分组密码的加密工作模式允许使用同一个分组密码对多于一块的数据进行加密,并保证其安全性。

        在分组加密模式下,根据使用的密码类型,将明文分为固定长度的块。然后,将加密函数应用于每个块。

        8.1 电子密码本

        电子密码本(Electronic Code Book,ECB)是一种基本的操作模式。在该模式中,通过将加密算法一对一地应用于每个明文块来生成加密数据。这是最直接的加密模式,但是由于它不太安全并且可以泄露信息,因此在实践中已不建议使用。

        分组密码的电子密码本模式如下图所示:

        在上图中可以看到,我们提供了明文 P 作为分组密码加密函数的输入,再加上密钥 KEY,共同产生密文 C 作为输出。

 8.2 密码块链接

        在密码块链接(Cipher Block Chaining,CBC)模式下,每个明文块都与先前加密的块进行 XOR 运算。CBC 模式使用初始化向量(Initialization Vector,IV) 加密第一个块。建议随机选择 IV,如下图所示:

8.3 计数器模式

        计数器 (Counter,CTR) 模式有效地使用了分组密码作为流密码。在这种情况下,将提供一个唯一的随机数,该随机数与计数器值连接以生成密钥流,如下图所示:

以下是有关如何使用 AES 进行加密和解密的 OpenSSL 示例:

openssl enc -aes-256-cbc -in message.txt -out message.bin
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

OpenSSL 工具可用于下图显示的所有密码: 

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

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

相关文章

深度学习基础案例4--构建CNN卷积神经网络实现对猴痘病的识别(测试集准确率86.5%)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 下一周会很忙,更新可能不及时,请大家见谅这个项目我感觉是一个很好的入门案例,但是自己测试的时候测试集准确率只比较…

mcu loader升级固件原理与实现

1 mcu loader升级固件原理 mcu 固件有两部分,如下图所示,一部分是 loader.bin,一部分是 app.bin,将两部分的固件合并在一起烧录进 mcu 的 flash 当中。mcu 上电进入loader 模式执行 loader.bin 部分的程序,然后读取 fl…

前端踩坑记录:javaScript复制对象和数组,不能简单地使用赋值运算

问题 如图,编辑table中某行的信息,发现在编辑框中修改名称的时候,表格中的信息同步更新。。。 检查原因 编辑页面打开时,需要读取选中行的信息,并在页面中回显。代码中直接将当前行的数据对象赋值给编辑框中的表单对…

51单片机——I2C总线

1、I2C总线简介 I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线 两根通信线:SCL(Serial Clock)、SDA(Serial Data) 同步、半双工,带数据应答 通用的I2C总线&#…

Linux基础(包括centos7安装、linux基础命令、vi编辑器)

一、安装CentOS7 需要:1、VMware Workstation;2、CentOS7镜像 1、安装镜像 2、虚拟机配置 开启虚拟机,鼠标从vm中移出来用快捷键ctrlalt 点击开始安装,设置密码,等待安装完成,,重启。 3、注意事项 如果没…

通往RAG之路(二):版面结构检测方法介绍

一、基于yolov5的版面结构检测 AG系统搭建过程中,版面分析是不可缺少的一个步骤,本文介绍用yolov5进行版面结构信息识别,后续再搭配表格识别、公式识别、文字识别等模块进行版面还原,完成PDF结构化输出。 1.1、环境搭建 conda c…

解决方案:在autodl环境下为什么已安装torch打印出来版本号对应不上

文章目录 一、现象二、解决方案 一、现象 平台:autodl 镜像:PyTorch 2.0.0 Python 3.8(ubuntu20.04) Cuda 11.8 GPU:A40(48GB) * 1 CPU:15 vCPU AMD EPYC 7543 32-Core Processor 内存:80GB 安装torch:1.13.0环境&a…

深入理解指针(6)

目录&#xff1a; 1.字符指针变量 2.数组指针变量 3.二维数组传参本质 4.函数指针变量 5.函数指针的应用 1.字符指针变量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {char a w;char* p &a;printf("%p ", p);} 当我们想取出…

UE 【材质编辑】自定义材质节点

使用UE的材质编辑器&#xff0c;蓝图提供了大量的节点函数&#xff1a; 实际上&#xff0c;这是一段封装好的包含一串HLSL代码的容器。打开“Source/Runtime/Engine/Classes/Material”&#xff0c;可以看到很多不同节点的头文件&#xff1a; 照葫芦画瓢 以UMaterialExpressi…

ORM 编程思想

一、ORM简介 对象关系映射&#xff08;英语&#xff1a;Object Relational Mapping&#xff0c;简称ORM&#xff0c;或 O/R mapping&#xff09;是一种为了解决面向对象语言与关系数据库存在的 互不匹配的现象。 二、实体类 实体类就是一个定义了属性&#xff0c;拥有getter、…

51单片机——存储器

1、存储器简介 RAM优点存储速度非常快&#xff0c;缺点成本高&#xff0c;掉电丢失数据。 ROM优点掉电不丢失数据&#xff0c;缺点存储速度比较慢。 所以在实际应用中&#xff0c;我们都是采用两者结合的方式。程序运行时&#xff0c;数据存储在RAM中&#xff0c;需…

自己开发完整项目一、登录功能-04(集成jwt)

一、说明 前面文章我们写到了通过数据库查询出用户信息并返回&#xff0c;那么在真实的项目中呢&#xff0c;后端是需要给前端返回一个tocken&#xff0c;当前端通过登录功能认证成功之后&#xff0c;我们后端需要将用户信息和权限整合成一个tocken返回给前端&#xff0c;当前端…

【Python技术】使用langchain、fastapi、gradio生成一个简单的智谱AI问答界面

前几天&#xff0c;智谱AI BigModel开放平台宣布&#xff1a;GLM-4-Flash 大模型API完全免费了&#xff0c;同时开启了GLM-4-Flash 限时免费微调活动。对想薅免费大模型羊毛的个人玩家&#xff0c;这绝对是个好消息&#xff0c;我们不仅可以免费使用BigModel开放平台上的GLM-4-…

产品入门篇笔记

产品和产品经理 产品&#xff1a;解决某个问题的物品&#xff0c;无形、有形都可以。 产品经理&#xff1a;简单而言就是想清楚怎么做的人&#xff0c;需要想清楚产品怎么设计&#xff0c;要分析什么用户、在什么场景、怎么样的需求&#xff1b;然后考虑产品的功能、优势、价值…

LeetCode_sql_day20(1398.购买了产品A和产品B却没有购买产品C的顾客)

描述: Customers 表&#xff1a; ------------------------------ | Column Name | Type | ------------------------------ | customer_id | int | | customer_name | varchar | ------------------------------ customer_id 是这张表中具有唯一…

李沐讲座:大语言模型的实践经验和未来预测 | 上海交大

本文简介 本博客记录了李沐关于语言模型与职业生涯分享的精彩讲座&#xff0c;涵盖了大语言模型的核心要素、工程实践中的挑战&#xff0c;以及演讲者个人职业生涯中的心得体会。 李沐简介 李沐&#xff08;Mu Li&#xff09;是一位在人工智能与深度学习领域具有广泛影响力的…

电感的分类

电感作为电子电路中的重要元件&#xff0c;具有多种分类方式&#xff0c;每种类型的电感都有其独特的优缺点。以下是对电感分类及其优缺点的详细分析&#xff1a; 一、按工作频率分类 高频电感&#xff1a;适用于高频电路&#xff0c;具有较高的自谐振频率和较低的损耗。 优点…

【学习笔记】 陈强-机器学习-Python-Ch13 提升法

系列文章目录 监督学习&#xff1a;参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归&#xff08;SAheart.csv&#xff09; 【学习笔记】 陈强-机器学习-Python-…

【python计算机视觉编程——图像聚类】

python计算机视觉编程——图像聚类 6.图像聚类6.1 K-means聚类6.1.2 图像聚类6.1.3 在主成分上可视化图像6.1.4 像素聚类 6.2 层次聚类6.3 谱聚类 6.图像聚类 6.1 K-means聚类 from scipy.cluster.vq import * import numpy as np from pylab import * matplotlib.rcParams[f…

第二篇——勾股定理:为什么在西方教毕达哥拉斯定理?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 数学大厦的建立以及与自然科学的逻辑关系&#xff0c;以及他们的边界在这…