Voglio testare un algoritmo di crittografia per forza. Non deve essere forte, deve solo resistere al cracking accidentale e dire, un hacker determinato con 10 ore da perdere. (Ho scritto the crypto algorithm. Sì, so che questa è generalmente una cattiva idea, ma penso di avere una buona ragione.)Come si verifica la qualità di un algoritmo di crittografia?
Che tipo di test dovrei fare? Finora ho provato questo:
- Genera A. casuale
- vibrazione di un po 'casuale di A per fare B.
- Verificare che il numero di 1s a cifrare (a) XOR crittografare (b) si adatta a una distribuzione di poisson (tranne che lo XOR non emette mai 0).
Eventuali altri test suggeriti?
Circa la crittografia
E 'un Fiestel Cipher standard di progettato per essere eseguito in 3ns ed essere del tutto combinatori, non registri. (Questo è un ordine di grandezza più veloce di DES/AES/ecc.) Faccio più giri che posso in 3ns, che è solo circa 6.
Prima di tutto permuto l'ordine dei bit di input.
Quindi per ogni bit sulla metà sinistra dell'ingresso I XOR con esso l'uscita di una funzione F. F ha ingresso 3 bit e uscita 1-bit. I 3 bit di ingresso su F sono selezionati dalla metà destra dell'ingresso. L'output di F è una permutazione di {00001111} quindi F è bilanciato. I 3 bit di ingresso su F sono selezionati dai bit sulla metà destra in modo tale che ciascun bit sulla metà destra sia utilizzato lo stesso numero di volte (o il più vicino possibile a quello). Ogni "F" è generata casualmente e indipendentemente una volta.
Avanti Poi scambio le metà sinistra e destra del risultato e lo rifaccio. Ancora una volta, nuova "F" per ogni bit con un nuovo input.
Tutto ciò che è un round. Lo faccio 6 volte, ogni round con funzioni F casuali generate in modo indipendente. 6 round richiedono circa 3ns. Ho provato a cambiare anche il numero di giri e il numero di ingressi.
Si potrebbe pubblicarlo come l'algoritmo di un nuovo prodotto di consumo rivoluzionario, volto a eliminare il furto di identità. Qualcuno potrebbe provare a romperlo per te;) –
Puoi pubblicare l'intero algoritmo? Mi piacerebbe dare un'occhiata a questo. –
Dall'altra domanda, sembra che tu non stia realmente seguendo un codice, di per sé. In questo caso, testalo statisticamente, come se fosse una funzione di hash. –