what's your favorite algoritm to use? the cr.yp.to's NaCL library?
Penso che usare un algoritmo fatto non negli Stati Uniti possa essere più sicuro o usare non così popolare piuttosto che il più popolare come AES. Con questa idea l'uso di NaCL / LibSodium può sembrare una buona scelta (anche se sappiamo che DJB è cittadino statunitense, ma dice che non ci sono molti canali secondari nella sua lib).
Puoi provare i candidati dal secondo round AES (non solo Rijndael, ma anche
Serpent o Twofish), o qualcosa del genere giapponese CRYPTREC o europeo NESSIE o ECRYPT / eSTREAM.
Puoi anche usare crypto made in Russia (certo, non ci sarà backdoor da NSA, ma ci può essere backdoor da KGB):
-
link (34.11-94 e 34.311-95 o più recente 34.11-2012)
-
link (28147-89, sì, è del 1989 anno)
-
link per la firma digitale sulla curva ellittica sul campo principale (34.10-2012 o versione precedente 34.10-2001 )
E, come ho già detto nei commenti, puoi provare a combinare più cripto insieme cercando di ottenere maggiore sicurezza contro le backdoor.
Per cifrare simmetricamente puoi impostare questa catena: in primo luogo usare Salsa20, quindi ricodificare i dati con XXTEA e poi - con AES. Puoi anche fare cose simili a algoritmi asimmetrici. Ad esempio, quando si trasmette una chiave segreta breve a qualcuno che utilizza le sue chiavi pubbliche, è possibile che si utilizzino diverse alghe a chiave pubblica: NTRUEncrypt, un RSA basato su ECC e un RSA basato sul campo principale. Come puoi combinarli? Genera un tasto casuale piuttosto lungo (300 byte o più), dividerlo in 3 parti, inviare ciascuna parte con un po 'di algo; quindi tu e il ricevente puoi combinare le parti insieme, compattarle usando qualsiasi hash-sum (HMAC, PBKDF2, o solo SHA512 di tutte le parti) e utilizzare parte di questa hash sum come chiave principale per codificare i tuoi piani alkaidi di valore elevato.
Anche se 1 o 2 algos dalla catena verranno interrotti dalla backdoor ... Oh, aspetta ...
Non puoi usare nessun generatore di numeri casuali perché non puoi crederci. Ci sono piani reali per convertire il PRNG hardware progettato da Intel Ivy in un generatore difettoso con 2 * 32 - 2 * 40 period - NSA può cambiare solo due maschere per mettere qui il trojan :
In this paper we introduced a new type of sub-transistor level hardware Trojan
that only requires modication of the dopant masks. No additional transistors
or gates are added and no other layout mask needs to be modied. Since only
changes to the metal, polysilicion or active area can be reliably detected with
optical inspection, our dopant Trojans are immune to optical inspection, one of
the most important Trojan detection mechanism.
Questo RNG trojan non è rilevabile per Chipworks (taglia il chip e guarda i transistor) e tutti dal mondo esterno. Intel utilizza HW PRNG per ottenere dati grezzi e quindi crittografare i dati utilizzando una chiave AES fissa. Non si conosce la chiave dal Trojan, e OGNI test per PRNG (NIST e altro) verrà passato, poiché l'output di AES viene testato. Ma Intel e NSA, che conoscono la chiave, ripristineranno tutti i dati casuali generati da questo PRNG in un piccolo numero di operazioni.
.. Quindi, non è possibile utilizzare un singolo PRNG. Usa diversi, sia HW che SW (o anche misura il rumore bianco con ADC veloce) e poi XOR insieme. Puoi aggiungere la crittografia dopo XORing per ottenere risultati casuali migliori.
Quando usi diversi algoritmi e uno o due sono interrotti, avrai il terzo.