返回
首页>资讯

目前常用的加密体系有哪两种(数据加密方式有哪些?)

时间: 2023-03-24 09:15:24

目前常用的加密体系有哪两种

密钥密码体系和公钥密码体系,或者称对称加密体系与非对称加密体系。

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。

密钥分为两种:对称密钥与非对称密钥,所以密钥密码体系就分为两个领域,通用密钥体系和公用密钥体系。

数据加密方式有哪些?

对称加密:三重DES、AES、SM4等
非对称加密:RSA、SM2等
其他的保护数据隐私的方法还有同态加密、差分隐私、安全多方计算等
目前我们公司一直和上海安策信息合作的,安策信息研发了好几种数据加密工具,包括加密狗、加密机、动态口令、加密工具等百度也有很多相关资料。

常见加密类型及通信安全.md

[TOC]

** 本篇文章只是记录一些加密类型和常见算法,所用的并不是严谨的术语,而是使用日常用语以方便理解,当然都是参考各种资料后自己的理解,所以难免有理解偏差之处,欢迎指正。大神请绕路。不喜勿喷。 **

本篇文章将记录总结常见的加密类型及其算法,并最终得出常用的安全通信的方式

这里只指出各个名称的关键点,具体的名词解释就不谈了……

中间人攻击(Man-in-the-Middle Attack, MITM)就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

机密性针对的是防止对信息进行"未授权"的"读"。

完整性要面对的是防止或者至少是检测出"未授权"的"写"(对数据的改变)。

比如:

简言之就是确认消息发送方的身份是否真的是他所声称的身份。

比如:

本人认为抗抵赖性可以归结到身份验证中去。当然,只是个人观点了。

一般而言,同时满足了机密性(信息不被泄露,或泄露后对别人来说并没实际价值)、完整性(信息不被非法篡改或被篡改后可以检测到)和身份验证(和自己通信的人确实就是我认为和我正在通信的人)。就可以认为是安全通信了。

此处将抗抵赖性归结到身份验证中。

下面就来看看常见的一些加密类型满足哪些安全要素。

双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。

Internet Key Exchange(IKE) 互联网秘钥交换。此处简单提一下Diffie-Hellman-key-exchange。

http,ftp,smtp,telnet这些常见的协议本身并不直接支持加密传输数据。

此处假设A和B双方要生成秘钥,秘钥交换的大致过程如下:

双方协商好一个大素数p和一个生成数g,p和g是真正在互联网上传输的。双方协商好p和g之后计算如下:

整个过程中:

通信双方找一个双方都信可的机构,作为公正方。
这就类似于现实生活中的公安局颁发身份证,你认可公安局就得认可公安局发的身份证了。
这里的公正方就是CA(Certification Authority)了。请看下文:

上面说了既然CA是通信双方都信任的公正机构,那么找CA验证和自己通信的对方的证书的真伪就可以了。

CA将用户的基本信息和用户公钥生成特征码并用CA自己的私钥加密作为用户的证书。另一个用户想要辨别该证书真伪,只需用CA的公钥解密该证书,并对比特征码即可。

PKI(Public Key Infrastructure)----公钥基础设施,其核心就是CA了。关于具体的严谨的术语定义请自行科普。

感觉又跳坑里了……

其实,到这一步就真的没什么能保证的了……
互联网这么大,计算机这么多,谁知道和你网上谈话的是人还是计算机呢?

不扯了……

如果你非要保证万无一失,那么CA当然也提供付费服务来尽力为你保证安全了:

自己辛辛苦苦搞到手的私钥丢失怎么办,被人窃取怎么办?

这样一层一层想下去……会疯掉的………………
总之,还是有风险的……目前大概没有什么可以万无一失的策略吧……

以上的加密类型并没有一种同时满足了机密性、完整性和身份验证这三个安全特征的?

这么多加密算法、加密类型。怎么确保通信是“安全的”的呢?

以下所说都是基于CA以及CA自己的证书是可信的基础之上的。还是以A和B通信为例:

虽然同时满足了机密性、完整性和身份验证三个安全因素。
但这个过程有点复杂了,还要借助于IKE协议,非对称加密的代价也是很大。

此处还是以A向B发送信息为例:

这个过程并不依赖于IKE协议生成对称密钥。
真正的对称密钥是加密后附加在消息体中的。

开发中常见的加密方式及应用

开发中常见的加密方式及应用

一、base64

简述:Base64是网络上最常见的用于传输8Bit 字节码 的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。所有的数据都能被编码为并只用65个字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )编码后的数据~=编码前数据的4/3,会大1/3左右(图片转化为base64格式会比原图大一些)。

应用:Base64编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一 标识符 (一般为128-bit的UUID)编码为一个字符串,用作HTTP 表单 和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制 数据编码 为适合放在URL(包括隐藏 表单域 )中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

命令行进行Base64编码和解码

编码:base64 123.png -o 123.txt

解码:base64 123.txt -o test.png -D Base64编码的原理

原理:

1)将所有字符转化为ASCII码;

2)将ASCII码转化为8位二进制;

3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;

4)统一在6位二进制前补两个0凑足8位;

5)将补0后的二进制转为十进制;

6)从Base64编码表获取十进制对应的Base64编码;

Base64编码的说明:

a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。

b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。

c.不断进行,直到全部输入数据转换完成。

d.如果最后剩下两个输入数据,在编码结果后加1个“=”;

e.如果最后剩下一个输入数据,编码结果后加2个“=”;

f.如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

二、HASH加密/单向散列函数

简述:Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度(32个字符)的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。对用相同数据,加密之后的密文相同。 常见的Hash算法有MD5和SHA。由于加密结果固定,所以基本上原始的哈希加密已经不再安全,于是衍生出了加盐的方式。加盐:先对原始数据拼接固定的字符串再进行MD5加密。

特点:

1) 加密 后密文的长度是定长(32个字符的密文)的

2)如果明文不一样,那么散列后的结果一定不一样

3)如果明文一样,那么加密后的密文一定一样(对相同数据加密,加密后的密文一样)

4)所有的加密算法是公开的

5)不可以逆推反算(不能根据密文推算出明文),但是可以暴力 破解 ,碰撞监测

原理:MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要。

1)数据填充

对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。

填充方法:在消息后面进行填充,填充第一位为1,其余为0。

2)添加信息长度

在第一步结果之后再填充上原消息的长度,可用来进行的存储长度为64位。如果消息长度大于264,则只使用其低64位的值,即(消息长度 对264取模)。

在此步骤进行完毕后,最终消息长度就是512的整数倍。

3)数据处理

准备需要用到的数据:

4个常数:A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;

4个函数:F(X,Y,Z)=(X & Y) | ((~X) & Z);G(X,Y,Z)=(X & Z) | (Y & (~Z));H(X,Y,Z)=X ^ Y ^ Z;I(X,Y,Z)=Y ^ (X | (~Z));

把消息分以512位为一分组进行处理,每一个分组进行4轮变换,以上面所说4个常数为起始变量进行计算,重新输出4个变量,以这4个变量再进行下一分组的运算,如果已经是最后一个分组,则这4个变量为最后的结果,即MD5值。

三、对称加密

经典算法:

1)DES数据加密标准

DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

2)3DES使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)

3)AES高级加密标准
如图,加密/解密使用相同的密码,并且是可逆的

四、非对称加密

特点:

1)使用公钥加密,使用私钥解密

2)公钥是公开的,私钥保密

3)加密处理安全,但是性能极差
经典算法RSA:

1)RSA原理

(1)求N,准备两个质数p和q,N = p x q

(2)求L,L是p-1和q-1的最小公倍数。L = lcm(p-1,q-1)

(3)求E,E和L的最大公约数为1(E和L互质)

(4)求D,E x D mode L = 1

五、数字签名

原理以及应用场景:

1)数字签名的应用场景

需要严格验证发送方身份信息情况

2)数字签名原理

(1)客户端处理

对"消息"进行HASH得到"消息摘要"

发送方使用自己的私钥对"消息摘要"加密(数字签名)

把数字签名附着在"报文"的末尾一起发送给接收方

(2)服务端处理

对"消息" HASH得到"报文摘要"

使用公钥对"数字签名"解密

对结果进行匹配

六、数字证书

简单说明:

证书和驾照很相似,里面记有姓名、组织、地址等个人信息,以及属于此人的公钥,并有认证机构施加数字签名,只要看到公钥证书,我们就可以知道认证机构认证该公钥的确属于此人。

数字证书的内容:

1)公钥

2)认证机构的数字签名

证书的生成步骤:

1)生成私钥openssl genrsa -out private.pem 1024

2)创建证书请求openssl req -new -key private.pem -out rsacert.csr

3)生成证书并签名,有效期10年openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

4)将PEM格式文件转换成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der

5)导出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

iOS开发中的注意点:

1)在iOS开发中,不能直接使用PEM格式的证书,因为其内部进行了Base64编码,应该使用的是DER的证书,是二进制格式的;

2)OpenSSL默认生成的都是PEM格式的证书。

七、https

HTTPS和HTTP的区别:

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

1)https协议需要到ca申请证书,一般免费证书很少,需要交费。

2)http是 超文本传输协议 ,信息是明文传输,https则是具有 安全性 的 ssl 加密传输协议。

3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的 网络协议 ,比http协议安全。

5)SSL:Secure Sockets Layer安全套接字层;用数据加密(Encryption)技术,可确保数据在网络上传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape 浏览器 即可支持SSL。目前版本为3.0。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

常见的加密算法、原理、优缺点、用途

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

而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。

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

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

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

图示:

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

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

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

图示:

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

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

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

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

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

图示:

MD5、sha1、sha224等等

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

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

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

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

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

如:

安全性

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

答案:使用公钥证书

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

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

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

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

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证书。

END

声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

猜你喜欢

本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有

邮箱:daokedao3713@qq.com

备案号:鲁ICP备2022001955号-4

网站地图