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

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

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

  5. Agenda

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

  7. Part 1: CryptoKitって何?

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

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

  11. None
  12. Hash Functions

  13. Hash Functions • 一方向 - 実質的に元に戻せない • 決定論的 - 同じメッセージは常に同じハッシュ値になる

    ことを意味します • 一意 - 同じハッシュ値を持つ 2 つの異なるメッセージを 見つけることは事実上不可能であることを意味します
  14. Hash Functionの使い方 • Digital Signature • Message Authentication • Password

    Verification • など
  15. password1234567 プレーンテキスト

  16. password1234567 プレーンテキスト

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

  18. 簡単なコードExample

  19. Symmetric Key Cryptography

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

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

  22. AES-GCM

  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
  24. ChaChaPoly

  25. ChaCha20Poly1305 is an authenticated encryption scheme that combines ChaChaTLS and

    Poly1305. https://www.cryptopp.com/wiki/ChaCha20Poly1305
  26. Public Key Cryptography

  27. Public Key • 二つの紐づいているキー(publicとprivate) • 誰でもpublic keyで暗号化できるけどprivate keyだけが 復号化できる •

    Digital Signatureに向いている(みんなよくSSHで Githubに通信していると思うのでこういうユースケースは 知っている!!!)
  28. None
  29. Insecure Module

  30. Part 3: 実装方法

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

  32. 最初はSymmetricKeyを生成する

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

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

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

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

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

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