MD5 SHA1 aes rsa

MD5和SHA1是2种加密算法,用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改的.

它可以帮你验证从网上下载下来的windows7安装程序是否与发布人发布的东西完全一致,也就是帮助你验证这个程序有没有经过他人(非发布人)的修改。SHA1是2种加密算法,用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改的.

它可以帮你验证从网上下载下来的windows7安装程序是否与发布人发布的东西完全一致,也就是帮助你验证这个程序有没有经过他人(非发布人)的修改。

加密:公钥负责加密,私钥负责解密

同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证

SSL证书(HTTPS)背后的加密算法

https://blog.csdn.net/njxw1108/article/details/87075674
image.png

密钥交换算法,用于决定客户端与服务器之间在握手的过程中如何认证,用到的算法包括RSA,Diffie-Hellman,ECDH,PSK等

加密算法,用于加密消息流,该名称后通常会带有两个数字,分别表示密钥的长度和初始向量的长度,比如DES 56/56, RC2 56/128, RC4 128/128, AES 128/128, AES 256/256

报文认证信息码(MAC)算法,用于创建报文摘要,确保消息的完整性(没有被篡改),算法包括MD5,SHA等。

PRF(伪随机数函数),用于生成“master secret”。

基于TLS协议的;

使用ECDHE、RSA作为密钥交换算法;

加密算法是AES(密钥和初始向量的长度都是256);

MAC算法(这里就是哈希算法)是SHA。

aes/des加密速度快,适合大量数据,des容易破解,一般用3重des,后来又出现了更快更安全的aes
rsa是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的网络上公开,也能保证安全
常见情况是双方用rsa协商出一个密钥后通过aes/3des给数据加密
 

   AES相比同类对称加密算法速度算是非常快,比如在有AES-NI的x86服务器至少能达到几百M/s的速度。安全性在可预见的未来是基本等同的,因为即使是128位也足够复杂无法被暴力破解。现在112位密码还在商业应用,而128位是112位的几万倍,所以在实务中用128位比较划算(稍节约资源)。

    AES256比128大概需要多花40%的时间,用于多出的4轮round key生成以及对应的SPN操作。另外,产生256-bit的密钥可能也需要比128位密钥多些开销,不过这部分开销应该可以忽略。
安全程度自然是256比128安全,因为目前除了暴力破解,并没有十分有效的代数攻击方法。
针对具体的AES-256或AES-128的软/硬件实现有特定的攻击方式,不好一概而论。

     AES128和AES256主要区别是密钥长度不同(分别是128bits,256bits)、加密处理轮数不同(分别是10轮,14轮),后者强度高于前者。当前AES是较为安全的公认的对称加密算法。
现代密码学分为对称加密与非对称加密(公钥加密),代表算法分别有DES(现在发展为3DES)、AES与RSA等。非对称加密算法的资源消耗大于对称加密。一般是进行混合加密处理,例如使用RSA进行密钥分发、协商,使用AES进行业务数据的加解密。

对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

 

HTTPS协议是如何防中间人窃听的 - 知乎

HTTPS协议是如何防中间人窃听的

Python头条

Python头条

文章来源于Python七号,作者somenzz(侵删)

相信你看过 HTTPS 协议的定义,知道它是一个安全的通讯协议,可以防止中间人窃听,但是你也知道很多代理都可以对 HTTPS 协议抓包,那 HTTPS 协议是如何防中间人窃听的呢?还有,HTTPS 也可以双向验证,也就是服务器端可以验证客户端证书,这一点和防止中间人窃听有没有关系呢?本文就来回答这个问题,如果有不同意见,可以直接发消息与我交流。

HTTPS 协议的基本概念:HTTPS 协议是在 HTTP 协议的基础上,通过添加 SSL/TLS 加密协议而成的。SSL/TLS 协议是一种用于网络通信安全的加密协议,可以将数据在传输过程中进行加密,保证数据的机密性和完整性。

如何防止中间人窃听

要回答这个问题,我们先看看 HTTPS 协议双方,也就是客户端和服务器的通信过程。

  1. 客户端发送请求

当用户在浏览器中输入一个 HTTPS 网址时,浏览器会向服务器发送一个请求,请求建立一个HTTPS 连接。请求中包含有客户端支持的加密算法列表,当然也包括客户端自己的公钥。

  1. 服务器回应

服务器会回应客户端的请求,并从中选择一种加密算法。服务器会使用该算法生成一组密钥,并将该密钥用客户端的公钥加密,并将加密后的密钥及数字证书发送给客户端。

  1. 客户端验证证书

客户端收到服务器的回应后,会验证服务器的数字证书是否合法。数字证书是由数字证书认证机构(CA)颁发的,用于证明服务器的身份。客户端会根据自己的信任列表,验证数字证书的合法性。

验证数字证书的过程如下:

1、客户端(浏览器或 APP)读取证书中的证书对应的域名、所有者、有效期等信息进行一一校验;

2、客户端开始查找操作系统中已内置的受信任的证书发布机构 CA,与服务器发来的证书中的颁发者 CA 比对,用于校验证书是否为合法机构颁发;

3、如果找不到,客户端就会报错,说明服务器发来的证书是不可信任的;

4、如果找到,那么客户端就会从操作系统中取出 颁发者 CA 的公钥,然后对服务器发来的证书里面的签名进行解密;

5、客户端使用相同的 hash 算法计算出服务器发来的证书的 hash 值,将这个计算的 hash 值与证书中签名做对比;

6、对比结果一致,则证明服务器发来的证书合法,没有被冒充;

7、此时客户端就可以读取证书中的公钥,用于后续加密了;

  1. 客户端生成密钥

如果数字证书验证通过,客户端会使用自己的私钥解密服务器发送过来的密钥。然后客户端会使用该密钥生成一对对称密钥,一份用于加密,一份用于解密。

  1. 客户端发送密钥

客户端使用服务器的公钥加密刚刚生成的对称密钥,并将加密后的密钥发送给服务器。

  1. 服务器解密密钥

服务器收到客户端发送的加密后的对称密钥后,会使用自己的私钥解密该密钥。

  1. 开始数据传输

经过以上的验证和加密,HTTPS 通信就建立了起来。此时,客户端和服务器之间的数据传输都是通过对称密钥进行加密的。为什么用对称密钥?因为对称加密的开销小,且其密钥采用非对称加密算法传输,通信过程非常安全。

理解了以上过程,你就会明白,防止中间人最重要最重要的过程是验证证书,只要证书是合法的,服务器就是合法的,不会是冒充的。证书是专业的机构 CA 颁发和管理,所以是可信的。

假如,客户端和服务器直接有一个中间人,比如你用了代理,那么这个代理就是中间人。中间人要想监听客户端和服务器,就需要获取客户端和服务器的通信用的密钥。服务器的密钥,中间人可以作为客户端的身份进行获取,但是要想获取客户端的密钥,中间人需要伪装服务器的身份,从而发布自己的证书,中间人的证书可以是自签名证书,也可以是向 CA 申请的证书,无论是哪个证书,对应的域名一定 不是服务器的域名,这样,客户端在验证证书时一定不会通过,我们就会收到浏览器的提醒:证书不被信任。

如果,客户端(你)选择信任并继续,那么你的通信将毫无安全可言。除非,这个代理(中间人)是你自己部署的,基于测试或抓包分析等其他原因,你可以信任并继续。

回想一下,很多代理之所以可以抓取 HTTPS 包,是因为我们提前导入并信任它们的 CA 证书,然后就可以通过替换证书的方式进行密钥交换,以 charles 为例,具体过程如下:

图片来源:https://ost.51cto.com/posts/19810

因此,HTTPS 协议是借助于证书防中间人窃听的,请注意,如果自己从没有做过什么代理设置,不要相信任何不受信任的证书,推而广之,IOS 不要相信任何描述文件,不要安装不明来源的 APP,不要赋予任何 APP 不需要的权限,这是保障自己信息安全的根本。

HTTPS 的双向验证

HTTPS 也可以双向验证,也就是服务器端可以验证客户端证书,那么什么场景需要这样?

之前的过程,只能说明服务器是合法的,如果服务器想让客户端也是合法的,那么就需要验证客户端的证书,因此,如果服务端需要限定的客户端才能访问服务,那么可以采取 HTTPS 的双向验证[1]。因此 即使 HTTPS 不开启双向验证,也可以防止中间人攻击。

HTTPS 的双向验证 nginx 的配置示范如下:

location / {
    # 开启 HTTPS 协议
    listen 443 ssl;
    # 指定 SSL 证书文件和私钥文件
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    # 开启证书校验
    ssl_verify_client on;
    # 指定 CA 证书文件
    ssl_client_certificate /path/to/ca.pem;
    # 指定校验方式为深度校验
    ssl_verify_depth 2;
}

最后的话

HTTPS 协议通过使用 SSL/TLS 加密技术,通过证书检验,可以有效防止中间人窃听、篡改和伪造等安全问题。

最后,请注意,当浏览器或手机出现安全提醒时,一定不要添加信任并继续,因为,诈骗犯/黑客正在暗处等着你,除非你真的知道你在做什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值