mirror of
https://github.com/valitydev/camp-creepy-crypto.git
synced 2024-11-06 01:25:19 +00:00
Publish lection on authenticated encryption
This commit is contained in:
parent
b81200fd97
commit
51e8b648a7
353
01-03-authenticated-encryption.md
Normal file
353
01-03-authenticated-encryption.md
Normal file
@ -0,0 +1,353 @@
|
|||||||
|
class: animation-fade
|
||||||
|
layout: true
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
class: impact
|
||||||
|
|
||||||
|
# Крипотная
|
||||||
|
## криптография
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Гарантии
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
## Конфиденциальность
|
||||||
|
|
||||||
|
- Невозможно извлечь перехваченную информацию, но можно подделать.
|
||||||
|
|
||||||
|
- Схема шифрования (cipher): $ c \leftarrow E(k, m) $, $ m \leftarrow D(k, c) $.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
## Целостность
|
||||||
|
|
||||||
|
- Невозможно подделать информацию, но можно перехватить и прочитать.
|
||||||
|
|
||||||
|
- Схема аутентифицированной подписи (MAC): $ t \leftarrow S(k, m) $, $ \\{0,1\\} \leftarrow V(k, m, t) $.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
### Что если нам нужно и то и другое?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
> **A**uthenticated **E**ncryption
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
## Схема шифрования
|
||||||
|
|
||||||
|
$ c \leftarrow E(k, m) $, $ c \in C $
|
||||||
|
|
||||||
|
$ m \leftarrow D(k, m) $,
|
||||||
|
--
|
||||||
|
$ m \in M \cup \\{ \bot \\} $
|
||||||
|
|
||||||
|
$ \bot $ или $ reject $ – _шифрованное сообщение не является валидным_.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
Как сконструировать?
|
||||||
|
--
|
||||||
|
Попробуем скомбинировать надёжную схему шифрования и надёжный алгоритм аутентифицированной подписи.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## SSL 3.0
|
||||||
|
|
||||||
|
.col-6[
|
||||||
|
|
||||||
|
$ E_{SSL3}((k_e, k_m), m, E, S) := $
|
||||||
|
|
||||||
|
$ \\qquad t \leftarrow S(k_m,m) $
|
||||||
|
|
||||||
|
$ \\qquad pad \leftarrow \\{0..255\\}^{l\_{pad}-1} \\| l_{pad}-1 $
|
||||||
|
|
||||||
|
$ \\qquad c \leftarrow E(k_e,m \\| t \\| pad) $
|
||||||
|
|
||||||
|
$ D_{SSL3}((k_e, k_m), c, E, V) := $
|
||||||
|
|
||||||
|
$ \\qquad m^{\\prime} \leftarrow D(k_e,c) $
|
||||||
|
|
||||||
|
$ \\qquad (m,t) \leftarrow m^{\\prime}[0..{l-l\_{pad}}], l_{pad} \leftarrow m^{\\prime}[l-1] $
|
||||||
|
|
||||||
|
$ \\qquad m \\> if \\> valid = V(k_m,m,t) \\> else \\> \bot $
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
.col-6[
|
||||||
|
|
||||||
|
### Насколько надёжна данная схема?
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
--
|
||||||
|
.col-6[
|
||||||
|
|
||||||
|
Всё очень плохо. 😰
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Надёжность
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Защищаемся от _активного_ злоумышленника
|
||||||
|
|
||||||
|
- может _перехватывать_ сообщения, как и раньше (_eavesdropping_)
|
||||||
|
- может _модифицировать_ сообщения (_tampering_)
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Злоумышленник может провести CCA (**C**hosen **C**iphertext **A**ttack)
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
Сыграем с ним в одну игру
|
||||||
|
|
||||||
|
<img style="width: 200px;" src="http://playeject.com/wp-content/uploads/2011/07/saw-figure.jpg" />
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Chosen Ciphertext Attack
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Судья выбирает секретный ключ $ k \xleftarrow{R} K $ и делает выбор $ b \xleftarrow{R} \\{0,1\\} $
|
||||||
|
|
||||||
|
* Злоумышленник формирует множество пар сообщений $ (m\_{10},m\_{11}) .. (m\_{p0},m\_{p1}) $ и отправляет судье
|
||||||
|
|
||||||
|
* Судья возвращает шифротекст $ c\_i = E(k,m\_{ib}) $ для каждого $ i \in \\{1..p\\} $ злоумышленнику
|
||||||
|
|
||||||
|
* Злоумышленник формирует множество $ \hat{c}\_j \notin \\{ c_1 .. c_p \\} $ и предоставляет судье
|
||||||
|
|
||||||
|
* Судья возвращает $ \hat{m}\_j = D(k,\hat{c}\_j) $ для каждого $ j \in \\{1..q\\} $ и предоставляет судье
|
||||||
|
|
||||||
|
* Злоумышленник делает догадку $ \hat{b} \in {0,1} $
|
||||||
|
|
||||||
|
Вероятность того, что $ \hat{b} = b $ должна быть _крайне мала_!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Надёжность
|
||||||
|
|
||||||
|
Схема шифрования надёжна в условиях CCA, если:
|
||||||
|
|
||||||
|
* **она надёжна в условиях CPA** и
|
||||||
|
|
||||||
|
* **она устойчива к подделке шифротекста** (_Ciphertext Integrity_)
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
### Только тогда она достойна называтся _аутентифицированной схемой шифрования_.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Конструкции
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
Что если мы возьмём _CPA secure cipher_ + _unforgeable MAC_?
|
||||||
|
--
|
||||||
|
💖
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
Не все комбинации одинаково полезны. 🤢
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Encrypt-then-MAC
|
||||||
|
|
||||||
|
* MAC-then-Encrypt
|
||||||
|
|
||||||
|
* MAC-and-Encrypt
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Encrypt-then-MAC
|
||||||
|
|
||||||
|
$ E_{etm}((k_e, k_m), m, E, S) := $
|
||||||
|
|
||||||
|
$ \\qquad c \leftarrow E(k_e,m) $
|
||||||
|
|
||||||
|
$ \\qquad t \leftarrow S(k_m,c) $
|
||||||
|
|
||||||
|
$ \\qquad (c,t) $
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
### Всем хороша!
|
||||||
|
|
||||||
|
* Главное – не использовать один и тот же ключ для $ S $ и $ E $
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* ...и аутентифицировать **все** данные, в том числе IV
|
||||||
|
--
|
||||||
|
<sub>(пример: iOS пятилетней давности)</sub>.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## MAC-then-Encrypt
|
||||||
|
|
||||||
|
$ E_{mte}((k_e, k_m), m, E, S) := $
|
||||||
|
|
||||||
|
$ \\qquad t \leftarrow S(k_m,m) $
|
||||||
|
|
||||||
|
$ \\qquad c \leftarrow E(k_e,(m,t)) $
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
### Не будьте как SSL 3.0
|
||||||
|
--
|
||||||
|
и TLS 1.0
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Множество _padding oracle attack_
|
||||||
|
|
||||||
|
* Пара _timing attack_
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Тем не менее **можно построить надёжную схему шифрования**, но много тонкостей
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Encrypt-and-MAC
|
||||||
|
|
||||||
|
$ E_{eam}((k_e, k_m), m, E, S) := $
|
||||||
|
|
||||||
|
$ \\qquad c \leftarrow E(k_e,m) $
|
||||||
|
|
||||||
|
$ \\qquad t \leftarrow S(k_m,m) $
|
||||||
|
|
||||||
|
$ \\qquad (c,t) $
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
### Тоже неплохо!
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* **Можно построить надёжную схему шифрования**,
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* ...но надо быть осторожным с выбором $ E $
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## Комбинации
|
||||||
|
|
||||||
|
Пара важных моментов
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* $ k_e \neq k_m $, иначе надёжность под угрозой
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Алгоритм расшифровки $ D $ должен быть **атомарным**,
|
||||||
|
--
|
||||||
|
иначе будет как в SSHv2 🤕
|
||||||
|
|
||||||
|
> Our attacks against OpenSSH, where we can verifiably recover 14 bits of plaintext from an arbitrary block of ciphertext with probability $ 2^{−14} $ and 32 bits of plaintext from an arbitrary block of ciphertext with probability $ 2^{−18} $.
|
||||||
|
> <cite>Plaintext Recovery Attacks Against SSH, Martin R. Albrecht et al.</cite>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## AEAD
|
||||||
|
|
||||||
|
Схема аутентифицированного шифрования с открытыми данными (**A**uthenticated **E**ncryption with **A**ssociated **D**ata)
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Придуманы специально для людей, не занимающихся криптографией <sub>например, меня</sub>
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Все данные аутентифицированы, но не все – зашифрованы
|
||||||
|
|
||||||
|
$ (c,d) \leftarrow E(k,m,d,nonce) $
|
||||||
|
|
||||||
|
$ m \leftarrow D(k,m,d,nonce) $
|
||||||
|
|
||||||
|
<img style="width: 80%;" src="assets/aead.png" />
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## AEAD
|
||||||
|
|
||||||
|
* Если $ |m| = 0 $, с лёгкостью превращается в _MAC_.
|
||||||
|
|
||||||
|
* Если $ |d| = 0 $, с лёгкостью превращается в _AE cipher_.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
## Стандарты
|
||||||
|
|
||||||
|
Параметризируются _CPA secure cipher_ $ E $, например AES.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* **GCM** (Galois Counter Mode) <sub>= CTR + Carter Wegman MAC</sub>
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* **EAX** (Encrypt-Authenticate-Translate) <sub>= CTR + One-key MAC</sub>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Аутентифицированное шифрование
|
||||||
|
|
||||||
|
## OCB (Offset Codebook Mode)
|
||||||
|
|
||||||
|
<img style="width: 58%;" src="assets/ocm.png" />
|
||||||
|
--
|
||||||
|
<img style="width: 36%; padding-left: 40px;" src="assets/ocb-auth.png" />
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
* Только один вызов $ E $ на один блок исходного сообщения
|
||||||
|
|
||||||
|
* Крайне быстро!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
class: impact
|
||||||
|
|
||||||
|
# Осталось
|
||||||
|
## совсем немного
|
BIN
assets/aead.png
Normal file
BIN
assets/aead.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 57 KiB |
BIN
assets/ocb-auth.png
Normal file
BIN
assets/ocb-auth.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
BIN
assets/ocm.png
Normal file
BIN
assets/ocm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 149 KiB |
56
outline.md
56
outline.md
@ -30,9 +30,8 @@
|
|||||||
- ~~prf~~
|
- ~~prf~~
|
||||||
- det ctr / аналогия с stream cipher
|
- det ctr / аналогия с stream cipher
|
||||||
- cpa / probabilistic algos / randomization
|
- cpa / probabilistic algos / randomization
|
||||||
- cbc / iv / rand ctr
|
- cbc / iv / ~~rand ctr~~
|
||||||
- malleability + cca
|
- malleability + cca
|
||||||
* message integrity
|
|
||||||
|
|
||||||
### Практика
|
### Практика
|
||||||
|
|
||||||
@ -43,6 +42,59 @@
|
|||||||
|
|
||||||
## Лекция 2
|
## Лекция 2
|
||||||
|
|
||||||
|
### Теория
|
||||||
|
|
||||||
|
> ≈ 45 минут
|
||||||
|
|
||||||
|
О чём: контроль целостности
|
||||||
|
|
||||||
|
* message integrity
|
||||||
|
- плюс authenticity
|
||||||
|
- не confidentiality!
|
||||||
|
- нужен ключ, иначе нет authenticity
|
||||||
|
- игра _попробуй подделать подпись_
|
||||||
|
- AES в CBC-MAC
|
||||||
|
- хэши как PRF
|
||||||
|
- one way
|
||||||
|
- collision resistance
|
||||||
|
- HMAC
|
||||||
|
|
||||||
|
### Практика
|
||||||
|
|
||||||
|
> ≈ 240 минут
|
||||||
|
|
||||||
|
1. Изменение статуса пользователя с помощью length extension attack на доморощенный алгоритм подписи вида `H(secret || message)`.
|
||||||
|
|
||||||
|
|
||||||
|
## Лекция 3
|
||||||
|
|
||||||
|
> ≈ 45 минут
|
||||||
|
|
||||||
|
### Теория
|
||||||
|
|
||||||
|
О чём: аутентифицированное шифрование
|
||||||
|
|
||||||
|
* схема шифрования с bottom
|
||||||
|
- confidentiality + integrity
|
||||||
|
- можем не расшифровать невалидный ct
|
||||||
|
- security under cca
|
||||||
|
+ пример с перехватом почты
|
||||||
|
+ равно cpa security + ciphertext integrity
|
||||||
|
+ что такое ciphertext integrity
|
||||||
|
+ _попробуй сформировать валидный ct_
|
||||||
|
- скомбинировать cpa secure cipher + unforgeable mac
|
||||||
|
+ mac-then-encrypt
|
||||||
|
+ encrypt-then-mac
|
||||||
|
+ encrypt-and-mac
|
||||||
|
- сформулировать схему aead
|
||||||
|
+ authentcated data
|
||||||
|
|
||||||
|
### Практика
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Лекция 4
|
||||||
|
|
||||||
> ≈ 75 минут
|
> ≈ 75 минут
|
||||||
|
|
||||||
О чём: сложность проблем, обмен ключами, асимметричное шифрование
|
О чём: сложность проблем, обмен ключами, асимметричное шифрование
|
||||||
|
Loading…
Reference in New Issue
Block a user