-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcrypto_general.theory.txt
282 lines (258 loc) · 15.3 KB
/
crypto_general.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
┏━━━━━━━━━━━━━┓
┃ GENERAL ┃
┗━━━━━━━━━━━━━┛
Vocabulaire:
- ciphertext (texte chiffré) vs plaintext (texte en clair)
- spécification vs implémentation:
- Les failles sont souvent dans l'implémentation d'un algo et non dans l'algo, même si cet algo est secure.
- cipher: algo utilisé
- encrypt[ion] (chiffre[r][ment]) / decrypt[ion] (déchiffre[r][ment])
- Autre vocabulaire différent:
- encrypt/decrypt (crypto) vs code/decode (data transmission)
- decrypt (crypto) vs decipher (pas crypto, plus le fait de lire un article compliqué par exemple)
- mais encrypting == ciphering
- décrypter (sans la clef ou l'algo ("break")) vs déchiffrer (avec les deux)
- cipher (US) vs cypher (UK)
- key (clef)
Types historiques de crypto:
- classical cipher: souvent lettre, et à la main
- modern cipher: souvent bits/octets, et avec ordinateurs
Différences (but):
- cryptographie: confidentialité, authentication, ou intégrité
- compression: réduction de taille
- data transmission: change le channel (ex: code Morse)
Security objectives (buts essentiels):
- Five pillars model:
- pillars:
- Confidentiality / Privacy / Secrecy:
- Eve ne peut pas lire message (seul Alice et Bob le peuvent)
- Integrity:
- pas de changement entre émission par Alice et réception par Bob
- pb d'integrity peut être:
- non-intentionnel
- malicieux
- peut être:
- prévention
- dont propagation des erreurs
- détection
- réparation
- Authentication:
- types:
- message/data origin authentication:
- tel message envoyé a bien été initié par X
- suppose que X est Alice, mais ne peut pas en être sûr sans entity authentication
- donc n'implique pas intégrité (mais intégrité implique message authentication)
- entity authentication/identification:
- X est bien Alice
- si algo asymétrique, implique key authentication de clef publique d'Alice
- n'implique pas forcément de messages
- peut utiliser un two-factor authentication
- key authentication:
- clef secrète donnée par Alice ou Bob, appartient bien à lui/elle
- problème surtout pour crypto asym., car plus de risque d'attaque active (Mallory)
- message + entity authentication: message envoyé a bien été initié par Alice
- two-way/mutual authentication: authentication d'Alice par Bob, et inversement
- Non-repudation:
- message a bien été envoyé par Alice, et est bien ce message
- impliqué par integrity + message authentication + entity authentication
- Availibility:
- le message est disponible pour Bob, quand il le veut:
- disponibilité absolue (DDoS)
- délai / rapidité
- soit: uptime (message est dans le réseau) + possibilité pour Bob d'accéder au réseau
- high availability:
- toujours available
- types de downtimes:
- scheduled downtime: maintenance
- unscheduled downtime: attaque, hardware failure, software failure, etc.
- critiques:
- authentication et non-répudiation ne sont pas une propriétés mais procedures permettant d'assurer l'intégrité
- CIA triad:
- Confidentiality, Integrity et Availibility: cf critique de Five pillars model
Security objectives peuvent être obtenus par des moyens:
- physiques
- non-physiques, dont cryptographiques
Autres termes:
- Authorization: droit par une autorité de faire quelque chose
- Validation: contrôle pour permettre une authorization en fonction d'une durée limitée
- Access control: limiter l'accès aux ressources aux entités privilégiées
- Certification: endorsement of info par une entité trusted
- Revocation: annulation d'une certification ou authorization
- witnessing: vérification de l'existence d'une info par une entité autre que son créateur
- Receipt: preuve qu'une info a été reçue
- Confirmation: preuve qu'un service a été effectué
Multi-encryption/superencryption:
- encrypter un message déjà chiffré.
- Attention:
- si utilisation de la même clef, réduit en fait souvent la confidentialité.
- si clef différentes, bits of security souvent < ce que l'on pourrait penser
- ex: meet-in-the-middle attaque
- le ciphertext intermédiaire doit avoir une distribution aléatoire uniforme (ex contraire: header PGP), sinon known plaintext attack.
Combination de transposition + substitution:
- transposition supprime risque de crackage par remplacement de lettre (après frequency analysis)
- substitution supprime risque d'attaque par anagramme
Fractionation:
- avant chiffrement, chaque unit de plaintext est divisé en plusieurs unit de ciphertext intermédiaire, qui sont ensuite chiffrées isolément.
- augmente la diffusion -> contre frequency analysis
- souvent utilisée comme première étape, avec un autre chiffrement ensuite
- exemples:
- utiliser valeur ASCII du plaintext, puis chiffrer les bits
- Polybius's square
Principes de Shannon:
- diffusion:
- ciphertext a une distribution uniforme aléatoire.
- en fait "le plaintext et le ciphertext n'ont pas de lien direct apparent", mais implique proposition ci-dessus
- Cela permet d'avoir un diagramme de fréquency analysis plat, et de résister à ces attaques.
- Changer une unit du plaintext doit:
- changer complètement le ciphertext (en fait une probabilité de 50% du ciphertext) (avalanche effect)
- avoir une chance sur 2 de changer une unit donnée du ciphertext (strict avalanche criterion)
- confusion:
- le ciphertext et la clef n'ont pas de lien direct apparent.
- Changer une unit de la clef doit changer complètement le ciphertext (par conséquent chaque unit du ciphertext dépend de
l'ensemble des units de la clef)
- Bit independance criterion (BIC): le changement d'un output bit, déclenché par celui d'un input bit, ne doit pas être lié à celui d'un autre output bit.
Permutation:
- a bijection to itself: f: X -> X (cf maths.txt)
- peut être exprimée par un tableau où les nombres du haut sont le domain, et ceux du bas le codomain
- ex: cf plus haut f(x) = x³ % pq: il s'agit en fait d'une permutation (qui est aussi une trapdoor one-way function)
Involution:
- permutation dont l'inverse function est la même que la function (f == f⁻¹)
- reciprocal cipher sont des cipher involutifs
Composition:
- enchaînement de deux fonctions de chiffrement: f . g, possible si codomain de f comprend domain de g
- la composition de deux involutions n'est pas forcément une involution
Définitions:
- Alphabet of definition:
- ensemble comprenant tous les éléments d'un domain.
- Noté A, avec w élements (notés a).
- Si A = {0,1}, il s'agit d'un binary alphabet.
- Dans un système binaire, u est aussi l'unit size, car u == 2^nb de bits.
- Message space, noté M, ensemble des plaintexts possibles {m₁,...,mₙ}, à partir de A. Taille du message est n units.
- Ciphertext space, noté C, ensemble des ciphertexts possibles {c₁,...,cₙ}, à partir de A
- Key space, noté K, ensemble des clefs possibles {e₁,...,eₙ} (pour le chiffrement) et {d₁,...,dₙ} (pour le déchiffrement).
- E est l'algo de chiffrement (ensemble des bijections possibles)
- E doit être une function 1-1 M -> C, ce qui revient à dire une bijection M -> Im(E), afin de pouvoir avoir une fonction inverse, et déchiffrer.
- Eₑ désigne alors une seule bijection pour la clef e: Eₑ: M -> C.
- on peut donc voir l'ensemble des clefs e comme des variantes possibles de E, et non des objets utilisés par E
- Même chose pour Dᵈ: C -> M.
- La paire (e,d) définie, selon le principe de Kerckhoff, la seule information secrète d'une communication classique.
- un encryption scheme est un ensemble de paire {Eₑ: e∈ K, M -> C},{Dᵈ: d∈ K, C -> M} pour l'ensemble des e et d d'une K.
- "construct" an encryption scheme = choisir chacun de ces éléments
"Shared secret": information confidentielle d'un algo:
- pour crypto, la clef
- pour stego, fait qu'un carrier comporte un payload
Crypto primitives:
- algos vu comme une building brick d'un système de sécurité.
Système de sécurité:
- ensemble de primitives, permettant une confidentialité accrue, ou l'ajout de propriété comme l'intégrité, l'authentication, la non-répudiation, la compression ou l'encoding.
- chiffrement mixte:
- asymétrique pour transmettre une clef symétrique (clef de session)
- communication avec chiffrement symétrique avec clef de session, qui expire au bout d'un temps (par exemple une minute), et exige une nouvelle création de clef de session.
- permet avantages de chiffrement asymétrique (authentication, pas besoin de channel confidentiel), mais avec rapidité de chiffrement symétrique
- ex: ssh.
Types de crypto primitives:
- symmetric-key algo:
- clefs chiffrement et déchiffrement identiques, ou related
- asymmetric-key algo
- clefs chiffrement et déchiffrement différentes
- clef privée:
- créée en local
- permet de:
- créer des clefs publiques
- déchiffrer un message chiffré par une clef publique
- chiffrer un messages déchiffrables par une clef publique.
- chiffrer le checksum (destinataire déchiffrant, et comparant avec checksum qu'il calcule) permet intégrité + message authentication
- on pourrait utiliser le message entier, mais checksums sont plus rapides
- clef publique:
- permet de:
- chiffrer un messages déchiffrables par une clef privée
- déchiffrer un message chiffré par une clef privée
- paire clef publique / clef privée permet donc:
- confidentialité des messages reçus (et chiffrés par clefs publiques), et non envoyés
- authentication des messages envoyés (et non reçus)
- Echange de clefs publiques:
- permet confidentialité des messages envoyés et message-authentication des messages reçus
- pas besoin d'échager les clefs privés, donc pas besoin channel confidentiel
- mais besoin d'un authentic channel: ne doit pas recevoir fausses clefs publiques, qui permettrait à l'attaquant de déchiffrer avec ses propres clefs privés.
- solutions:
- Hierarchie de Certificate authorities (CA) / Public Key Infrastructure (PKI) / X.509:
- un CA root peut:
- signer certificat (attester le fait que le channel est authentic)
- délivrer les clefs publiques lui-même
- déleguer cela à une CA enfant, qui peut elle-même déléguer
- "trust" dépend du trust dans le CA root.
- Web of trust:
- on choisit soi-même:
- les authorities pouvant signer les certificat (catégories: full-trusted ou half-trusted)
- le nombre de signatures par ces gens exigées pour le channel soit considéré authentic.
- hash function: cf hash_functions.txt
- dont MAC: cf MAC.txt
- PRNG (PseudoRandom Number Generator): cf random.txt
Types de crypto moderne:
- stream cipher: cf Stream_ciphers
- block cipher: cf Block_ciphers
Electronic signature:
- valide notamment aux Etats-Unis, UE, Australie, Inde, et majorité du monde (mais législation diffère)
- même valeur que signature écrite
- ex:
- digital signature:
- peut offrir un timestamp en plus:
- prouve l'heure de la signature
- empêche une clef privée compromise d'être utilisée à nouveau
- telegraphic signature
- fax d'une signature faite à la main
- entrer code confidentiel pour CB
- signature avec stilet sur tablette (ex: recommandés)
- clic "J'accepte la condition" (doit permettre de lire, et de bloquer further steps, sans clic)
- signature biométriques (iris, empreintes doigt, taille main, rétine)
Kerckhoff's principle:
- algo doit rester secure, même s'il devait être public:
- Shannon's maxim: "the ennemy knows the system".
- security by design, par opposition à security though obscurity
- raisons:
- clef est info plus petite qu'algo, plus facile à dissimuler
- plus facile de changer de clef que de changer d'algo
- par conséquent, c'est la clef qui doit être confidentielle seulement, pas l'algo
- cracker revient donc à cracker la clef, non l'algo
- corollaire: même avec algo secure, si clef faible, pas secure
- algo peut être confidentiel cependant: "algo should not rely on secrecy" != "algo should not be secret"
- cependant publier algo permet vertus de la security by design
- par ailleurs, la clef n'a même plus qu'à être trusted et non confidentiel avec la crypto asymétrique
- snake oil: algo non public, souvent propriétaire et promu comme révolutionnaire, et à éviter
- security through minority:
- comme security though obscurity mais basé sur fait non qu'algo est inconnu, mais peu connu
- à éviter aussi: les algos les plus connus sont ceux qui ont le plus essayés d'être crackés
Defense-in-depth:
- fait de multiplier les layers de sécurité pour augmenter sécurité d'un système.
- exemple: stego + crypto
- dans un même temps, un système de sécurité doit:
- réduire le nombre et complexité des single points of failure (point d'un système de sécurité, qui s'il pose problème, rend caduc tout le système)
- et non les multiplier et compliquer
- il faut donc que chaque layer de sécurité ait peu et des simples single points of failure, mais que l'échec d'un layer de sécurité n'impacte pas sur la sécurité des autres layers.
- multi-factor authentication:
- authentication demandant deux preuves d'identités
- différents factors possibles:
- what he knows: possession intellectuelle: password
- what he has: possession physique externe: carte, dongle
- what he is: possession physique interne: biometric data
- how he behaves: comportement: plusieurs erreurs sur code PIN, heure de l'authentication, inter-timing keyboard typing
- souvent two-factor authentication (TFA, 2FA)
- souvent intellectuelle + physique
- parfois appelé de manière marketing "strong authentication"
- ex: cartes bancaires:
1) utilisation de la clef privée trouvée sur le chip de la card
2) utilisation d'un code PIN
Two-man rule:
- authentication demande authentication de deux entités séparées
- ex: missile nucléaire sur sous-marin
zeroisation:
- fait de mettre à 0 les info. sensibles (souvent clefs) lorsque sécurité est compromise
- ex: matériel tamper-resistant zeroisant lors d'infraction
- cold zeroisation: possibilité pour une machine de zeroiser même sans sa source d'énergie
Private Information Retrieval (PIR):
- faire une requête sur la database d'un serveur, sans que ce serveur sache quel est l'item recherché (et non quel est la
signification non chiffrée de l'item)
- ex:
- télécharger database entière
- symetric PIR / oblivious transfer (OT):
- PIR, où le client ne peut qu'obtenir l'item recherché