Perché SHA-1 può essere considerato una funzione hash sicura? Questo è qualcosa che mi chiedo ancora.
Comprendo i concetti del perché i moderni algoritmi asimmetrici sono considerati sicuri. Sono fondati su solidi problemi matematici che sono "difficili" da risolvere, ad es. logaritmi discreti in campi finiti o fattorizzazione di interi. I concetti di affermazioni e prove sulla sicurezza sono relativamente facili da seguire se si è consapevoli dei concetti matematici.
Ma quando si tratta di crittografia simmetrica e funzioni di hash sicure, l'immagine diventa molto meno chiara. Comprendo che esistono molti risultati e analisi per i codici a blocchi e gli algoritmi di digest, ma su cosa si basano questi risultati?
es. quando si tratta di cifrari a blocchi puoi trovare molte prove che l'algoritmo di cifratura X è resistente contro un certo numero di attacchi conosciuti . Oppure dimostrano che alcune proprietà valgono, ad es. ogni bit dell'input influisce sull'output, perché ciò è ritenuto necessario ecc. ecc.
Dall'esterno, la costruzione degli algoritmi di cifratura e digest sembra "cercare di armeggiare e manipolare l'input il più possibile" applicando shift di bit, XOR e così via.
Cosa vorrei sapere ora (sarei grato per una visione più approfondita di entrambi):
a) Potresti fornirmi dei riferimenti alle risorse (libri preferiti) che spieghino le considerazioni sulla progettazione e sulla sicurezza che è necessario prendere in considerazione quando si costruisce un
a1) algoritmo di cifratura
a2) Algoritmo di digest
questo spiegherebbe le cose come perché una S-box deve apparire esattamente come fa invece di qualsiasi altro modo e probabilmente anche più importante per me e per la mia comprensione perché sarebbe male se è stato costruito diversamente?
b) Esistono o sono i loro tentativi di modellare matematicamente queste "operazioni di bit-biddling" (ad esempio "attacchi algebrici" basati su un tale modello?)?
c) Come si "misura" la qualità di un algoritmo di digest come SHA-1? Cioè come puoi dire che è meglio fare uno spostamento di due bit qui anziché tre o uno XOR, e perché queste operazioni sono alla base di SHA-1 in primo luogo? Perché all'epoca sembrava l'unica cosa conosciuta che avrebbe "confuso al massimo" con l'input? Sto chiedendo perché sembra che la maggior parte dei candidati SHA-3 sia basata su algoritmi di cifratura (perché ci sono più risultati teorici) o ad es. su nuovi concetti come funzioni spugna . Per me le definizioni di uno qualsiasi degli algoritmi SHA (anche MD5) sembrano ancora "Scambiamoci, dobbiamo, noi?" - ma qual è il ragionamento che sta dietro? Perché farlo come hanno fatto?
Sarei più che felice se potessi darmi un'idea di questi argomenti.