• Stardust
    2019-08-20
    老师您好,tls hand shake的过程中,client hello和sever hello这两个报文会协商使用的tls版本是吗?我查看抓到的报文,tls1.2和tls1.3的client hello报文基本是一样的
    我查看抓到的tls1.3报文,version字段为什么写着 TLS 1.2呢?从Wireshark复制的报文信息见下方

    Secure Sockets Layer
        TLSv1.3 Record Layer: Handshake Protocol: Server Hello
            Content Type: Handshake (22)
            Version: TLS 1.2 (0x0303)
            Length: 122
            Handshake Protocol: Server Hello
                Handshake Type: Server Hello (2)
                Length: 118
                Version: TLS 1.2 (0x0303)
                Random: 0545e9c1dbec579f52230bba54a8789319a30958a43dfe11...
                Session ID Length: 32
                Session ID: 85ef21c4e96122226117a77250ca7d62847b2d731a51f768...
                Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
                Compression Method: null (0)
                Extensions Length: 46
                Extension: key_share (len=36)
                    Type: key_share (51)
                    Length: 36
                    Key Share extension
                        Key Share Entry: Group: x25519, Key Exchange length: 32
                            Group: x25519 (29)
                            Key Exchange Length: 32
                            Key Exchange: 599ede022b7ae40b7cf408aea5576617f9c069f1734f2f5a...
                Extension: supported_versions (len=2)
                    Type: supported_versions (43)
                    Length: 2
                    Supported Version: TLS 1.3 (0x0304)
        TLSv1.3 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
            Content Type: Change Cipher Spec (20)
            Version: TLS 1.2 (0x0303)
            Length: 1
            Change Cipher Spec Message
    展开

    作者回复: 因为浏览器发起TLS握手时,虽然更倾向1.3,但它同时也支持tls1.2,所以把1.2与1.3里在clienthello所需要的信息都列上了。
    如果你使用老版本只支持tls1.2的浏览器就不会这样。

    
     1
  • Geek_007
    2019-08-19
    老师,你好,问下,客户端在握手的时候,client hello 包已经是tls1.3 了,我有一个疑惑,client怎么知道server 端是否支持 TLS1.3呢。因为 client hello 包应该是tls握手的第一个包吧,他怎么就知道服务端支持tls1.3 ,并且发送了 TLS1.3 所需要的dh参数呢。

    作者回复: 客户端不知道,所以它会同时把tls1.2的支持套件,以及tls1.3中的所有它支持的DH参数,都在client hello中发给server

     6
     1
  • ray
    2019-12-30
    老师好,我还是有几个点想不明白,请问
    1. TLS1.3是在什么时候传输证书,并确保在client和server生成对称密钥前,两边所收到的讯息都是没有被中间人窜改过的?我想到的情境如问题3, 4。
    2. 老师在前一问题说,证书是加密传输的意思是,wireshark无法监听到吗?
    3. 若是我们在某一次request和response拿到证书,并验证了证书确实来自server。但此时对称密钥尚未生成,在之后的request和response传输中,我们要生成密钥,那我们该如何确保在生成密钥前所传递的讯息都未被窜改呢?
    4. 如果我在client传输Qa和P的时候,拦截封包抢先server产生Qb将其回传给client。这样可以达成中间人攻击吗?从wireshark监听封包来看,此时传输的讯息似乎无法看出讯息的来源是否正确?

    谢谢老师的解答^^
    展开
    
    
  • ray
    2019-12-28
    老师好,请问
    1. 用wireshark监听packet,发现在tls1.3中好像没有看到server向client传递证书的packet,请问这是为何?
    2. 承问题1,server又是在何时向client传递证书的呢?
    3. 请问client和server交换产生对称密钥用的Q和P时,是否有使用产生证书的公私钥进行加密?
    4. 承问题3,如果没有又是如何确保双方传递的讯息不被中间人攻击呢?(虽然k值很难被算出来,但没有rsa加密似乎还是有风险)
    5. 承问题3, 4,如果没有使用证书内的公钥来加密对称密钥后在进行传递,证书的用途是不是只剩下验证身份而已?因为使用证书内的公钥来加密对称密钥后在进行传递不具有前向保密性。

    谢谢老师的解答^^
    展开

    作者回复: 1、2问题:tls1.3中,证书是加密传输的。
    3、4、5问题:不需要,椭圆曲线本身的数学特性保证了中间人攻击时,依靠当下科技的计算力,无法破解。证书只用于验证身份。

    
    
我们在线,来聊聊吧