Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChaChaPoly and You, CryptoKit Explained

ChaChaPoly and You, CryptoKit Explained

トークタイトル
ChaChaPoly and You, CryptoKit Explained
トーク概要
「え、CryptoKitを使いたいけど、いつ、何を使うべきかわからない。。。」の方はもう心配いらない。このトークで一緒にCryptoKitの謎を解きましょう!

ユーザーのデータを暗号化しないといけない開発案件が出てきて「CryptoKitを使うチャンス!」を思って調べてきました。それでみんなにそのKnowledgeを共有したいと思っています!みんなCryptoKitマスターになりましょう!

monolithic-adam

September 10, 2022
Tweet

More Decks by monolithic-adam

Other Decks in Programming

Transcript

  1. ChaChaPoly and
    You, CryptoKit
    Explained
    Adam Henry / @monolithic-adam
    2022/09/10 iOSDC Japan 2022

    View Slide

  2. Adam Henry
    Twitter: @monolithic_adam
    GitHub: monolithic-adam
    ヘイ株式会社
    STORES レジ iOSアプリエンジニア

    View Slide

  3. View Slide

  4. https://tech.hey.jp/entry/2022/08/31/110114

    View Slide

  5. Agenda

    View Slide

  6. 1. CryptoKitって何?
    2. CryptoKitでできること
    3. 実装方法

    View Slide

  7. Part 1: CryptoKitって何?

    View Slide

  8. ● It refers to secure information and communication techniques derived from
    mathematical concepts and algorithms, to transform messages in ways that
    are hard to decipher.
    ● “世界一危ないコード”
    Cryptography

    View Slide

  9. ● CryptoKitは簡単に安全な暗号化オペレーションを行えるSwift
    Framework.
    ● WWDC 2019で発表された
    (https://developer.apple.com/wwdc19/709)
    ● 高級なSwiftインターフェース
    CryptoKit

    View Slide

  10. Part 2: CryptoKitで何を
    できる

    View Slide

  11. View Slide

  12. Hash Functions

    View Slide

  13. Hash Functions
    ● 一方向 - 実質的に元に戻せない
    ● 決定論的 - 同じメッセージは常に同じハッシュ値になる
    ことを意味します
    ● 一意 - 同じハッシュ値を持つ 2 つの異なるメッセージを
    見つけることは事実上不可能であることを意味します

    View Slide

  14. Hash Functionの使い方
    ● Digital Signature
    ● Message Authentication
    ● Password Verification
    ● など

    View Slide

  15. password1234567
    プレーンテキスト

    View Slide

  16. password1234567
    プレーンテキスト

    View Slide

  17. 139102cfdc7c93594
    6f551fd18f430f12fe
    1ce33bd605cb1885f
    27ebd7c5bb9b
    ハッシュドテキスト

    View Slide

  18. 簡単なコードExample

    View Slide

  19. Symmetric Key Cryptography

    View Slide

  20. Symmetric Key
    ● 同じキーで暗号化と復号化する
    ● デメリットはそのキーを共有しないと復号化できない

    View Slide

  21. 2 Cipher Types
    ● AES-GCM
    ● ChaChaPoly (モバイル端末だとおすすめ)

    View Slide

  22. AES-GCM

    View Slide

  23. AES-GCM (Advanced Encryption Standard - Galois
    Counter Mode)
    https://en.wikipedia.org/wiki/Advanced_Encryption_Sta
    ndard
    https://en.wikipedia.org/wiki/Galois/Counter_Mode

    View Slide

  24. ChaChaPoly

    View Slide

  25. ChaCha20Poly1305 is an authenticated encryption
    scheme that combines ChaChaTLS and Poly1305.
    https://www.cryptopp.com/wiki/ChaCha20Poly1305

    View Slide

  26. Public Key Cryptography

    View Slide

  27. Public Key
    ● 二つの紐づいているキー(publicとprivate)
    ● 誰でもpublic keyで暗号化できるけどprivate keyだけが
    復号化できる
    ● Digital Signatureに向いている(みんなよくSSHで
    Githubに通信していると思うのでこういうユースケースは
    知っている!!!)

    View Slide

  28. View Slide

  29. Insecure Module

    View Slide

  30. Part 3: 実装方法

    View Slide

  31. ChaChaPoly
    ● 今年の発表のInspirationはChaChaPolyを利用したの
    で紹介したいと思います!

    View Slide

  32. 最初はSymmetricKeyを生成する

    View Slide

  33. キーチェーンに保存しておく

    View Slide

  34. 1. 暗号化する時一回文字列をデータに変換して
    2. ChaChaPolyを利用してkey使って箱を封印する
    3. 暗号化されたデータを返す

    View Slide

  35. 封印でこれ思い出す、すみませんCryptoKit関係なかったw

    View Slide

  36. ChaChaPoly.SealedBoxって何?
    This object includes the combined property, which in turn
    contains three properties:
    ● nonce: it is an arbitrary number used in data encryption.
    ● ciphertext: are the encrypted data, with the same size as
    the input data.
    ● tag: it is an authentication label and prevents data from
    being altered without us noticing.

    View Slide

  37. 1. 複号化する時にデータを利用してもう一回封印されてい
    る箱をinitして
    2. Keyを利用して箱を開けて
    3. データを文字列に戻す

    View Slide

  38. 感想
    ● CryptoKitだと昔のストレス・専門家知識がなくても使えるCryptographyはとても
    いい
    ● AppleのC言語のCryptographyライブラリーより踏み間違えにくい状態になって
    いる
    ● みんなはこのトークでちょっとでもCryptoKitの興味を持っていたら登壇してよかっ

    View Slide

  39. View Slide

  40. ありがとうございます!

    View Slide