几种加密算法

news/2024/11/6 13:34:11/

一、概述
在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:

1、数据的保密性,防止用户的数据被窃取或泄露
2、保证数据的完整性,防止用户传输的数据被篡改
3、通信双方的身份确认,确保数据来源与合法的用户
而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。

二、对称加密
在加密传输中最初是采用对称密钥方式,也就是加密和解密都用相同的密钥。

对称加密过程如下:
1.对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方

2.接收方收到加密后的报文后,结合解密算法使用相同密钥解密组合后得出原始数据。

图示:

优点
是效率高,算法简单,系统开销小,适合加密大量数据。
缺点
安全性差
加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,或者利用第三方平台传递给对方,一旦这过程出现了密钥泄露,不怀好意的人就能结合相应的算法拦截解密出其加密传输的内容。
扩展性差
每对通信用户之间都需要协商密钥,n个用户的团体就需要协商n*(n-1)/2个不同的密钥,不便于管理;而如果都使用相同密钥的话,密钥被泄漏的机率大大增加,加密也就失去了意义。
常见的对称加密算法
DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。
3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。
AES:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。
Blowfish:Blowfish算法是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串。

三、非对称加密
非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥(不能公开)才能解密,反之亦然。N 个用户通信,需要2N个密钥。

用途
非对称密钥加密适合对密钥或身份信息等敏感信息加密,从而在安全性上满足用户的需求。

非对称加密过程
1.甲使用乙的公钥并结合相应的非对称算法将明文加密后发送给乙,并将密文发送给乙。
2.乙收到密文后,结合自己的私钥和非对称算法解密得到明文,得到最初的明文。

图示:

优点
具有比对称密钥加/解密方式更高的安全性,因为加密和解密用的是不同密钥,而且无法从一个密钥推导出另一个密钥,且公钥加密的信息只能用同一方的私钥进行解密。
缺点
1.非对称密钥加密的缺点是算法非常复杂,导致加密大量数据所用的时间较长,只适合对少量数据进行加密。而且由于在加密过程中会添加较多附加信息,使得加密后的报文比较长,容易造成数据分片,不利于网络传输。
2.无法确认公钥的来源合法性以及数据的完整性。如何确认我们接下来会说
常见算法包括:
RSA:RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。
DSA:数字签名算法,仅能用于签名,不能用于加解密。
DSS:数字签名标准,技能用于签名,也可以用于加解密。
ELGamal:利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。

四、单向加密
单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应(少量消息位的变化会引起信息摘要的许多位变化)。

用途
单向加密算法常用于提取数据指纹,验证数据的完整性、数字摘要、数字签名等等。

单向加密过程
1.发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。

2.接收方将用于比对验证的明文使用相同的单向加密算法进行加密,得出加密后的密文串。

3.将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。

图示:

常见算法

MD5、sha1、sha224等等

五、密钥交换
密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密

常见的密钥交换方式有下面两种:

1、公钥加密
将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用

2、Diffie-Hellman
DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。

DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。

如:

A 有p和g两个参数,A还有一个属于自己的私有参数x;
B 有p和g两个参数,A还有一个属于自己的私有参数y;
A和B均使用相同的加密算法计算其对应的值:value_A=p(x%g),value_B=p(y%g)
随后双方交换计算后的值,然后再分别使用自己的私有参数对去求次方,如:
A拿到value_B值后,对其求x平方得value_Bx=p(xy%g);
B拿到value_A值后,对其求y平方得value_Ay=p(xy%g);
最终得到的结果是一致的。
安全性

在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。

如何确认公钥的来源合法性?
答案:使用公钥证书

公钥基础设施(PKI)
公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合

用途
用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能

组成
签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。

公钥证书
公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。

CA(Certificate Authority)证书认证的流程
1.客户A准备好要传送的数字信息(明文)。**(准备明文) **

2.客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。**(准备摘要) **

3.客户A用CA的私钥(SK)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。**(用私钥对数字信息进行数字签名)  **

4.客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。**(生成密文) **

5.客户A用双方共有的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。**(非对称加密,用公钥对DES密钥进行加密)   **

6.银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。(用私钥对DES密钥解密)

7.银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。**(解密文)   **

8.银行B用双方共有的公钥(PK)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。**(用公钥解密数字签名) **

9.银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。**(对比信息摘要和信息) **

如何保证CA的公钥没有被篡改呢?
答案是没法保证CA的公钥没有被篡改。通常操作系统和浏览器会预制一些CA证书在本地。所以发送方应该去那些通过认证的CA处申请数字证书。这样是有保障的。

但是如果系统中被插入了恶意的CA证书,依然可以通过假冒的数字证书发送假冒的发送方公钥来验证假冒的正文信息。所以安全的前提是系统中不能被人插入非法的CA证书。


http://www.ppmy.cn/news/50188.html

相关文章

leetcode 1416. Restore The Array(恢复数组)

一台打印机没有把空格打印出来,以至于不知道打印出的 s 中到底有哪些数字。 现在知道数字的取值范围在1 ~ k, 数字开头不能是0. 返回可能的数字个数。取模1097. 思路: DP 假设dp[ i ]为 i ~ n位的s 所能组成的数字组合数。 从右到左遍历,…

人工智能包含哪些知识

人工智能是一个广泛的领域,它涉及多个学科和知识领域。以下是人工智能包含的一些知识: 计算机科学:人工智能的发展需要计算机科学中的许多概念和技术,如算法、数据结构、计算机体系结构、计算理论等。 数学:数学在人工…

4、RSA终端指令

RSA总结 加密算法,都是数学知识对称加密(传统加密算法)RSA(三个人的名字)非对称加密(现代加密算法) 原根欧拉函数、欧拉定理(费马小定理)模反元素 m^(e * d) mod n ≡ m迪菲赫尔曼密钥交换RSA算法 RSA: 拆解两个(大)质数的乘积很难!所以RSA想对安全.加密: M ^e % N C解密: C…

java: web应用中不经意的内存泄露

前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1、定义一个类App package com.cnblogs.yjmyzz.web.controller;import java.util.Date;public cla…

【数据挖掘】5分钟带你了解文本向量化的常见方式

5分钟带你了解文本向量化的常见方式 1. 独特编码模型2. 词袋模型3. TF-IDF模型4. N-gram模型5. Word2Vec模型参考资料文本向量化:将文本信息表示成能够表达文本语义的向量,是 用数值向量来表示文本的语义。 词嵌入(Word Embedding):一种将文本中的词转换成数字向量的方法,…

Elasticsearch REST API 文档管理

文章目录 创建文档路径参数常用查询参数示例响应说明 查询文档路径参数编辑查询参数示例 1响应说明示例2示例3 更新文档路径参数查询参数示例1示例2禁用noop mget 获取多个文档路径参数查询参数请求正文参数说明示例1响应结果示例2 删除文档路径参数查询参数示例1 开放式并发控…

Redis7

Redis之父安特雷兹 Redis7概述 Redis:Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内…

docker离线部署 升级

其它版本linux内核系统或许略有不同 下载docker版本包 https://download.docker.com/linux/static/stable/x86_64/centos部署版本 上传到服务器目录下,解压文件。 tar -xvf docker-XXXXXX.tgz将解压出来的docker文件内容移动到 /usr/bin/ 目录下,该命…