-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathstream_ciphers.theory.txt
59 lines (52 loc) · 3.25 KB
/
stream_ciphers.theory.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
┏━━━━━━━━━━━━━━━━━━━━┓
┃ STREAM_CIPHERS ┃
┗━━━━━━━━━━━━━━━━━━━━┛
Appelé aussi :
- state cipher.
- autokey cipher est nom en crypto classique désignant un cipher dont la keystream dépend état précédent du ciphertext, plaintext ou keystream : par conséquent, similaire au moderne stream cipher (qui ajoute cependant la notion de générateur pseudo-aléatoire)
Avantages par rapport à block ciphers :
- longueur inconnue à l'avance (streaming)
- plus rapide
- si synchronous, keystream generator peut être dissocié du ciphertext generator => peut limiter sécurité cryptographic ou
authorization access au keystream generator
=> souvent utilisé par les militaires qui utilisent crypto hardware, contrairement aux civils qui utilisent des block
ciphers qui utilise crypto logicielle
Désavantages :
- pas toujours plus secure
- plus difficile de faire message authentication + intégrité ???
Peuvent être comparées à des block ciphers dont u == n (de même qu'inversement block cipher en mode CTR, CFB ou OFB peuvent être comparés à des stream ciphers)
Principe :
- ciphertext == E( m + k )
- m : chaque unit du plaintext
- k : chaque unit de la clef (keystream)
- + : en général xor, modular + ou modular -
- E() est souvent fonction pseudo-aléatoire
- possède une période donnée : "internal state length" est longueur de cette période
- il y a une keystream, qui est générée via une clef au début, appelée seed key
- types :
- self-synchronizing / asynchronous cipher / ciphertext autokey (CTAK) / text-autokey :
- k : N precedents unit du ciphertext.
- ajout/suppression d'une unit : synchronization après N units.
- altération d'une unit : altère les N units suivants
- synchronous cipher / key-autokey :
- k : precent unit de la keystream.
- a une période, contrairement à self-synchronizing cipher
- ajout/suppression d'une unit : pas de synchronization
- altération d'une unit : altère seulement cette unit
- prédictabilité de relation plaintext/ciphertext => known-plaintext attack, ou attaquant peut modifier plaintext, même sans connaître clef.
- possibilité de buffering de la keystream avant obtention du plaintext (chiffrement) ou ciphertext (déchiffrement)
Synchronization :
- transmission errors : lors de la transmission du ciphertext (déjà chiffré donc), non dans celle de la clé, ou dans
l'obtention du plaintext par l'émetteur.
- types :
- ajout/suppression d'une unit
- altération d'une unit (transmission error rate)
- error propagation : fait que l'un des deux fasses corrompe le déchiffrement de toutes les units suivants
- synchronization : fait que l'error propagation soit limitée aux N caractères suivants
Sécurité :
- pseudo-aléatoirité :
- longueur de la période
- impossibilité de trouver le "state" pseudo-aléatoire à partir du ciphertext
- keystream doit avoir l'air parfaitement aléatoire
- parfaite confusion
- pas d'utilisation d'un même nonce plusieurs fois