ਲਿਸਨਰ ਨੂੰ TLS 1.3 ਉੱਤੇ ਅੱਪਗ੍ਰੇਡ ਕਰਨਾ ਬਦਲਦਾ ਹੈ ਕਿ ਨਿਰੀਖਕ ਕੀ ਪੜ੍ਹ ਸਕਦਾ ਹੈ, ਪਰ ਉੱਨਾ ਨਹੀਂ ਜਿੰਨਾ ਵਰਜ਼ਨ ਨੰਬਰ ਦੱਸਦਾ ਹੈ। ClientHello ਅਜੇ ਵੀ ਕਿਸੇ ਵੀ ਐਨਕ੍ਰਿਪਸ਼ਨ ਉੱਤੇ ਗੱਲਬਾਤ ਤੋਂ ਪਹਿਲਾਂ ਸਫ਼ਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਆਮ ਕਨੈਕਸ਼ਨ ਵਿੱਚ ਮੰਗਿਆ ਗਿਆ ਸਰਵਰ ਨਾਮ ਉੱਥੇ ਸਾਦੇ ਟੈਕਸਟ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। Encrypted Client Hello ਉਹ ਵਿਧੀ ਹੈ ਜੋ ਇਸਨੂੰ ਲੁਕਾਉਂਦੀ ਹੈ, ਅਤੇ ਇਹ ਆਪਣੀਆਂ ਪੂਰਵ-ਸ਼ਰਤਾਂ ਵਾਲੀ ਵੱਖਰੀ ਤੈਨਾਤੀ ਹੈ। ਦੋਹਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਵਰਤਾਓ ਨੂੰ ਮੰਨਣ ਵਾਲੀ ਨੀਤੀ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਚਾਰ ਕਦਮ ਕਰੋ।

ਹੈਂਡਸ਼ੇਕ ਅਸਲ ਵਿੱਚ ਕੀ ਜ਼ਾਹਰ ਕਰਦਾ ਹੈ

TLS 1.3 ਸਰਵਰ ਦਾ ਸਰਟੀਫਿਕੇਟ ਅਤੇ ServerHello ਤੋਂ ਬਾਅਦ ਆਉਣ ਵਾਲੇ ਬਹੁਤੇ ਹੈਂਡਸ਼ੇਕ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ। ਕਲਾਇੰਟ ਪਹਿਲਾਂ ਜੋ ਭੇਜਦਾ ਹੈ ਉਹ ਉਸ ਸੁਰੱਖਿਆ ਤੋਂ ਬਾਹਰ ਰਹਿੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਚਾਬੀਆਂ ਅਜੇ ਮੌਜੂਦ ਨਹੀਂ। ਸਰਵਰ ਨਾਮ ਦਾ ਸੰਕੇਤ ਉਸੇ ਪਹਿਲੀ ਉਡਾਣ ਦਾ ਹਿੱਸਾ ਹੈ, ਇਸ ਲਈ ਨਿਸ਼ਕ੍ਰਿਯ ਨਿਰੀਖਕ ਬਿਨਾਂ ਕੁਝ ਤੋੜੇ ਇਸਨੂੰ ਅਜੇ ਵੀ ਪੜ੍ਹ ਸਕਦਾ ਹੈ।

ECH ਵਿਸ਼ੇਸ਼ਣ, RFC 9849, ਸਹਿਯੋਗੀ ਸਰਵਰ ਲਈ ਅੰਦਰੂਨੀ ClientHello ਐਨਕ੍ਰਿਪਟ ਕਰਕੇ ਇਸਨੂੰ ਬਦਲਦਾ ਹੈ। ਬਾਹਰੀ ਹੈਂਡਸ਼ੇਕ ਰਹਿੰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਵੇਖ ਸਕਣ ਵਾਲਾ ਜਨਤਕ ਨਾਮ ਰੱਖਦਾ ਹੈ, ਇਸ ਲਈ ਤੈਨਾਤੀ ਨੂੰ ਅਜੇ ਵੀ ਬਾਹਰੀ ਪਛਾਣ ਚਾਹੀਦੀ ਹੈ ਜੋ ਵਿਚੋਲਿਆਂ ਲਈ ਅਰਥ ਰੱਖਦੀ ਹੋਵੇ। ਉਹ ਬਾਹਰੀ ਨਾਮ ਹੀ ਉਹ ਹਿੱਸਾ ਹੈ ਜੋ ਲੋਕ ਤਦ ਛੱਡ ਦਿੰਦੇ ਹਨ ਜਦੋਂ ਉਹ ਆਸ ਕਰਦੇ ਹਨ ਕਿ ਕਨੈਕਸ਼ਨ ਗੁਮਨਾਮ ਹੋ ਜਾਵੇਗਾ। ਇਹ ਆਵਰਣ ਨਾਮ ਹੈ, ਲੁਕਿਆ ਨਾਮ ਨਹੀਂ, ਅਤੇ ਇਸਨੂੰ ਕਿਸੇ ਹੋਰ ਵਾਂਗ ਹੱਲ ਅਤੇ ਪ੍ਰਮਾਣਿਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।

ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਡਿਲੀਵਰੀ ਮਾਰਗ ਨਹੀਂ ਲੁਕਾਉਂਦਾ। ਸਰੋਤ ਅਤੇ ਮੰਜ਼ਿਲ ਪਤੇ, ਪੋਰਟ, ਪੈਕੇਟ ਆਕਾਰ ਅਤੇ ਸਮਾਂ ਨਿਰੀਖਣਯੋਗ ਰਹਿੰਦੇ ਹਨ, ਅਤੇ ਇਹ ਅਕਸਰ ਨਾਮ ਨਾਲੋਂ ਵੱਧ ਦੱਸਦੇ ਹਨ ਕਿ ਕੌਣ ਬੋਲ ਰਿਹਾ ਹੈ। ਨਾਮ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਪੱਧਰ ਦੇ ਸੰਬੰਧ ਇੱਕ ਹੋਰ ਪਰਤ ਹਨ, ਹਰ ਇੱਕ ਦੀ ਆਪਣੀ ਦਿੱਖ।

ਅਨੁਮਾਨ ਲਾਉਣ ਦੀ ਥਾਂ ClientHello ਪੜ੍ਹੋ

ServerHello ਵਿੱਚ ਵਰਜ਼ਨ ਤੁਹਾਨੂੰ ਨਹੀਂ ਦੱਸਦਾ ਕਿ ਕਲਾਇੰਟ ਨੇ ਕੀ ਭੇਜਿਆ। ਪਹਿਲੀ ਉਡਾਣ ਸਿੱਧੀ ਵੇਖੋ, ਅਜਿਹੀ ਸਥਿਤੀ ਤੋਂ ਜੋ ਤੁਹਾਡੇ ਲਈ ਮਹੱਤਵਪੂਰਨ ਨਿਰੀਖਕ ਦੀ ਨੁਮਾਇੰਦਗੀ ਕਰਦੀ ਹੈ।

openssl s_client -connect app.plant.example:443 -servername app.plant.example -tls1_3 </dev/null> 2>/dev/null | head -20
sudo tcpdump -ni eth0 -c 40 'tcp port 443' -w /tmp/tls.pcap
tshark -r /tmp/tls.pcap -Y 'tls.handshake.extensions_server_name' -T fields -e tls.handshake.extensions_server_name

ਪਹਿਲਾ ਹੁਕਮ ਹੈਂਡਸ਼ੇਕ ਕਰਦਾ ਹੈ ਅਤੇ ਸਹਿਮਤ ਪੈਰਾਮੀਟਰ ਦਿਖਾਉਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਪ੍ਰੋਟੋਕੋਲ ਵਰਜ਼ਨ ਅਤੇ ਤੁਹਾਡੇ ਮੰਗੇ ਨਾਮ ਸ਼ਾਮਲ ਹਨ। ਦੂਜਾ ਅਸਲ ਕਨੈਕਸ਼ਨ ਦੇ ਪਹਿਲੇ ਪੈਕੇਟ ਕੈਪਚਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਤੀਜਾ ਉਸ ਕੈਪਚਰ ਤੋਂ SNI ਖੇਤਰ ਕੱਢਦਾ ਹੈ। ਜੇ ਖੇਤਰ ਭਰਿਆ ਹੈ, ਤਾਂ ਜਿਸ ਨਿਰੀਖਕ ਦੀ ਤੁਸੀਂ ਨਕਲ ਕੀਤੀ ਉਹ ਇਸਨੂੰ ਪੜ੍ਹ ਸਕਦਾ ਹੈ।

ਜਦੋਂ ਦੋਵੇਂ ਨਾ ਮਿਲਣ ਤਾਂ ਕਲਾਇੰਟ ਪਾਸੇ ਅਤੇ ਮਾਰਗ ਉੱਤੇ ਵੱਖਰੇ ਤੌਰ ਤੇ ਕੈਪਚਰ ਕਰੋ, ਕਿਉਂਕਿ ਸਥਾਨਕ ਕੈਪਚਰ ਅਜਿਹਾ ਨਾਮ ਦਿਖਾ ਸਕਦਾ ਹੈ ਜਿਸਨੂੰ middlebox ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਲਿਖਦਾ ਜਾਂ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਅਜਿਹੇ ਹੋਸਟ ਤੋਂ ਵੀ ਕੈਪਚਰ ਕਰੋ ਜੋ ਆਪ TLS ਖਤਮ ਨਹੀਂ ਕਰਦਾ, ਕਿਉਂਕਿ ਖਤਮ ਕਰਨ ਵਾਲਾ ਪ੍ਰੌਕਸੀ ਸਾਦਾ ਟੈਕਸਟ ਆਪਣੀ ਬਣਾਵਟ ਅਨੁਸਾਰ ਵੇਖਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਕੀ ਵੇਖਦਾ ਹੈ ਇਸ ਦਾ ਕੁਝ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ।

ECH ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਦਾਅਵਾ ਮੰਨੋ, ਸਬੂਤ ਨਹੀਂ

ClientHello ਵਿੱਚ ECH ਐਕਸਟੈਂਸ਼ਨ ਵੇਖਣ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ ਕਨੈਕਸ਼ਨ ਨੇ ECH ਵਰਤਿਆ। ਕਲਾਇੰਟ ਕੋਲ ਵਰਤੋਂ ਯੋਗ ਸੰਰਚਨਾ ਨਾ ਹੋਣ ਵੇਲੇ GREASE ECH ਭੇਜਦੇ ਹਨ, ਠੀਕ ਇਸ ਲਈ ਕਿ ਉਹਨਾਂ ਦੇ ਹੈਂਡਸ਼ੇਕ ਇੱਕੋ ਜਿਹੇ ਦਿਸਣ। ਐਕਸਟੈਂਸ਼ਨ ਮੌਜੂਦ ਹੈ, ਅੰਦਰਲਾ hello ਚਾਰਾ ਹੈ, ਅਤੇ ਅਸਲ ਨਾਮ ਅਜੇ ਵੀ ਪੜ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ।

dig +short HTTPS app.plant.example
openssl s_client -connect app.plant.example:443 -tls1_3 -status </dev/null> 2>/dev/null | grep -i -E 'ech|status_request'

ਪਹਿਲਾ ਹੁਕਮ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕੀ ਮੂਲ ECH ਸੰਰਚਨਾ ਪੈਰਾਮੀਟਰ ਵਾਲਾ HTTPS ਸਰੋਤ ਰਿਕਾਰਡ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਕਲਾਇੰਟ ਚਾਬੀ ਸਿੱਖਦੇ ਹਨ। ਦੂਜਾ ਹੈਂਡਸ਼ੇਕ ਦੀ ਸਥਿਤੀ ਜਾਣਕਾਰੀ ਲੱਭਦਾ ਹੈ, ਹਾਲਾਂਕਿ ਕਲਾਇੰਟ ਦਾ ਸਫਲਤਾ ਸੁਨੇਹਾ ਵਧੇਰੇ ਮਜ਼ਬੂਤ ਸਬੂਤ ਹੈ। ਸਵੀਕ੍ਰਿਤੀ ਮਹੱਤਵਪੂਰਨ ਹੈ: ਜਿਸ ਸਰਵਰ ਕੋਲ ਮੇਲ ਖਾਂਦੀ ਚਾਬੀ ਨਹੀਂ ਉਹ ਅੰਦਰਲਾ hello ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਅਤੇ ਕਨੈਕਸ਼ਨ ਪਿੱਛੇ ਹਟ ਜਾਂਦਾ ਹੈ।

ਕਲਾਇੰਟ ਵੀ ਜਾਂਚੋ, ਕਿਉਂਕਿ ਬਰਾਊਜ਼ਰ ਸਹਿਯੋਗ ਅਤੇ ਸੰਰਚਨਾ ਵਰਜ਼ਨ ਅਤੇ ਪਲੇਟਫਾਰਮ ਅਨੁਸਾਰ ਬਦਲਦੇ ਹਨ। „ਆਧੁਨਿਕ ਬਰਾਊਜ਼ਰ ECH ਵਰਤਦੇ ਹਨ“ ਉੱਤੇ ਬਣੀ ਨੀਤੀ ਇੱਕ ਬੇੜੇ ਬਾਰੇ ਅਨੁਮਾਨ ਹੈ, ਤੁਹਾਡੇ ਬੇੜੇ ਬਾਰੇ ਤੱਥ ਨਹੀਂ। ਜੋ ਵਰਜ਼ਨ ਅਸਲ ਵਿੱਚ ਜੁੜਦੇ ਹਨ ਉਹਨਾਂ ਦੀ ਸੂਚੀ ਬਣਾਓ, ਫਿਰ ਹਰ ਇੱਕ ਵਿੱਚੋਂ ਇੱਕ ਜਾਂਚੋ। ਹੋ ਸਕਦਾ ਹੈ ਜੋ ਪੰਨਾ ਮੌਜੂਦਾ ਡੈਸਕਟਾਪ ਬਰਾਊਜ਼ਰ ਤੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਉਹ ਉਸੇ ਨੈੱਟਵਰਕ ਉੱਤੇ ਪੁਰਾਣੇ ਕਲਾਇੰਟ ਤੋਂ ਕੁਝ ਵੀ ਨਾ ਲੁਕਾਏ।

ਨਿਰੀਖਕ ਦਾ ਦਾਇਰਾ ਨੀਤੀ ਵਿੱਚ ਲਿਖੋ

ਇਹ ਤੈਅ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਕੋਈ ਨਿਯੰਤਰਣ ਕਿਸ ਉੱਤੇ ਨਿਰਭਰ ਹੋ ਸਕਦਾ ਹੈ, ਦੱਸੋ ਕਿ ਨਿਰੀਖਕ ਕਿੱਥੇ ਬੈਠਦਾ ਹੈ ਅਤੇ ਉਸ ਬਿੰਦੂ ਉੱਤੇ ਕੀ ਦਿਸਦਾ ਹੈ। ਬਰਾਊਜ਼ਰ ਦਾ ਸਾਈਟ ਨਾਲ ਕਨੈਕਸ਼ਨ, ਬਾਹਰੀ VPN ਢੋਆ-ਢੁਆਈ ਅਤੇ TLS ਖਤਮ ਕਰਨ ਵਾਲਾ ਪ੍ਰੌਕਸੀ — ਹਰ ਇੱਕ ਵੱਖਰਾ ਤੱਥ ਸਮੂਹ ਜ਼ਾਹਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਸਥਿਤੀ ਲਈ ਲਿਖਿਆ ਨਿਯਮ ਦੂਜੀ ਉੱਤੇ ਘੱਟ ਹੀ ਸਾਫ਼ ਤਬਦੀਲ ਹੁੰਦਾ ਹੈ।

ਜੇ ਕੋਈ ਨਿਯੰਤਰਣ SNI ਪੜ੍ਹਨ ਉੱਤੇ ਨਿਰਭਰ ਹੈ, ਤਾਂ ਪਰਖੋ ਕਿ ਤੈਨਾਤ ਕਲਾਇੰਟ ECH ਉਪਲਬਧ ਹੋਣ ਅਤੇ ਨਾ ਹੋਣ ਵੇਲੇ ਕਿਵੇਂ ਵਿਵਹਾਰ ਕਰਦੇ ਹਨ। ਫਿਰ ਅਨੁਕੂਲਤਾ ਦਾ ਨਤੀਜਾ ਦਰਜ ਕਰੋ, ਕਿਉਂਕਿ ਚੁੱਪਚਾਪ ਮਿਲਾਨ ਬੰਦ ਕਰਨ ਵਾਲਾ ਫਿਲਟਰ ਕਦੇ ਤੈਨਾਤ ਨਾ ਹੋਏ ਫਿਲਟਰ ਨਾਲੋਂ ਮਾੜਾ ਹੈ।

ਅੰਤ ਵਿੱਚ, ਅਨਿਸ਼ਚਿਤਤਾ ਰਿਕਾਰਡ ਵਿੱਚ ਰੱਖੋ। ਪੁਰਾਣੇ ਸਰਵਵਿਆਪੀ ਦਾਅਵੇ ਨੂੰ ਨਵੇਂ ਨਾਲ ਬਦਲਣਾ ਉਹੀ ਖਾਲੀ ਥਾਂ ਕਿਸੇ ਹੋਰ ਪ੍ਰੋਟੋਕੋਲ ਨਾਮ ਹੇਠ ਛੱਡ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਅਗਲਾ ਸਮੀਖਿਅਕ ਉਸੇ ਦ੍ਰਿੜਤਾ ਨਾਲ ਇਸ ਉੱਤੇ ਵਿਸ਼ਵਾਸ ਕਰੇਗਾ।

ਸੰਬੰਧਿਤ ਲੇਖ