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
    
  • 相关阅读:
    CentOS 配置防火墙+允许指定ip访问端口
    防火墙总结
    WordPress Rank Math SEO插件任意元数据修改漏洞分析
    thinkphp6 session 任意文件创建漏洞POC
    云锁最新版SQL注入WAF绕过
    加密Webshell“冰蝎” 流量 100%识别
    MKCMS代码审计小结
    远控免杀从入门到实践之白名单(113个)总结篇
    记一次从源代码泄漏到后台获取webshell的过程
    一次实战sql注入绕狗
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12990171.html
Copyright © 2011-2022 走看看