Domanda:
La crittografia dei file più potente disponibile
dave09963
2020-06-19 12:12:20 UTC
view on stackexchange narkive permalink

Non so nulla di crittografia. Come si crittografa un file nel modo più forte possibile, in modo tale da potervi accedere alcuni anni dopo? Preferisco che sia abbastanza resistente alla forza bruta e ad altri possibili modi attacchi.

Ho bisogno solo di una direzione.

Questo potrebbe essere meglio risolto sul sito Cryptography SE.
Consiglia anche di passare a Cryptography SE.Penso che anche OP debba spiegare ulteriormente il suo modello di minaccia.Se fa solo AES-GCM con una singola chiave, il contenuto dei file può essere scambiato tra loro senza che sia rilevabile ... e senza un tale modello da OP, è impossibile rispondere effettivamente a questa domanda
La crittografia più potente consiste nel disporre del computer più veloce che riesci a trovare e continuare a crittografare i dati fino a circa la metà del tempo prima che sia necessario che i dati siano trascorsi.Dovresti quindi utilizzare lo stesso computer e iniziare la decrittografia: se sono necessari sei mesi di tempo per il computer per crittografare, saranno necessari sei mesi per decrittografare, anche con la chiave.Chiaramente questo è sciocco, quindi la risposta è che, qualunque sia il tuo modello di minaccia, la crittografia "più forte" ottenibile non sarà né sensata né pratica.È necessario prima definire il modello di minaccia e quindi progettare la strategia di crittografia in modo che corrisponda.
@J ... Chiaramente stai scherzando, ma ti prenderò sul serio solo per dire: ricorda che se le luci si spengono mentre il tuo computer superveloce sta crittografando l'unica copia dei tuoi dati ... faresti meglio ad avere unpiano di recupero.
Tecnicamente un "one time pad" è imbattibile (e questo è il massimo che otterrai!), Ma se OP può memorizzare una chiave lunga quanto il file in modo sicuro, allora perché non memorizzare il file lì?Come è stato detto prima, abbiamo bisogno di un modello di minaccia per rispondere alla domanda.
La crittografia probabilmente non sarà l'anello debole in nessun sistema.La tua gestione del materiale chiave sarà l'anello debole.Non concentrarti sul più forte, concentrati su ciò che si adatta meglio alle tue esigenze.
Se ci fosse una crittografia più forte, perché dovrebbero essere utilizzate le criptovalute più deboli?
-1
@Nelson E poiché il tempo necessario per la forza bruta aumenta in modo esponenziale, il numero di bit che abbiamo usato negli ultimi dieci anni è stato più che sufficiente per sopravvivere alla vita del sistema solare nel tempo necessario alla forza bruta.Anche piccoli microcontrollori possono farlo.Quindi, di nuovo, perché dovresti usare una crittografia più debole?Per assicurarti che _può_ essere forzato se dimentichi la chiave?
@pipe ad essere onesti, non posso dirti perché le persone prendono decisioni illogiche e sbagliate.Perché Microsoft ha utilizzato la crittografia MD5 fino al 2012 quando era stata sconsigliata nel 1996, ben SEDICI anni prima?Non ne ho idea.Perché le persone pensano di poter battere un intero mondo di scienziati, ricercatori e ingegneri con il proprio motore crittografico?Probabilmente orgoglio e ignoranza, ma neanche io lo so.Le ragioni per le decisioni stupide sono generalmente stupide ed è altamente insoddisfacente quando viene scoperta la risposta, quindi non ha davvero senso.
@Cyclic3 Hai decisamente ragione sull'unico time pad, ma almeno ha il vantaggio che un utente malintenzionato ha bisogno di due informazioni separate per recuperare il contenuto originale.Si potrebbe immaginare di utilizzare un centinaio di pad monouso, archiviati in una varietà di modi diversi (diverse tecnologie, posizioni e custodi), per rafforzare il sistema contro la compromissione di un qualsiasi pezzo di archiviazione sicura.
@DavidZ Questo schema è meglio noto come "Condivisione segreta", e la natura teoricamente sicura delle informazioni può effettivamente essere estesa a sistemi in cui hai bisogno solo di alcune k delle n parti per condividere la loro parte: https://en.wikipedia.org/wiki / Shamir% 27s_Secret_Sharing.Se la sicurezza è semplicemente una questione di bisogno di tutti i dati, allora una trasformazione Tutto o niente, combinata con uno schema di riempimento casuale, è la soluzione migliore: https://en.wikipedia.org/wiki/All-or-nothing_transform
@Cyclic3 Sì, ho familiarità con la condivisione segreta.Pensavo di poter esprimere il mio punto di vista senza dover usare il termine, ma forse mi sbagliavo ... comunque, il punto era che anche se il blocco unico è imbattibile quando l'aggressore ha il testo cifrato ma non la chiave, in praticadevi considerare i punti deboli nell'archiviazione delle chiavi.Questo è un motivo per cui una persona potrebbe voler utilizzare un blocco unico (combinato con uno schema di condivisione dei segreti, ovviamente) anche se pensa di avere un modo sicuro per archiviare qualcosa delle dimensioni del file originale.
anche impedire l'accesso fisico è una forma molto forte di crittografia.
@DavidZ scusa per il mio commento piuttosto condiscendente!Tu e Avin avete assolutamente ragione, la sicurezza fisica è parte integrante della protezione dei dati e ho trascurato.
@Michael-Where'sClayShirky Sì, ma se stai cercando il Guinness nessuno ha detto che sarebbe stato facile.;)
@Cyclic3 Grazie, ma dovrei scusarmi anche io: ho reagito in modo eccessivo e ho pubblicato un commento più duro del dovuto.All'epoca ero un po 'frustrato, ma ripensandoci, il tuo commento è stato molto sensato visto il contesto.
@AvinKavish ho anche pensato di lanciare il file nello spazio in orbita in modo che potesse essere raccolto in seguito.
Sei risposte:
Cort Ammon
2020-06-20 10:10:19 UTC
view on stackexchange narkive permalink

Il modo più efficace possibile per crittografare i dati è iniziare con un modello di minaccia. Da quale tipo di avversario stai cercando di proteggere i tuoi dati? Cosa sono disposti a fare per ottenerlo? Tutti gli approcci ragionevoli alla crittografia iniziano con uno. Se inizi con uno, hai la possibilità di trovare "il più forte" per la tua situazione particolare.

Consiglio questo approccio perché, quando inizi a pensare ai modelli di minaccia e a ricercarli, inizierai a renditi conto che la sicurezza riguarda molto di più l'elemento umano. Quindi puoi preoccuparti di cose come come proteggerai la tua chiave.

XKCD commic on security

fonte: https: // xkcd.com/538/

Una volta che hai deciso se stai cercando di superare in astuzia un attore di stato mentre commetti un tradimento, o se stai semplicemente cercando di proteggere il tuo diario da occhi indiscreti della tua sorellina, puoi decidere qual è il miglior algoritmo.

In caso contrario, segui il flusso. Piuttosto che scoprire qual è la crittografia "più forte", cerca ciò che è "consigliato" dagli esperti di sicurezza per qualcuno che non sa nulla di crittografia. Attualmente AES è altamente raccomandato. Siamo abbastanza fiduciosi che nessuno, a meno di un attore statale, possa infrangerlo, e siamo ragionevolmente fiduciosi che nemmeno nessun attore statale possa infrangerlo.

Ma meglio ancora, non cercare algoritmi di crittografia, guarda per pacchetti collaudati che sono raccomandati. L'applicazione di un algoritmo è importante quanto l'algoritmo stesso. Implementazioni altamente affidabili valgono il loro peso in oro.

Esiste uno standard SI per il peso del codice?Forse il codice sorgente stampato su carta standard con carattere 10?
@Falco SLoC.Ecco alcuni altri personaggi in modo che io possa postare questo commento.
Gwyn Evans
2020-06-19 23:01:11 UTC
view on stackexchange narkive permalink

Se vuoi il più forte, ti suggerirei un pad una tantum per crittografare il file.

Se vuoi realistico, ti suggerisco piuttosto di espandere il tuo modello di minaccia e di ricevere consigli come al livello effettivo di crittografia di cui hai bisogno.

E poi metti il pad monouso in una minuscola capsula di titanio e incorporalo per via sottocutanea nell'anca.
Questo potrebbe essere facilmente rilevato ed estratto.Tieni tutto nella tua testa.
@bytepusher potresti essere indotto a rivelarlo.Brucialo.
Oppure potrebbero estrarlo [con una chiave inglese] (https://xkcd.com/538/).
Se hai già i dati, l'utilità di un time pad diventa * negativa *: ora devi proteggere * il doppio * della quantità di dati.Le OTP sono __solo__ utili quando sai che avrai bisogno di un canale sicuro in futuro ** e ** avrai accesso a un canale sicuro a cui non avrai accesso in seguito (da qui la loro storia nello spionaggio).
@Cyclic3: Non sono d'accordo: l'OTP aggiunge un secondo fattore.Né i dati crittografati da soli né la chiave OTP da soli forniranno informazioni utili a un utente malintenzionato.Se uno di questi si trova su una chiavetta USB nel caveau della tua banca e l'altro sul tuo PC, l'aggressore dovrà entrare nel tuo PC * e * nel tuo caveau.
@Heinzi questo è un ottimo punto!Tuttavia, c'è un rovescio della medaglia: ora tutti coloro che hanno accesso al vault E tutti hanno accesso al tuo PC possono capovolgere bit arbitrari nei tuoi dati, raddoppiando il rischio.Tutto questo ricade su quello che dicono tutti: qual è il modello di minaccia?
Non è una buona idea.Il problema con l'OTP è la memorizzazione sicura della chiave.Questo porta lo stesso problema in un altro nome.
hft
2020-06-19 12:35:47 UTC
view on stackexchange narkive permalink

Non so nulla di crittografia. Come crittografare un file nel modo più forte (enfasi aggiunta) possibile in modo da potervi accedere alcuni anni dopo. Preferisco che sia abbastanza resistente alla forza bruta e ad altri possibili attacchi. Ho solo bisogno di una direzione.

Usa AES-256 in modalità GCM.

Questo.Sì, i molti altri commenti sono giusti, sui modelli di minaccia e sulle OTP, ma questa semplice risposta coprirà abbastanza bene almeno il 99,99% dei casi.
Pedro
2020-06-19 20:24:37 UTC
view on stackexchange narkive permalink

Questo non è un problema con una soluzione ovvia. È necessario pianificare in anticipo come gestire e archiviare in modo sicuro il materiale della chiave e il materiale crittografato. Anche la forza e il tipo di crittografia fanno parte di quel piano. Se perdi la chiave, non puoi decrittografare i tuoi dati. Se qualcuno prende una copia della tua chiave, può decrittografare i dati. Se perdi i dati crittografati, non puoi recuperarli. E così via ...

Ti suggerisco di dare un'occhiata a GnuPG che implementa uno schema di crittografia ibrido, per cui i dati vengono crittografati con una chiave di sessione una tantum (crittografia simmetrica) protetta dalle chiavi pubbliche del destinatario. Esistono strumenti userland pronti per essere utilizzati per generare e gestire coppie di chiavi e per crittografare / decrittografare utilizzando questo meccanismo.

Non sono a conoscenza di quali strumenti possano eseguire la crittografia simmetrica utilizzando AES -256 / GCM, sebbene sia probabile che openssl e libressl possano. Devi stare attento a generare chiavi di crittografia casuali, poiché a questo livello potresti non avere il supporto di uno strumento userland per assicurarti che le tue chiavi abbiano abbastanza entropia.

L'API di Windows eseguirà AES / GCM per te
Dubito che qualsiasi strumento crittografa direttamente i file con cifratura asimmetrica;è troppo costoso dal punto di vista computazionale.Invece si limitano a crittografare una chiave casuale e crittografare i dati effettivi con un codice simmetrico.È anche possibile creare la chiave simmetrica utilizzando una funzione di derivazione della chiave (pbkdf2) da una passphrase.Tuttavia openssl (1.1.1g) non supporta GCM in "enc".
Quale sarebbe il vantaggio di utilizzare la crittografia asimmetrica in questo scenario, in cui abbiamo un solo utente?
@janHudec gnuog fa esattamente questo, crittografia asimmetrica.Essere computazionalmente costosi non è necessariamente un problema se la soluzione non deve essere scalata.
@Pedro GnuPG utilizza la crittografia simmetrica per i suoi dati proprio come fanno tutti gli altri strumenti.La crittografia a chiave pubblica crittografa semplicemente la chiave per la crittografia simmetrica.Non è solo computazionalmente costoso utilizzare la crittografia a chiave pubblica, matematicamente non funziona.La crittografia a chiave pubblica non è in grado di crittografare i dati di dimensioni arbitrarie da sola, solo qualcosa di più piccolo della dimensione della chiave.
@penguin359 non c'è nulla di rotto nella crittografia dei file con crittografia asimmetrica, il riempimento viene utilizzato ovunque, anche nella crittografia simmetrica.Ma ti darò il beneficio del dubbio e guarderò più a fondo in gnupg prima di discutere ulteriormente se ciò che è effettivamente in grado di fare.
@penguin359 hai ragione, gnupg utilizza uno schema di crittografia ibrida che crittografa i dati utilizzando una chiave di sessione una tantum che viene quindi protetta con la chiave pubblica del destinatario.quindi l'elemento asimmetrico è solo un modo per gestire le chiavi di crittografia - un ulteriore leyer.Modificherò anche la mia risposta.
kelalaka
2020-06-21 23:39:31 UTC
view on stackexchange narkive permalink

Ci sono problemi con i dati memorizzati, potrebbero essere danneggiati e alterati. Questo può essere rilevato con integrità e autenticazione e risolto con metodi di protezione dei dati.

Un altro problema è come si memorizza una chiave crittografica. Questo può essere risolto con una buona password da ricordare con alta entropia e Funzioni di derivazione chiave.

  1. Scegli una buona password con diceware in modo che ha un'entropia uguale alla dimensione della chiave desiderata come 128,192,256, ecc.
  2. Utilizza la funzione di derivazione della chiave basata su password come PBKDF2, Scrypt o Argon2id per derivare una chiave crittografica, ad esempio 128 bit per AES128 o 256 bit per AES256. Nel caso di più file, è possibile utilizzare dati aggiuntivi per derivare chiavi diverse per ogni file.
  3. Crittografa il file con AES-GCM o ChaCha20-Poly1305, entrambi sono crittografia autenticata che fornisce riservatezza, integrità e autenticazione.

Note:

  1. Potrebbe essere necessario conservare più copie di il file poiché l'integrità rileva solo gli errori. Non è un codice di correzione degli errori.
  2. La dimensione della chiave dipende da te. Se temi attacchi a bersagli multipli e possibili computer quantistici, utilizza una dimensione della chiave 256.
  3. L'IV di GCM o ChaCHa20 non dovrebbe essere ripetuto. Si consiglia un contatore combinato con casuale.
Michael Lazin
2020-06-19 21:43:01 UTC
view on stackexchange narkive permalink

Direi di utilizzare la crittografia a 4096 bit. Lo uso durante la generazione delle chiavi ssh. Ho letto che anche i computer quantistici sono a 30 anni buoni dal violare le attuali tecniche di crittografia e non penso che l'NSA possa decifrarlo perché gli articoli che ho letto da fonti come il blog ACLU indicano che il governo è utilizzano malware per spiare perché non possono violare gli attuali standard di crittografia sebbene sha1 sia stato recentemente violato. Il Congresso ha cercato di far passare rapidamente la legislazione per richiedere backdoor nella crittografia, ma credo che questo sia sconsigliato. Le formule matematiche dietro gli algoritmi di crittografia utilizzati oggi sono onnipresenti e non possono essere cancellati dal pubblico dominio. Hanno provato a vietare l'esportazione della crittografia negli anni '90 quando è stato sviluppato pgp e si è rivelato inapplicabile perché Internet è globale.

La tua espressione "crittografia a 4096 bit" non ha senso in questo contesto.Descrive solo la dimensione della chiave.Ciò che conta è la * tecnica * o l'algoritmo di crittografia.Una crittografia grezza con una chiave a 4096 bit potrebbe essere violata con carta e matita in poche ore.
Si noti che poiché lontano da qualsiasi numero è una chiave RSA valida, una chiave RSA a 3072 bit è valida solo quanto una chiave a 256 bit di un DSA a curva ellittica adatto.
@JanHudec È davvero questo il motivo?(Ho pensato che il motivo fosse un buon algoritmo di factoring) Per quanto riguarda le risposte di Google, ci sono circa $ \ frac {n \ log \ log n} {\ log n} $ semiprimes (e non penso che molti di loro siano non validi), e anche con quella logica la generazione di chiavi RSA valide dovrebbe essere 2 ^ 2816 volte più difficile della generazione di chiavi per altri algoritmi, ma tutti i programmi in qualche modo lo fanno rapidamente.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...