导航:首页 > 源码编译 > 不属于目前常见的加密算法

不属于目前常见的加密算法

发布时间:2023-04-10 05:09:40

‘壹’ https交互过程

在这里整理一下最近这两天整理的https的相关知识。

大家都知道要使用https,需要在网站的服务器上配置https证书(一般是nginx,或者tomcat),证书可以使用自己生成,也可以向专门的https证书提供商进行购买。这两种的区别是自己生成的证书是不被浏览器信任的,所以当访问的时候回提示不安全的网站,需要点击信任之后才能继续访问

自己生成的

而购买的https证书会提示安全

DV,OV

EV

这是因为浏览器中预置了一些https证书提供商的证书,在浏览器获取到服务器的https证书进行验证的时候就知道这个https证书是可信的;而自己生成的证书,浏览器获取到之后无法进行验证是否可信,所以就给出不安全的提示。

下面对具体的一些知识点进行介绍

1. 什么是https

https简单的说就是安全版的http,因为http协议的数据都是明文进行传输的,所以对于一些敏感信息的传输就很不安全,为了安全传输敏感数据,网景公司设计了SSL(Secure Socket Layer),在http的基础上添加了一个安全传输层,对所有的数据都加密后再进行传输,客户端和服务器端收到加密数据后按照之前约定好的秘钥解密。

2. 加密和解密

Https的发展和密码学的发展是分不开的。大家应该知道加密方式可以大体分为对称加密和非对称加密(反正我就知道这两种)

对称加密,就是加密和解密都是用同一个秘钥,这种方式优点就是速度快,缺点就是在管理和分配秘钥的时候不安全。

非对称加密算法,非对称加密有一个秘钥对,叫做公钥和私钥,私钥自己持有,公钥可以公开的发送给使用的人。使用公钥进行加密的信息,只有和其配对的私钥可以解开。目前常见的非对称加密算法是RSA,非对称的加密算法的优点是安全,因为他不需要把私钥暴露出去。

在正式的使用场景中一般都是对称加密和非对称加密结合使用,使用非对称加密完成秘钥的传递,然后使用对称秘钥进行数据加密和解密

3. https证书的申请流程

1 在服务器上生成CSR文件(证书申请文件,内容包括证书公钥、使用的Hash算法、申请的域名、公司名称、职位等信息)

可以使用命令在服务器上生成;也可以使用线上的工具进行生成,线上的工具会把公钥加入到CSR文件中,并同时生成私钥。

CSR文件内容

2 把CSR文件和其他可能的证件上传到CA认证机构,CA机构收到证书申请之后,使用申请中的Hash算法,对部分内容进行摘要,然后使用CA机构自己的私钥对这段摘要信息进行签名,

CA机构进行签名

3 然后CA机构把签名过的证书通过邮件形式发送到申请者手中。

4 申请者收到证书之后部署到自己的web服务器中。下面会在写一篇关于部署的文章

当然这是不通过CA代理机构进行申请的流程,现在网上有好多CA的代理机构,像腾讯云,阿里云都可以申请https证书,流程都差不多。

阿里云申请证书流程

4. 客户端(浏览器)和服务器端交互流程

客户端服务端交互

client Hello,客户端(通常是浏览器)先向服务器发出加密通信的请求

(1) 支持的协议版本,比如TLS 1.0版。

(2) 一个客户端生成的随机数 random1,稍后用于生成"对话密钥"。

(3) 支持的加密方法,比如RSA公钥加密。

(4) 支持的压缩方法。

服务器收到请求,然后响应 (server Hello)

(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。

(2) 一个服务器生成的随机数random2,稍后用于生成"对话密钥"。

(3) 确认使用的加密方法,比如RSA公钥加密。

(4) 服务器证书。

证书内容

证书内容

客户端收到证书之后会首先会进行验证

验证流程

我们知道CA机构在签发证书的时候,都会使用自己的私钥对证书进行签名

证书里的签名算法字段 sha256RSA 表示,CA机构使用sha256对证书进行摘要,然后使用RSA算法对摘要进行私钥签名,而我们也知道RSA算法中,使用私钥签名之后,只有公钥才能进行验签。

如果我们使用的是购买的证书,那么很有可能,颁发这个证书的CA机构的公钥已经预置在操作系统中。这样浏览器就可以使用CA机构的公钥对服务器的证书进行验签。确定这个证书是不是由正规的CA机构颁发的。验签之后得到CA机构使用sha256得到的证书摘要,然后客户端再使用sha256对证书内容进行一次摘要,如果得到的值和验签之后得到的摘要值相同,则表示证书没有被修改过。

如果验证通过,就会显示上面的安全字样,如果服务器购买的证书是更高级的EV类型,就会显示出购买证书的时候提供的企业名称。如果没有验证通过,就会显示不安全的提示。

生成随机数

验证通过之后,客户端会生成一个随机数pre-master secret,然后使用证书中的公钥进行加密,然后传递给服务器端

PreMaster secret

PreMaster Secret是在客户端使用RSA或者Diffie-Hellman等加密算法生成的。它将用来跟服务端和客户端在Hello阶段产生的随机数结合在一起生成 Master Secret。在客户端使用服务端的公钥对PreMaster Secret进行加密之后传送给服务端,服务端将使用私钥进行解密得到PreMaster secret。也就是说服务端和客户端都有一份相同的PreMaster secret和随机数。

PreMaster secret前两个字节是TLS的版本号,这是一个比较重要的用来核对握手数据的版本号,因为在Client Hello阶段,客户端会发送一份加密套件列表和当前支持的SSL/TLS的版本号给服务端,而且是使用明文传送的,如果握手的数据包被破解之后,攻击者很有可能串改数据包,选择一个安全性较低的加密套件和版本给服务端,从而对数据进行破解。所以,服务端需要对密文中解密出来对的PreMaster版本号跟之前Client Hello阶段的版本号进行对比,如果版本号变低,则说明被串改,则立即停止发送任何消息。

pre-master secret

服务器收到使用公钥加密的内容,在服务器端使用私钥解密之后获得随机数pre-master secret,然后根据radom1、radom2、pre-master secret通过一定的算法得出session Key和MAC算法秘钥,作为后面交互过程中使用对称秘钥。同时客户端也会使用radom1、radom2、pre-master secret,和同样的算法生成session Key和MAC算法的秘钥。

生成session Key的过程中会用到PRF(Pseudorandom Function伪随机方法)来生成一个key_block,然后再使用key_block,生成后面使用的秘钥。

key_block = PRF(SecurityParameters.master_secret,"key expansion",SecurityParameters.server_random +SecurityParameters.client_random);

PRF是在规范中约定的伪随机函数

在信息交互过程中用到的秘钥有6个分别是。客户端和服务器端分别使用相同的算法生成。

秘钥名称秘钥作用

client_write_MAC_key[SecurityParameters.mac_key_length]客户端发送数据使用的摘要MAC算法

server_write_MAC_key[SecurityParameters.mac_key_length]服务端发送数据使用摘要MAC算法

client_write_key[SecurityParameters.enc_key_length]客户端数据加密,服务端解密

server_write_key[SecurityParameters.enc_key_length]服务端加密,客户端解密

client_write_IV[SecurityParameters.fixed_iv_length]初始化向量,运用于分组对称加密

server_write_IV[SecurityParameters.fixed_iv_length]初始化向量,运用于分组对称加密

然后再后续的交互中就使用session Key和MAC算法的秘钥对传输的内容进行加密和解密。

具体的步骤是先使用MAC秘钥对内容进行摘要,然后把摘要放在内容的后面使用sessionKey再进行加密。对于客户端发送的数据,服务器端收到之后,需要先使用client_write_key进行解密,然后使用client_write_MAC_key对数据完整性进行验证。服务器端发送的数据,客户端会使用server_write_key和server_write_MAC_key进行相同的操作。

链接:https://www.jianshu.com/p/b0b6b88fe9fe

‘贰’ 目前常用的加密方法有

目前常用的加密方法有什么带旅如下:
1、不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算拿行滚法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。
2、其中SHA后面的数字表示的是加密后的字符消余串长度,SHA1默认会产生一个160位的信息摘要。

‘叁’ 目前常用的加密方式主要有哪两种

1. 目前常用的加密方式主要有对称加密和非对称加密两种。

2. 对称加密指的是加密和解密使用相同的密钥,常见的对称加密算法如DES、AES等。
它的优点是加密解密速度快,缺点是密钥的传输难度大,容首缓易被破解。

非对称加密指的是加密和解密使用不同的密钥,常见的非对称加密算法如RSA、ECC等者盯模。
它的优点是安全性高,缺点则腊是加密解密速度慢。

3. 除了对称加密和非对称加密,还有一种哈希算法,它是将明文转换为固定长度的密文,不可逆的加密方式。
常见的哈希算法如MD5、SHA等。
哈希算法主要用于校验数据的完整性,一般不用于加密解密。

‘肆’ 目前常用的加密方法主要有哪两种

私有密钥加密和公开密钥加密。加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,到2022年常用的加密方法主要有私有密钥加密和公开密钥加密两种,按照网络层次的不同,数据加密方式划分,主要有链路加密、节点加密、端到端的加密三种。

‘伍’ 密码体制中,加密算法一般分为哪几种

古典加密算法分为替代算法和置换移位法。

1、替代算法

替代算法用明文的字母由其他字母或数字或符号所代替。最着名的替代算法是恺撒密码。凯撒密码的原理很简单,其实就是单字母替换。

例子:

明文:abcdefghijklmnopq

密文:defghijklmnopqrst

2、置换移位法

使用置换移位法的最着名的一种密码称为维吉尼亚密码。它以置换移位为基础的周期替换密码。

在维吉尼亚密码中,加密密钥是一个可被任意指定的字符串。加密密钥字符依次逐个作用于明文信息字符。明文信息长度往往会大于密钥字符串长度,而明文的每一个字符都需要有一个对应的密钥字符,因此密钥就需要不断循环,直至明文每一个字符都对应一个密钥字符。

其他常见的加密算法

1、DES算法是密码体制中的对称密码体制,把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。

2、3DES是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高。

3、RC2和RC4是对称算法,用变长密钥对大量数据进行加密,比DES快。

4、IDEA算法是在DES算法的基础上发展出来的,是作为迭代的分组密码实现的,使用128位的密钥和8个循环。

5、RSA是由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法。

6、DSA,即数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。

7、AES是高级加密标准对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael算法。

阅读全文

与不属于目前常见的加密算法相关的资料

热点内容
单片机的功能模块 浏览:771
安卓手机如何录制视频长时间 浏览:285
安全问题app哪个好 浏览:445
压缩水会变冰吗 浏览:526
小说配音app哪个靠谱 浏览:820
编译iso 浏览:944
照片生成pdf格式 浏览:194
病历转pdf 浏览:835
云服务器配硬件 浏览:978
服务器10k什么意思 浏览:21
pdfeditor汉化 浏览:884
新科学pdf 浏览:746
现在还有c语言编译吗 浏览:675
哪里买到单片机 浏览:480
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:372
硬盘加密时出现的问题 浏览:61
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:4