Typo.
[crypto_lab2.git] / notes.txt
1 Labo 2
2 ======
3
4
5 * Intégrité
6 * Authenticité
7 * Confidentialité
8
9 chiffrer -> signer -> stocker
10
11 * Signer les données de manière asymétrique (pair de clefs)
12 * Clef symétrique unique par fichier?
13 * Pair de clefs asymétrique pour chiffrer les clefs symétriques
14 * Vérifier l'intégrité
15 * Un seul fichier à protéger
16 * Définir un format d'un 'container' avec header et tout le bordel
17 * (pour la dernière partie), Comment stocker les clefs?
18
19 Attention aux méta-données des fichiers!:
20    * Nom
21    * Taille
22    * Date de modification/création
23
24
25 Inputs
26 ------
27
28 Chiffrement :
29    * Le fichier
30    * La clef publique
31
32 Déchiffrer :
33    * Le container
34    * La clef privée
35
36 Algorithmes et paramètres :
37    RSA-2048 pour la signature
38    RSA-2048 pour le chiffrage des clefs
39    HMAC-SHA256 pour l'intégrité
40    AES-CBC-256 pour le chiffrement symétrique
41
42
43 Processus de chiffrement
44 ------------------------
45
46 inputs:
47    d : contenu du fichier
48    metas : métas données associées au fichier
49    kpub : clef publique RSA
50    ksignpriv : clef privé de signature DSA
51
52 * Génération d'une clef 256 bits pour AES -> kc
53 * Génération d'une clef 256 bits pour MAC -> ka
54 * Génération d'un IV pour le mode CBC -> iv
55 * Construction du plaintext, voir format ci dessous
56 * Chiffrement du plaintext avec AES-CBC256 et kc et iv -> ciphertext
57 * Calcul de MAC de ciphertext -> mac
58 * Signature de mac -> sig
59 * Chiffrement de kc + ka + iv avec kpub (RSA) -> keys
60 * Renvoie mac + sig + keys + ciphertext
61
62
63 Processus de déchiffrement
64 --------------------------
65
66 inputs.
67    d : contenu chiffrées
68    kpriv : clef privée
69    ksignpub : la clef publique de signature
70
71 * Déchiffrement de kc + ka avec kpriv (ECDSA)
72 * Vérification de l'intégrité avec MAC
73 * Vérification de la signature avec ksignpub
74 * Déchiffrement du ciphertext
75
76
77 Format du container
78 ===================
79
80 container = mac[256], signature[2048], keys[2048], ciphertext
81 ciphertext = AES(plaintext)
82 plaintext = header, file-content ;
83 header = file-size[64], meta-data-size[16], meta-data ;
84 meta-data = { key-value-pair } ;
85 key-value-pair = key[string], value[string]
86 string = size[8], content-utf8 ;
87