$30 off During Our Annual Pro Sale. View Details »

TLS 1.3自作入門 / tls13

Mako
August 09, 2021

TLS 1.3自作入門 / tls13

seccamp2019 LT大会での発表内容

Mako

August 09, 2021
Tweet

More Decks by Mako

Other Decks in Technology

Transcript

  1. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ N೔ͰͰ͖Δ! TLS 1.3ࣗ࡞ೖ໳ @tex2e ηΩϡϦςΟɾΩϟϯϓશࠃେձ 2019 LT େձ
  2. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ࠓ೔ͷ͓࿩ TLS 1.3
  3. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLSͱ͸ ௨৴͢Δ 2 ਓ͸͜Ε·Ͱʹձͬͨ͜ͱ͕ͳ͘ɺ ҆શͰ͸ͳ͍௨৴࿏Λ࢖ͬͨͱͯ͠΋ɺ ҆શʹ΍ΓͱΓ͕Ͱ͖Δ
  4. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ҆શͳ௨৴࿏ͱ͸... • ਅਖ਼ੑ • ௨৴૬ख͕ຊ෺Ͱ͋Δ͜ͱΛ֬ೝͰ͖Δ • (αʔόূ໌ॻʹΑΔೝূ ... X.509 Cert, PKI) • ػີੑ • ݖݶΛ࣋ͭਓ͚͕ͩΞΫηεͰ͖Δ • (௨৴಺༰ͷ҉߸Խ ... AES, ChaCha20) • ׬શੑ • վ͟Μ͞Εͳ͍ • (ೝূ෇͖҉߸ʹΑΔվ͟Μݕ஌ ... AEAD)
  5. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLSͷϋϯυγΣΠΫ • Handshake • Ͳͷ҉߸εΠʔτΛ࢖͏͔ܾΊΔ • ެ։ݤ҉߸Λ༻͍ͯݤڞ༗͢Δ • ূ໌ॻΛ࢖ͬͯೝূ͢Δ • Application Data • ڞ௨ݤ҉߸Λ༻͍ͯ҉߸Խ͢Δ • HTTP Λ҉߸Խͨ͠σʔλͳͲ Open Socket Handshake Application Data Close Socket
  6. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLS 1.3ͷ΍ΓͱΓ Client Server Client Hello Server Hello Application Data
  7. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ϓϩάϥϚͷ3େʮᅂΈʯ • ࣗ࡞ OS • ࣗ࡞ίϯύΠϥ (ϓϩάϥϛϯάݴޠ) • ࣗ࡞ϓϩτίϧελοΫ (TCP/IP, TLS) ˞ॾઆ͋Γ
  8. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLSͲ͏΍ͬͯ࡞Δͷ? RFCΛಡΉ
  9. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLS 1.3 (RFC 8446)
  10. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ߏ଄ମͱόΠτྻͷ૬ޓม׵ ม׵ ෮ݩ
  11. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ࣮૷ͷྲྀΕ TLS ͷ΍ΓͱΓͷ࣮૷ɿ 1. ιέοτ௨৴ 2. ϝοηʔδͷߏ଄ମͱόΠτྻͷ૬ޓม׵ TLS ͷ΍ΓͱΓͷத਎ͷ࣮૷ɿ 1. ପԁۂઢ Diffie-Hellman ݤڞ༗ 2. HKDF ʹΑΔݤεέδϡʔϦϯά 3. ೝূ෇͖҉߸ (AEAD) 4. X.509 ূ໌ॻ
  12. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLS 1.3ͷ࠷৽ಈ޲ (Server/Client)
  13. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLS 1.3ͷ࠷৽ಈ޲ (QUIC) UDP ͰίωΫγϣϯཱ֬ͱ TLS 1.3 ཱ֬Λಉ࣌ʹߦ͏ TCP + TLS 1.3 Client Server SYN SYN + ACK ACK Client Hello Server Hello Application Data QUIC (HTTP/3) Client Server QUIC QUIC QUIC Application Data
  14. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ TLS 1.3ࣗ࡞͸ָ͍͚͠Ͳ೉͍͠ • จॻ͸΄ͱΜͲӳޠ • ҉߸ٕज़ͷج൫ͱͳΔ਺ֶͷ஌ࣝ • ωοτϫʔΫٕज़ͷ஌ࣝ • RFC ͸ೖ໳ॻͰ͸ͳ͍ͷͰॳֶऀʹ͸ݫ͍͠
  15. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ 30೔Ͱ TLS 1.3 ͸ ࡞Εͳ͍Α
  16. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ༧උ஌ࣝ ࣮૷ ࠷৽ಈ޲ ·ͱΊ ͓ΘΓ
  17. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࢀߟจݙ I RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3. IETF, August 2018. Andy Brodie: Overview of TLS v1.3. OWASP, 2017. URL https://www.owasp.org/images/d/d3/TLS_v1.3_ Overview_OWASP_Final.pdf SSL Labs: SSL Pulse. Qualys, Inc, June 2019. URL https://www.ssllabs.com/ssl-pulse/ @Fyrd, @Lensco: Can I use... URL https://caniuse.com/ IETF Draft: “QUIC: A UDP-Based Multiplexed and Secure Transport”. URL https://tools.ietf.org/ html/draft-ietf-quic-transport-22
  18. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

    ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ࢀߟจݙ II Alessandro Ghedini: The Road to QUIC. Cloudflare, Inc, 2018. URL https://blog.cloudflare.com/the-road-to-quic/ խ໵ ࢁຊ: TCP/IP ϓϩτίϧελοΫࣗ࡞ೖ໳. KLab Inc, 2018. URL https://www.slideshare.net/ pandax381/tcpip-105857327 Ivan Risti´ c ஶ, ᜊ౻޹ಓ ؂༁: ϓϩϑΣογϣφϧ SSL/TLS. ϥϜμϊʔτ, 2018.