HTTP的安全缺陷

  • 通信内容不加密,导致被窃听
  • 不验证客户端和服务端的身份,导致:
    • 服务器伪装
    • 响应返回到了其他的客户端
    • 海量恶意连接
  • 无法证明报文的完整性,导致:请求和响应内容被篡改,这称为中间人攻击

公钥加密技术

  • 使用私钥加密的内容,使用公钥解密,反之,使用公钥加密的内容,使用私钥解密
  • 服务器生成公钥和私钥,私钥自己保存,公钥对外公开
  • 客户端发送请求之前,使用公钥进行加密——由于私钥是服务器私有,即使被截获也无法解密
  • 反过来,服务器发送响应之前:
    • 对消息执行hash算法,生成摘要
    • 对摘要使用私钥加密,生成数字签名
    • 将消息和数字信息一起发送到客户端
    • 客户端用公钥解密数字签名,得到摘要
    • 客户端对消息执行hash算法,与摘要比对,验证消息的真伪
    • 如果消息被截获,摘要被解密,由于没有私钥,也就无法生成能用公钥解密的摘要,这样就保证了消息的正确性、完整性,以及服务器的真实性。
  • 该过程的漏洞在于:如何防止有人篡改公钥,也就是如何保证公钥的真实性
    • 解决:通过CA(数字证书认证),将服务器公钥、用到的hash算法、CA机构信息等,通过CA的私钥加密成数字证书
    • 之后服务器发送的消息,都附上数字证书
    • 浏览器收到数字证书,用CA的公钥解密,拿到服务器的公钥
    • 再将机构信息与本机机构列表比对,验证公钥的真实性
    • 如果有人伪造公钥,甚至获得了CA的私钥,其证书中的信息、hash算法等内容也很难与真实网站完全一致。

SSL和HTTPS

  • 上述过程仅单向安全,用私钥加密的信息,也就是服务器发出的信息不安全

    • 解决办法:先用上述流程验证公钥的真实性,这个过程称为握手
    • 在客户端生成随机对称密钥
    • 对密钥用公钥加密,发送到服务端,这样就保证了密钥传输的安全性
  • 之后全部双向传输都使用对称密钥加密解密
HTTPS建立连接的流程
  • 上述过程就是SSL
  • HTTP+SSL/TLS=HTTPS

私钥、公钥与https的更多相关文章

  1. Linux使用私钥公钥(Public key)登录 - 免密码登录

    为了更安全.方便的登录Linux服务器,可以取消密码登录,使用私钥公钥的方式来登录,更方便也更安全. 生成密钥 借助Xshell可以很方便的生成和管理私钥,点击工具菜单,选择新建用户密钥生成向导: 直 ...

  2. 比特币--私钥->公钥->钱包地址

    脑钱包-字符串SHA256散列成256bit当做私钥-彩虹表 脑钱包是开源的程序-->用户输入字符串当做密码-->经过SHA256散列算法-->256长bit位 (即是私钥)--&g ...

  3. openssl rsa 私钥 PKCS8私钥 公钥

    上文配置好 openssl 运行 => cmd => cd C:\usr\local\ssl\bin => 执行 openssl

  4. windows 下 openssl 生成RSA私钥公钥以及PKCS8

    生成RSA私钥 打开bin文件夹下面的openssl.exe,输入genrsa -out rsa_private_key.pem 1024 把RSA私钥转换成PKCS8格式 输入命令pkcs8 -to ...

  5. 探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。

    一.准备 1. 角色:小白.美美.小黑. 2. 剧情:小白和美美在谈恋爱:小黑对美美求而不得.心生怨念,所以从中作梗. 3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性. ...

  6. 使用keytool生成公钥、私钥、证书并且读取出来,使用私钥签名jar并验证(转)

    参考链接:http://happyqing.iteye.com/blog/2139504 :https://blog.csdn.net/arjelarxfc/article/details/52461 ...

  7. RSA不对称加密和公钥 私钥

    理论上只要有加密的规则 基本都是可以解密的 但是如果解密需要消耗的时间过长 比如1000年 解密过后已经没什么意义了 此时可认为这种算法不能被破解 也就是说此加密可信 MD5 是一种单向操作 加密后不 ...

  8. 从支付宝SDK的支付流程理解什么是公钥和私钥,什么是加密和数字签名

    ------------------- 这是自己总结: 支付宝SDK支付用到的公钥与私钥整理如下: 1.商户应用公钥    2.商户应用私钥 3.支付宝公钥 4.支付宝私钥   商户应用的公钥与私钥生 ...

  9. AI学习吧-公钥私钥、沙箱环境

    公钥私钥 公钥.私钥 可以互相解密 应用:数字签名和加密数据 数字签名:使用私钥加密,公钥解密 加密数据:使用公钥加密,私钥解密泄密时:当有人拿走了你的公钥,你可以到CI证书中心,使用你的私钥和公钥办 ...

随机推荐

  1. java引用的强制转型

    在java的面向对象的特性里,父类的引用可以指向子类的实例对象.但是,如果一个引用b(b本身指向了一个对象)想赋值给引用a,b不是a的类型且不是a的子类类型,那么就需要强制转换,并有失败的可能性,这个 ...

  2. jquery实现一些小动画二

    jquery实现一些小动画二 jquery实现拖拽功能 <!DOCTYPE html> <html lang="en"> <head> < ...

  3. 学习CNN系列二:训练过程

    卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,网络就具有输入.输出之间映射的 ...

  4. 2019CCPC 秦皇岛 E.Escape

    传送门 题意: 给出一个\(n*m\)的迷宫,有\(a\)个入口,\(b\)个出口. 现在有\(a\)个机器人都从入口出发,一开始方向默认为下,你可以选在在一些格子上面放置一个转向器,转向器有四种: ...

  5. 201871010106-丁宣元 《面向对象程序设计(java)》第十四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十四周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  6. sed与grep练习题

    第1章 练习题 第1题 取得/etc/hosts 文件的权限 如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r--  为 644,要求使用命令取得644 这样的数字. 方法一 ...

  7. Spring Cloud微服务安全实战_4-1_微服务网关安全_概述&微服务安全面临的挑战

      第四章  网关安全 这一章从简单的API的场景过渡到复杂的微服务的场景 4.1 概述 微服务安全面临的挑战:介绍中小企业的一个微服务架构,相比第三章的单体应用的简单的API所面临的哪些挑战 OAu ...

  8. STL——sort函数的实现原理

    实现原理 sort结合了快速排序.堆排序.直接插入排序三种排序方法. 根据不同的数量级别以及不同情况,能自动选用合适的排序方法.当数据量较大时采用快速排序,分段递归.一旦分段后的数据量小于某个阀值,为 ...

  9. 字符串s倒序输出

    编程将字符串s倒序输出,要求利用函数递归实现. 输入格式要求:"%s" 提示信息:"input your string:\n" 输出格式要求:"%c& ...

  10. [LeetCode] 64. Minimum Path Sum 最小路径和

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...