对称密码学

2024-09-01 19:12
文章标签 密码学 对称

本文主要是介绍对称密码学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1127806

相关文章

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

VSC++: 括号对称比较

括号的使用规则:大括号,中括号,小括号{[()]};中括号,小括号[()];小括号();大括号、中括号、小括号、中括号、小括号、大括号{[()][()]};大括号,中括号,小括号,小括号{[(())]};大括号,中括号,小括号,小括号{[()()]};小括号不能嵌套,小括号可连续使用。 {[]}、{()}、([])、({})、[{}]、{}、[]、{[}]、[(])都属非法。 char aa[

NISP | 密码学

关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 通过上一章的学习,我们知道了,网络安全的 CIA 模型,而本期学习的“密码学”,则能为 CIA 模型提供很好的技术支持: 面临的攻击威胁所破坏的信息安全属性解决问题所采用的密码学技术截获(泄露信息)机密性对称密码和非对称密码篡改(修改信息)完整性哈希函数、数字签名、 对称密码和非对称密码伪造(伪造信息来源)真实

RS485差分信号不对称

在RS485总线通信中,差分信号不对称的问题时常出现,尤其是在总线未接从机设备的情况下。这一问题不仅影响通信质量,还可能导致信号传输错误。通过对实际波形、芯片手册及电路的深入分析,可以找出引发差分信号不对称的根本原因,并采取相应的解决措施。 问题描述 在RS485通信测试中,当总线上没有从机设备连接时,观察到RS485差分信号(A、B)关于地(GND)不对称。理想情况下,RS485的差分信

对称的二叉树 java实现

题目描述: 请实现一个函数,用来判断一棵二叉树是不是对称的,如果一棵二叉树和他的镜像是一样的,那么它是对称的; 解题思路:首先 理解镜像的概念,进行就是一棵二叉树左右节点反转过后形成的二叉树和原来的二叉树是一样的。这道题目中判断条件是使用和元二叉树的镜像相同,那么最low的方法是对原二叉树进行重构,重构后的二叉树和原二叉树进行比较,相同即是对称,不同就是不对称喽。那么这种方法需要额外空间的,我

公钥密码学

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

数据结构:(LeetCode101)对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3]输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3]输出:false 提示: 树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100 进阶:你可以运用递归和迭

判断一棵二叉树是否为对称树之java实现

package com.cb.java.algorithms.jianzhioffer.tree;public class SymmetricTree {class TreeNode {int data; // 数据域TreeNode left;// 左子节点TreeNode right; // 右子节点public TreeNode(int data) {this.data = data;}}p

Leetcode JAVA刷刷站(101)对称二叉树

一、题目概述 二、思路方向         在Java中,要检查一个二叉树是否是轴对称的(也称为镜像对称的),你可以通过递归地比较树的左子树和右子树是否镜像对称来实现。轴对称的二叉树意味着树的左子树和右子树关于根节点对称,即左子树的每个节点都与右子树中相应位置的节点镜像对称。 三、代码实现   class TreeNode { int val; TreeNode left;