Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Agenda

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Part 1: CryptoKitって何?

Slide 8

Slide 8 text

● 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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Part 2: CryptoKitで何を できる

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Hash Functions

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

password1234567 プレーンテキスト

Slide 16

Slide 16 text

password1234567 プレーンテキスト

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

簡単なコードExample

Slide 19

Slide 19 text

Symmetric Key Cryptography

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

AES-GCM

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

ChaChaPoly

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Public Key Cryptography

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Insecure Module

Slide 30

Slide 30 text

Part 3: 実装方法

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

最初はSymmetricKeyを生成する

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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.

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

ありがとうございます!