Chiavi
Le chiavi sono parametri che consentono di rendere segrete le trasformazioni per la sicurezza
flowchart LR A((M)) B((k)) C{{T}} D((y)) A & B--> C --> D
In questo modo solo il possessore della chiave e in grado di riprodurre la trasformazione,e sempre possibile eseguire un attacco di forza bruta per risalire al valore della chiave ma la complessità computazionale del problema e esponenziale in funzione della dimensione della chiave
IMPLEMENTAZIONE DI E
Le trasformazioni E e S sono implementabili per mezzo dell’ utilizzo di chiavi:
--- title: E with keys --- flowchart LR subgraph source A((A)) B{{E}} end subgraph destination C{{D}} D((B)) end A --M--> B A --source k--> B B --> C C --M--> D D --dest k--> C
--- title: S with keys --- flowchart LR subgraph source A((A)) B{{S}} end subgraph destination C{{V}} D((B)) end A --M--> B A --source k--> B B --> C C --M--> D D --dest k--> C
Relazioni tra le chiavi
Le chiavi si dividono in due tipologie:
- simmetriche chiave della sorgente e della destinazione sono uguali o derivabili
- asimmetriche chiave della sorgente e della destinazione sono diverse e in questo caso si parla di coppie di chiavi (e.g. chiave pubblica/privata)
Chiavi simmetriche
Le chiavi asimmetriche necessitano di una gestione accurata in quanto la sicurezza di un protocollo dipende dalla sicurezza delle chiavi stesse, la chiave simmetrica deve quindi essere segreta e integra
Chiavi asimmetriche
Per una coppia di chiavi asimmetriche devono essere garantite proprietà diverse a seconda della chiave:
- chiave pubblica: integrità autenticità
- chiave privata: riservatezza e integrità
Una caratteristica fondamentale e che dalla chiave pubblica non deve essere possibile risalire alla chiave privata ( e.g. la chiave pubblica deve essere generata da una one way function)
Amministrazione delle chiavi
Per mantenere la riservatezza di una chiave e necessario un meccanismo che sia in grado di proteggerla da occhi indiscreti all’ interno di un calcolatore
flowchart LR subgraph M G[S cifrato] end subgraph P A{{H}} B{{Dk}} C{{Ek}} D{{RNG}} E{{Tk}} F[passphrase] H[M] I[C] end F --> A A --> B & C D --S-->C C --> G G --> B B --S--> E H -->E E -->I
In questo schema la chiave viene generata per mezzo di un RNG, cifrata per mezzo della hash della passphrase e salvata in memoria, in fase di cifratura questa viene decifrata e utilizzata