isaac generatore di numeri casuali e il tipo di crittografia utilizzato (crittografia dei pacchetti di gioco)?

2

Recentemente ho trovato isaac ma non sono sicuro di quale tipo di crittografia è possibile utilizzarlo. Il generatore di numeri casuali stesso diventa in qualche modo il messaggio o viene utilizzato come seme per un metodo di crittografia? E quindi; e qualcuno può forse dare qualche esempio di codice in un linguaggio basato su C (se possibile). Se si cita solo il nome della crittografia va bene. Fondamentalmente ho bisogno di questo per crittografare i pacchetti tcp mmorpg (giochi online per i non giocatori) al fine di prevenire attacchi MITM e qualunque altro attacco sia possibile prevenire.

    
posta pandoragami 03.04.2013 - 05:44
fonte

2 risposte

4

Se vuoi garantire la sicurezza delle tue comunicazioni, in particolare previ attacchi Man-in-the-Middle , hai bisogno di molto più della crittografia. La crittografia fornisce solo riservatezza , ma non impedisce modifiche (ad esempio, riproduzione di pacchetti, eliminazione di pacchetti, riordinamento di pacchetti, commutazione di bit ...). Sono inoltre necessari alcuni controlli di integrità e un modo per garantire che il client stia parlando con il server giusto. Assemblare protocolli crittografici è molto difficile (farlo funzionare non è difficile, ottenere sicurezza è difficile), quindi la cosa intelligente da fare è riutilizzare un protocollo già definito che fa il lavoro ed è stato ben studiato. Questo è chiamato SSL (aka "TLS" nelle sue versioni recenti). Sarà molto meglio di qualsiasi schema homegrown, e molto più semplice per te dal momento che esistono già le librerie che lo implementano. Il software che è più semplice da implementare è il software che è già stato implementato.

Per la tua domanda specifica, è possibile trasformare un deterministico PRNG crittograficamente sicuro in uno schema di crittografia utilizzando come chiave lo stato iniziale interno del PRNG: si genera il flusso pseudo-casuale dipendente dalla chiave, che quindi si XOR con i dati da crittografare; la decrittazione è identica. Questo è il modo in cui la maggior parte dei codici a flusso funziona. L'utilizzo è delicato: non devi MAI criptare due messaggi con la stessa chiave, perché quello sarebbe il famigerato > two-time pad . Quando SSL utilizza RC4 (un altro codice di flusso più noto), ogni connessione utilizza una nuova chiave.

Resta da vedere se ISAAC è crittograficamente sicuro. È vecchio e ha attirato alcune recensioni dei crittografi, il che è positivo; tuttavia, non faceva parte del progetto eSTREAM e non è mai stato inviato a eBASC (per il benchmarking su molti tipi di PC), quindi sembra un po '"abbandonato". Dato che la parte "seeding" (girando una chiave iniziale, come una piccola sequenza di bit, nello stato iniziale iniziale del PRNG) non è specificata, si può sostenere che ISAAC, come algoritmo crittografico, non è mai stato "completato", precludendo qualsiasi sforzo decente alla crittanalisi. Studiarlo a fini accademici va bene, ma devo raccomandare di non utilizzarlo per nessun utilizzo di produzione. E, comunque, dovresti davvero usare SSL.

    
risposta data 03.04.2013 - 13:05
fonte
-1

In breve, dato che non puoi o non vuoi usare SSL (sarebbe una buona scelta imVHo), ecco come usare ISAAC per crittografare uno stream

  • Scegli un tasto, inserito dall'utente o derivato dalle informazioni che hai su di lui (cose memorizzate da qualche parte e / o recuperate dalla connessione corrente)

  • Usa PKCS # 5 v2.0 per generare un numero adeguato di byte derivandoli dal sopra il tasto

  • Seme ISAAC CSPRNG utilizzando il blocco byte derivati

  • Ora, per ogni byte di input, ottieni un byte da ISAAC e usa XOR per en / de-code il byte

Questo è tutto, l'approccio è lo stesso dell'utilizzo di OTP e in pratica offre lo stesso livello di sicurezza del XOR vanilla applicato a un flusso di input e una chiave totalmente casuale della stessa lunghezza del flusso di input.

    
risposta data 29.08.2016 - 15:34
fonte

Leggi altre domande sui tag