Consigliato Crypto Security Setup (Algoritmi implementati)?

3

Per prima cosa non sono un esperto di crittografia, tuttavia so come usare algoritmi che altre persone hanno definito prima in usi pratici, cioè, fino a quando mantengono le loro promesse.

Il fatto è che ho bisogno di alcune utilità:

  1. Genera una coppia di chiavi pubbliche / private di lunghezza x, prendile come binari; ed essere in grado di elaborare il contenuto con esso.
  2. Alcuni algoritmi di hashing che consumano molta memoria e impiegano tempo; Non ho bisogno di velocità, ho bisogno di sicurezza. (Sono abbastanza sicuro che useranno password stupide)
  3. Un algoritmo di crittografia simmetrica che genera testo cifrato basato su una password (hash) che deve essere abbastanza strong.

Le mie risposte correnti sono state:

  1. Algoritmi RSA OpenSSL.
  2. Scrypt (pensando di passare a argon2 a causa dell'ottima documentazione e dei wrapper)
  3. OpenSSL AES CBC

Ma poi vai qua e là su internet e loro dicono che lo scrypt è rotto, usa bcrypt, no argon2 https://github.com/P-H-C/phc-winner-argon2 è la cosa nuova, OpenSSL ha bug di sicurezza, usa meglio LibreSSL, non usa libsodium. ecc ... ecc ...

Quindi quali sono le opzioni migliori? ... Ho bisogno di proteggere i dati altamente sensibili.

Probabilmente userò anche i wrapper Node.js perché ho bisogno di risultati rapidi, dato che ho bisogno di fare una dimostrazione.

    
posta Onza 24.06.2016 - 17:35
fonte

1 risposta

3

Uno dei maggiori problemi che devi affrontare non sono gli algoritmi che scegli, ma il modo in cui li implementa. Esistono molti buoni algoritmi per vari scopi, e virtualmente nessuno di essi, applicato in modo errato, può risultare in un cryptosystem rotto in modo disastroso.

Questo è uno dei motivi per cui le persone offrono consigli come "usa libsodium" perché le librerie come libsodium riassumono la maggior parte delle decisioni che potresti sbagliare.

Tuttavia, per rispondere alla domanda che hai chiesto in modo specifico, per quanto riguarda gli algoritmi:

  1. Crittografia asimmetrica: utente RSA-OAEP.

  2. Algoritmo di hashing della password o KBKDF per la crittografia simmetrica: utilizza bcrypt.

  3. Crittografia simmetrica: una cifra AEAD. So che OpenSSL ha AES-GCM. Potresti anche trovare ChaCha20-Poly1305. O potresti usare libsodium.

Un punto specifico per reiterare sull'elemento 3 ... Non utilizzare la password direttamente come chiave. Usa bcrypt (o un altro KBKDF adatto) per generare una chiave corretta, in modo correttamente lento. Potresti già saperlo, ma vale la pena segnalarlo per i futuri lettori.

Un altro punto critico: anche con tutti i migliori algoritmi e la corretta implementazione, la gestione delle chiavi è un componente cruciale del sistema. Se non si pensa abbastanza alla memorizzazione e alla gestione delle chiavi sicure, tutto il resto potrebbe essere inutile.

    
risposta data 20.07.2016 - 03:25
fonte

Leggi altre domande sui tag