Modifica: Aggiorna - Sto cercando come implementare AES con l'autenticazione in modo efficiente per questo progetto. Se hai tempo, apprezzerei la tua abilità nel trovare la migliore implementazione per questo progetto FOSS.
Potresti rivedere e commentare il codice di crittografia che ho appena pubblicato su Codeplex? L'intento è di utilizzarlo come base per crittografare le proprietà di Azure Table e impedire a qualsiasi dipendente MSFT non autorizzato di sfogliare o modificare casualmente i miei dati. È un esempio funzionante che dovrebbe utilizzare qualsiasi coppia di chiavi pubblica privata sul sistema locale. Assicurati di impostare correttamente le autorizzazioni per la tua chiave privata.
Per Azure Table, voglio crittografare ogni singola proprietà sottostante (incluso rowkey e partitionkey) usando una chiave simmetrica.
public class ContactDataModel :TableServiceEntity
{
public ContactDataModel(string partitionKey, string rowKey)
: base(partitionKey, rowKey)
{
}
public ContactDataModel(): this(Guid.NewGuid().ToString(), String.Empty)
{
}
public string Name { get; set; }
public string Address { get; set; }
// Used to rotate keys, while allowing old data to still be read
public int EncryptionVersion {get;set;}
}
Intendo memorizzare la versione crittografata della chiave simmetrica e l'IV non crittografato nell'archivio di Azure Table. Il progetto generale presuppone che una chiave simmetrica crittografata renda inutilizzabili tutti gli altri dati della tabella crittografata, anche se l'IV è disponibile.
La chiave simmetrica è crittografata con una chiave RSA che è consegnata in modo sicuro alla mia istanza di ruolo di Azure .
Problemi noti:
So che mi manca un seme nella mia crittografia simmetrica. Come potrei implementarlo da una prospettiva Crypto?