Un tentativo di superare il problema di distribuzione delle chiavi inerente alla crittografia a tempo

0

Dopo aver letto della 'imminente cripta crittografica', ho iniziato a pensare a un protocollo crittografico che non dipendesse dalla complessità delle operazioni matematiche (ad esempio fattorizzazione, logaritmo discreto) per la privacy.

Ho realizzato un proof of concept che funziona girando a rotazione il messaggio localmente criptato / decrittografato su client e server, con precauzioni per proteggere la chiave dall'essere rilevabile durante la trasmissione. Dettagli e codice sono ospitati online .

Un vantaggio associato dello schema è che la crittografia preserva la lunghezza del messaggio, quindi potrebbe essere adatta per piccoli messaggi (SMS ecc.) che possono tollerare un piccolo aumento della latenza di trasmissione. Potrei dedicare del tempo a sviluppare questo in una piattaforma di scambio SMS, se il protocollo resiste all'esame.

Mentre era solo un piccolo progetto per hobby, mi chiedo se sia davvero sicuro come immaginavo. Forse qualcuno più esperto sulle proprietà teoriche dei numeri dei gruppi modulari può commentare? In particolare, il mio schema si basa sull'inversione moltiplicativa modulare non esistente per i membri pari di (Z / 2 ^ nZ) * .

Grazie.

    
posta user29473 13.08.2013 - 20:17
fonte

2 risposte

5

In generale, non vogliamo incoraggiare questo tipo di domande:

  • I riferimenti al codice non sono una buona descrizione degli algoritmi crittografici. Le buone descrizioni usano il linguaggio della matematica, non la programmazione.

  • Una descrizione su un insieme di file su github non è abbastanza permanente; se lo cambi mai, questo renderà questa domanda illeggibile.

  • C'è un ciclo molto inefficiente e noioso, che va così: "Ehi, non conosco l'argomento, ma ho questa idea, è sicuro? - No, non lo è, per questo - Cosa succede se aggiungo un +1 lì? - No, non aiuta. - E se poi mettessi un +2 in quel posto? - ... "L'esperienza dimostra che questo tipo di processo non è mai finisce con un buon algoritmo; tuttavia, produce discussioni terribili e prolissi. È già abbastanza brutto nei gruppi Usenet come sci.crypt ; su un Q & Un sito come questo, semplicemente non lo farà.

Da uno sguardo superficiale ai tuoi file, tuttavia, sembra che tu voglia utilizzare il protocollo a tre passaggi di Shamir . Ciò richiede un codice commutativo tale da poter crittografare un messaggio con la chiave u , quindi con la chiave v e quindi decrittografare con la chiave u e v in questo ordine e recupera il messaggio originale. Sfortunatamente, i codici commutativi sono difficili da fare senza molta matematica, come gli esponenziamenti modulari modulo big primes.

La tua idea di fare moltiplicazioni modulo 2 n e di "criptare" solo i valori dei messaggi x che non sono invertibili modulo 2 n non è sicuro. Infatti, dall'esterno, l'attaccante vede x * u , x * v e x * u * v (tutti i valori modulo 2 n ). Poiché x è pari, ci sono interi m e y tali che y è dispari e x = y * 2 m . u e v sono dispari (è necessario che loro siano invertibili), i valori osservati sono necessariamente multipli di 2 m e non 2 m + 1 . In altre parole, espresse in binario terminano tutte esattamente con m zeri.

L'obiettivo dell'attaccante è di recuperare x . Conosce già m , come spiegato sopra. Vuole y , che ha lunghezza n-m bit. Semplicemente dividendo tutti i valori che ha osservato con 2 m , ottiene y * u , y * v e y * u * v , tutti i valori modulo 2 nm , e sono tutti dispari, quindi invertibili. Quindi è sufficiente calcolare (y * u) * (y * v) / (y * u * v) (modulo 2 nm ) , che produce y . Fine del gioco.

Quanto sopra generalizza a tutti i calcoli modulo qualche intero N quando si prende x come modulo non invertibile N .

Ti incoraggio a fare i compiti, cioè leggi il Manuale di crittografia applicata , che è un download gratuito e molto buono lettura (se un po 'concisa a volte). Il protocollo di tre passaggi di Shamir è descritto nel capitolo 12, pagina 500. Attenti al seguente passaggio:

While it might appear that any commutative cipher (i.e., cipher wherein the order of encryption and decryption is interchangeable) would suffice in place of modular exponentiation in Protocol 12.22, caution is advised. For example, use of the Vernam cipher (§1.5.4) would be totally insecure here, as the XOR of the three exchanged messages would equal the key itself.

Il peggior peccato nella ricerca scientifica è ignorare la ricerca precedente.

    
risposta data 14.08.2013 - 00:33
fonte
2

Non ho avuto la possibilità di guardare il link, ma il problema fondamentale con la distribuzione delle chiavi per un time pad è che sono puramente casuali. Qualsiasi tentativo di crittografarli utilizzando un modello determina una crittografia che presenta una casualità non perfetta e riduce quindi l'efficacia dell'OTP a quella del metodo di scambio. Un one time pad è sicuro solo quanto la sua distribuzione e purché l'OTP sia veramente casuale, mantiene l'esatta sicurezza del metodo di distribuzione delle chiavi. Il vantaggio è che puoi controllare la sicurezza dello scambio prima di inviare informazioni sensibili.

    
risposta data 13.08.2013 - 20:45
fonte

Leggi altre domande sui tag