Crittografia ECC con BouncyCastle per C#
-
20-09-2019 - |
Domanda
Dopo aver letto questo post per quanto riguarda l'uso di ECC per implementare l'hashing utilizzando una chiave privata, ho iniziato a cercare un'implementazione di ECDH e mi sono imbattuto in BoucyCastle.
Sfortunatamente la documentazione è minima (come in zerow!) e non sono sicuro di cosa Sto per realizzare è completamente corretto/valido.
Vogliamo semplicemente eseguire l'hashing di 4 stringhe che saranno le informazioni di registrazione degli utenti (nome, azienda, ID azienda e ID account, entrambi lunghi 12 caratteri) che calcoleranno quindi un seriale che potranno utilizzare per attivare il nostro software.
Ho generato una coppia di chiavi utilizzando PUTTYGEN.exe ma non riesco a capire come applicarla con BouncyCastle, quale classe posso utilizzare per iniziare?Ci sono esempi là fuori?
Finora ho concatenato le informazioni e calcolato un hash MD5 (utilizzando le classi .NET). Non posso utilizzare le nuove funzioni API avanzate di VISTA poiché miriamo ancora a XP: .NET 3.5.
Qualcuno ha qualche idea?
Soluzione
Credo che .NET è la classe RSACryptoServiceProvider, che è un'implementazione completa RSA.
Non c'è codice di esempio per una particolare applicazione qui:
http://www.codeproject.com/KB/security/xmldsiglic.aspx
In questo esempio usano strumento sn.exe di MS per creare la chiave.
Altri suggerimenti
Finora ho concatenato le informazioni e ne ho calcolato un hash MD5 (utilizzando le classi .NET).....
Questa affermazione di per sé mi preoccupa.MD5 è seriamente craccabile, non solo teoricamente ma praticamente.Per favore, non utilizzare MD5 per l'hashing sicuro.Usa SHA-256 o SHA-512 ed ecco Perché
Inoltre il post che hai collegato non è del tutto vero: sì, gli algoritmi simmetrici utilizzano la stessa chiave per crittografare/decrittografare, ma la chiave pubblica/privata non è una bacchetta magica.
1) La chiave pubblica/privata è lenta
2) La maggior parte degli algoritmi pubblici/privati crittografa semplicemente la chiave simmetrica e quindi utilizza la crittografia simmetrica per i dati perché è molto più veloce
Il punto è che un buon algoritmo di hashing non è reversibile e quindi molto difficile da decifrare, quindi va perfettamente bene per i tuoi scopi.Tuttavia, suggerirei di utilizzare un SALT, che è un numero crittograficamente casuale da aggiungere ai tuoi dati utente, quindi eseguire l'hashing di tali dati in quanto rende i tuoi dati molto più sicuri contro gli attacchi del dizionario (dove gli hacker utilizzano termini e varianti ben noti per decifrare le password)