
Libreria composta da spiegazione e implementazione di tutti gli attacchi esistenti su vari sistemi di crittografia, firme digitali, scambio di chiavi, metodi di autenticazione insieme a sfide esemplificative tratte da CTF.
Crypton è una libreria educativa per imparare e praticare la crittografia offensiva e difensiva. È fondamentalmente una raccolta di spiegazioni e implementazioni di tutte le vulnerabilità e attacchi esistenti su vari sistemi di crittografia (simmetrici e asimmetrici), firme digitali, codici di autenticazione del messaggio e sistemi di crittografia autenticata. Ogni attacco è anche corredato da esempi di sfide tratte da competizioni "Capture The Flag" e dalle relative soluzioni. Le persone che sono già familiari (o sono coinvolte nei CTF) con questo campo possono usare Crypton come strumento per risolvere sfide basate su una particolare vulnerabilità esistente.
La libreria verrà continuamente aggiornata con spiegazioni di attacchi e sfide CTF! Sentiti libero di scrivermi per qualsiasi suggerimento!
Ho scritto un post sul blog riguardo la cronologia dello sviluppo di questa libreria: https://masterpessimistaa.wordpress.com/2018/08/12/announcing-crypton-an-educational-library-to-learn-offensive-and-defensive-cryptography/
AVVERTENZA: L'autore non garantisce in alcun modo che il codice sia sicuro. La libreria è solo a scopo educativo e il codice non dovrebbe essere utilizzato per implementazioni nel mondo reale. Tutti gli script di esempio nella libreria sono implementazioni banali.
Ci sono diverse sezioni in questo README:
Aiutare i giocatori di CTF e le persone interessate al campo della crittografia fornendo una piattaforma per imparare gli attacchi crittografici e per i giocatori CTF esperti per praticare sfide sistematicamente suddivise in attacchi associati a diversi sottodomini della crittografia. Inoltre, illustrare attraverso varie spiegazioni di attacchi come un'implementazione corretta dei protocolli sia cruciale.

|-------|:---------------------------:|:-----------------------------------------------------------------------------------------------:|:------------:|:----------:| | 1 | DLP- Gruppi Ciclici, Problema del Logaritmo Discreto|
Ashutosh Ahelleya
| N. | Argomento | Spiegazione | Implementazione/Exploit | Sfida# |
|---|
| 1 | Nozioni di base sui cifrari a blocchi- funzionamento dei cifrari a blocchi, padding ecc. |
|
|
|
| 2 | Modalità di crittografia- diverse modalità operative sui cifrari a blocchi: ECB, CBC, CTR |
|
|
|
| 3 | Rilevamento dimensione del blocco- rilevare la dimensione del blocco di un cifrario a blocchi che crittografa dati su un servizio remoto |
|
|
|
| 4 | Rilevamento della modalità- rilevare il tipo di modalità di crittografia: crittografia indipendente o dipendente dei blocchi |
|
|
|
| 5 | ECB Byte per volta- decifratura byte per volta di una stringa secret in esecuzione su un servizio remoto che crittografa input+secret in modalità ECB |
|
|
|
| 6 | Rilevamento IV del CBC- rilevare il valore del vettore di inizializzazione su un servizio remoto che crittografa il nostro input usando un cifrario a blocchi in modalità CBC |
|
|
|
| 7 | Attacco CBC Bit Flipping- sfruttare il meccanismo di generazione dei cookie per accedere come admin quando il cookie è generato usando un cifrario a blocchi in modalità CBC |
|
|
|
| 8 | CBC Byte per volta- decifratura byte per volta di una stringa secret in esecuzione su un servizio remoto che crittografa input+secret in modalità ECB |
|
|
|
| 9 | Attacco CBC Padding Oracle- decifratura di dati crittografati da un servizio vulnerabile che fornisce crittografia/decifratura |
|
|
|
| 10 | CTR Bit Flipping- sfruttare il meccanismo di generazione dei cookie per accedere come admin quando il cookie è generato usando un cifrario a blocchi in modalità CBC |
|
|
|
| N. | Argomento | Spiegazione | Implementazione/Exploit | Sfida# |
|---|
| 1 | RSA senza padding Enc/Dec- generazione delle chiavi, distribuzione, crittografia/decifratura, verifica della formula di decifratura e padding in RSA |
|
|
|
| 2 | Attacco a radice diretta- attacco su RSA senza padding con esponente pubblico basso |
|
|
|
| 3 | Fattorizzazione di Fermat- tecnica usata per fattorizzare il modulo n quando i valori di p e q sono vicini |
|
|
|
| 4 | Fattorizzazione p-1 di Pollard- tecnica per fattorizzare n quando entrambi i suoi fattori p e q, p-1 e q-1 hanno divisori primi molto piccoli |
|
|
|
| 5 | Attacco a modulo comune- decifrare il crittogramma quando il corrispondente testo in chiaro viene crittografato due volte con lo stesso modulo n |
|
|
|
| 6 | Attacco a primo comune- recuperare i fattori dei moduli n1 e n2 quando hanno un fattore comune |
|
|
|
| 7 | Attacco di Wiener- ottenere il valore dell'esponente della chiave di decifratura d quando d < N0.25 |
|
|
|
| 8 | Variante dell'attacco di Wiener- ottenere il valore dell'esponente della chiave di decifratura d quando d è di pochi bit maggiore di N0.25 o d < N0.25 |
|
|
|
| 9 | Attacco di Coppersmith- teorema di Coppersmith, attacco su messaggi stereotipati e fattorizzazione di n con bit alti noti |
|
|
|
| 10 | Attacco di Franklin Reiter a messaggi correlati- attacco per recuperare messaggi correlati crittografati usando lo stesso modulo |
|
|
|
| 11 | Attacco broadcast di Hastad - con estensione- attacco per recuperare un messaggio trasmesso a diverse persone, crittografato usando lo stesso esponente ma moduli diversi |
|
|
|
| 12 | RSA con padding PKCS1-v1.5 - Crittografia/Decifratura- codifica ASN1, crittografia RSA con padding (da correggere) |
|
|
|
| 13 | Attacco Oracle al bit meno significativo- attacco su un oracolo RSA che rivela il valore del bit meno significativo durante la decifratura |
|
|
|
| 14 | Attacco per recuperare il modulo- attacco su un oracolo RSA per estrarre il valore del modulo nel caso non sia pubblico |
|
|
|
| 15 | Sfide introduttive RSA- sfide di base in RSA relative alla teoria dei numeri |
|
|
|
| N. | Argomento | Spiegazione | Implementazione/Exploit | Sfida# |
|---|
| 1 | Codice di autenticazione del messaggio- interni e analisi di sicurezza dei MAC |
|
|
|
| 2 | Falsificazione CBC MAC- generare due messaggi M1 e M2 con lo stesso tag di autenticazione CBC-MAC |
|
|
|
| 3 | Attacco di estensione della lunghezza su CBC-MAC- generare un tag di autenticazione valido per il messaggio M1 || M2 (concatenazione) dato MAC(M1) |
|
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Crittosistema ElGamal - Crittografia/Decifratura- generazione delle chiavi, crittografia, decifratura nel crittosistema ElGamal |
|
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Fondamenti e aspetti interni dell'AE- funzionamento della crittografia autenticata |
|
|
|
| 2 | AE con MAC- diverse tecniche di implementazione dell'AE con MAC: Crittografia e MAC, MAC poi crittografia e crittografia poi MAC |
|
|
|
| 3 | Cifrari Autenticati |
|
|
|
| 4 | AE con Dati Associati |
|
|
|
| 5 | AES-GCM- crittografia in AES-GCM, MAC Wegman-Carter |
|
|
|
| 6 | Attacco Forbidden su AES-GCM- attacco su AES-GCM dovuto al riutilizzo del nonce |
|
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Aspetti interni delle Curve Ellittiche- definizione delle curve ellittiche, addizione di punti, raddoppio di punti e moltiplicazione scalare |
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Firme ElGamal- generazione delle chiavi, generazione della firma, verifica della firma e correttezza dello schema di firma ElGamal |
|
|
|
| 2 | ECDSA- generazione della firma, verifica della firma e correttezza dell'algoritmo di firma |
|
|
|
| 3 | Attacco k-reuse su ECDSA- falsificazione delle firme ECDSA a causa del riutilizzo di k |
|
|
|
| 4 | Firme Digitali RSA senza padding- generazione e verifica della firma nello schema di firma digitale RSA |
|
|
|
| 5 | Firme Digitali RSA con padding PKCS1-v1.5 |
|
|
|
| 6 | Attacco di Bleichenbacher con e=3 |
|
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Fondamenti dell'Identificazione |
|
|
|
| 2 | Autenticazione tramite Chiave Effimera |
|
|
|
| S.No. | Topic | Explanation | Impl./Exploit | Challenge# |
|---|
| 1 | Fondamenti dello Scambio di Chiavi Diffie-Hellman |
|
|
|
| 2 | Attacchi di Confinamento in Sottogruppi Piccoli |
|
|
|
| 3 | Attacco su Punto di Curva non Valido |
|
|
|