Tutorials

14. Librerie Crittografiche

La scelta di una libreria crittografica è una decisione cruciale che influisce direttamente sulla sicurezza e sull'efficienza di un'applicazione. Questa scelta deve essere guidata da diversi fattori c

La scelta di una libreria crittografica è una decisione cruciale che influisce direttamente sulla sicurezza e sull'efficienza di un'applicazione. Questa scelta deve essere guidata da diversi fattori chiave.


1. Criteri di Scelta di una Libreria Crittografica

Quando si seleziona una libreria crittografica, è importante considerare i seguenti aspetti:

  • Compatibilità: Deve essere compatibile con i linguaggi di programmazione e le tecnologie utilizzate nel progetto.
  • Integrazione: La capacità di integrarsi facilmente con librerie standard o framework esistenti.
  • Disponibilità di Algoritmi: La libreria deve supportare gli algoritmi crittografici necessari per le esigenze dell'applicazione (simmetrici, asimmetrici, hash, ecc.).
  • Assenza di Vulnerabilità Note: È fondamentale che la libreria non abbia vulnerabilità note pubblicamente.
  • Supporto, Manutenzione e Aggiornamenti Costanti: Una libreria ben mantenuta garantisce che eventuali bug o nuove vulnerabilità vengano prontamente risolti e che la libreria sia aggiornata per supportare gli ultimi standard di sicurezza.
  • Certificazione FIPS 140: Una certificazione riconosciuta a livello internazionale che attesta la conformità agli standard di sicurezza crittografica.

2. Certificazione FIPS 140

FIPS (Federal Information Processing Standards) è un set di standard definiti dal NIST (National Institute of Standards and Technology), principalmente rivolti alle organizzazioni del governo americano. La serie FIPS 140 è espressamente dedicata ai requisiti per i moduli crittografici ed è riconosciuta, sebbene non formalmente, anche da ENISA (European Union Agency for Cybersecurity).

Caratteristiche della Certificazione FIPS 140:

  • Algoritmi Approvati: FIPS 140 definisce un set di algoritmi crittografici approvati, le relative modalità operative e i requisiti per la loro implementazione, sia software che hardware.
  • Conformità Richiesta: Una libreria crittografica può essere certificata FIPS 140 solo se rispetta tutti i requisiti dello standard e, soprattutto, se permette di utilizzare SOLAMENTE algoritmi e modalità operative approvate all'interno del modulo certificato.

Livelli di Certificazione FIPS 140:

Sono disponibili quattro livelli di certificazione FIPS 140, con requisiti via via più stringenti in termini di sicurezza:

  • Livello 1: Il livello inferiore. Richiede principalmente l'assenza di bug di sicurezza e che il modulo sia prodotto in modo controllato.
  • Livello 2: Aggiunge requisiti per l'autenticazione basata sui ruoli e per la manomissione evidente (tamper-evident).
  • Livello 3: Richiede la protezione fisica contro l'accesso e l'uso non autorizzati del modulo crittografico, e la protezione delle chiavi private dall'esfiltrazione.
  • Livello 4: Il livello superiore. Include requisiti stringenti anche in termini di sicurezza fisica, protezione contro attacchi ambientali e manomissione fisica avanzata.

Stato Attuale dello Standard:

Lo standard FIPS viene revisionato periodicamente. Attualmente, si è nel periodo di sovrapposizione tra FIPS versione 2 (FIPS 140-2) e FIPS versione 3 (FIPS 140-3).


3. Bouncy Castle

Bouncy Castle è una delle librerie crittografiche più note e ampiamente utilizzate.

  • Certificazione: È certificata FIPS 140-2 Level 1.
  • Natura: È una libreria open source, manutenuta da un'organizzazione australiana.
  • Disponibilità: È disponibile sia per l'ambiente Java che per .NET (C#).

Utilizzo in Java:

In Java, la libreria Bouncy Castle può essere utilizzata in due modi:

  • Direttamente: Richiamando i metodi e le classi messe a disposizione dalla libreria.
  • Indirettamente: Tramite l'uso della Java Cryptography Extension (JCE). Bouncy Castle può essere configurato come un provider JCE, rendendo i suoi algoritmi disponibili attraverso le API standard di Java.

Utilizzo in C#:

In C#, è possibile solamente l'utilizzo diretto delle classi e dei metodi messi a disposizione dalla libreria.

Per le specifiche complete della libreria, è possibile consultare il sito ufficiale: https://www.bouncycastle.org/specifications.html.