$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 େձ

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































  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

    View Slide













































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

    View Slide













































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

    View Slide













































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

    View Slide













































  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

    View Slide













































  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.

    View Slide