zoukankan      html  css  js  c++  java
  • https安全传输建立过程学习

    简单过程

    以chrome和bilibili网站通信为例:

    前提:bilibili向CA机构申请证书

    首先是bilibili将自己的信息和公钥放置到证书,然后向CA提交申请,CA核实确实bilibili身份后用自己的私钥对证书进行签名

    使用chrome向bilibili发起请求

    1. 浏览器向服务器发起请求
    2. 服务器响应请求,将CA证书发给浏览器
    3. 浏览器获取内置的CA公钥对证书上的签名进行验证,证明服务器的身份(即验证公钥是不是bilibili的),验证成功后获取证书上的公钥
    4. 浏览器生成一段随机数,并使用服务器公钥进行加密(只有bilibili服务器私钥才能解开),发送给服务器
    5. 服务器收到信息后用自己的私钥解密,获得随机数,之后使用这一串随机数作为堆成密钥和浏览器进行对称加密传输(对称密钥只有浏览器和服务器知道)

    详细过程

    1. 身份认证

    • 浏览器向服务器发起请求,带上一个随机数client Random
    • 服务器响应请求,将一个随机数server RandomCA证书发给浏览器
    • 浏览器获取内置的CA公钥对证书上的签名进行验证,证明服务器的身份(即验证公钥是不是bilibili的),验证成功后获取证书上的公钥serverPublicKey

    2. 密钥协商

    • 服务器生成服务器DH参数,并且使用自己的私钥签名,发给客户端
    • 客户端收到后使用服务器公钥serverPublicKey验证签名,获取服务器DH参数
    • 客户端生成客户端DH参数,发给服务端
    • 服务端收到客户端DH参数

    3. 对称加密传输

    • 服务端和客户端此时均有client Randomserver Random客户端DH参数服务器DH参数,将四者进行结合生成对称密钥,然后通过对称密钥进行加密传输

    补充

    1. TLS/SSL

    2. RSA非对称加密原理

    /* p,q为两个质数 */
    let p = 3, q = 11;
    let fN = (p - 1) * (q - 1);
    
    /* 公钥 {e,N} */
    let e = 7;
    let N = p * q;//33
    let publicKey = { e, N };
    
    /* 私钥{d,N} */
    let d = 1;
    while (e * d % fN !== 1) d++;
    console.log(d);//3
    let privateKey = { d, N };
    
    /* ------------ 测试 ------------ */
    
    /* 公钥加密 */
    let m = 5;
    let c = Math.pow(m, publicKey.e) % publicKey.N;//c = m^e % N 
    console.log('c = ' + c);//c=14
    
    /* 私钥解密 */
    let origin = Math.pow(c, privateKey.d) % privateKey.N;//m = c^d % N
    console.log(origin);//5
    

    3. Diffie-Heliman原理

    /* 公共部分 */
    let p = 5, N = 23;
    
    /* A,B各自的密钥 */
    let secretA = 6, secretB = 15;
    
    /* A加密 */
    let A = Math.pow(p, secretA) % N;
    console.log("A = " + A);
    
    /* B加密 */
    let B = Math.pow(p, secretB) % N;
    console.log("B = " + B);
    
    /* A将A给B,B将B给A */
    //A解密
    console.log(Math.pow(B, secretA) % N);//2
    //B解密
    console.log(Math.pow(A, secretB) % N)//2
    
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    爬取校园新闻首页的新闻
    中文词频统计
    综合练习:英文词频统计
    字符串练习
    1.用Hive对爬虫大作业产生的文本文件2.用Hive对爬虫大作业产生的csv文件进行数据分析,写一篇博客描述你的分析过程和分析结果。
    Hadoop综合大作业加上以前漏掉的作业
    爬虫大作业
    获取全部校园新闻
    爬取校园新闻首页的新闻
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12990171.html
Copyright © 2011-2022 走看看