Domanda

Ciao ragazzi, ho lavorato su uno spazio dei nomi p2p per alcuni dei miei programmi. Ho creato un sistema per cifrare / decifrare i pacchetti inviare / ricevuto con la classe. Stavo usando il sistema a chiave privata pubblica di base: 1) crittografare i dati con la crittografia simmetrica 2) crittografare la chiave simmetrica con RSA. Poi fare il contrario quando si decriptato ..

Mi chiedevo se, come è possibile verificare se il pacchetto veniva da dove si diceva che era. Stavo per utilizzare un sistema di certificazione di base (in cui si esegue la crittografia con la chiave privata RSA, poi decodificarlo con la chiave pubblica), ma non so come fare questo con C #. Sto usando la classe RSACryptoServiceProvider.

Qualcuno sa come fare questo? Grazie, Max

È stato utile?

Soluzione

Il protocollo standard per i pacchetti di invio è sicuro SSL / TLS. Le RFC per TLS e DTLS (e una correzione per un recente falla ) sono la strada da percorrere. Essi dovrebbero essere considerati una risorsa per coloro che stanno imparando e alla ricerca di idee.

Sembra che tu sei un ricerca di un MAC . Un insieme molto efficiente di primitive crittografiche che eseguono la crittografia e la MACing allo stesso tempo sono il AEAD cifrari , si veda ad esempio CCM e GCM cifratura a blocchi modi.

Non credo .NET supporta qualsiasi cifrari AEAD. È inoltre possibile utilizzare il più lento ma perfettamente adeguata rel="nofollow HMAC algoritmo che è supportato in. NET, oppure è possibile utilizzare il BouncyCastle C # biblioteca che supporta crittografie AEAD.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top