Editar: Actualizar: estoy investigando cómo implementar AES con autenticación de una manera eficiente para este proyecto. Si tiene el tiempo, apreciaría su habilidad para encontrar la mejor implementación para este proyecto de FOSS.
¿Podría revisar y comentar el código de cifrado que acabo de publicar en Codeplex? La intención es usar esto como base para cifrar las propiedades de la tabla de Azure y evitar que cualquier empleado no autorizado de MSFT navegue o edite mis datos de forma casual. Es una muestra de trabajo que debería usar cualquier par de claves privadas públicas en su sistema local. Solo asegúrate de establecer los permisos en tu clave privada correctamente.
Para la tabla de Azure, quiero encriptar todas y cada una de las propiedades a continuación (incluyendo la clave de fila y la clave de partición) usando una clave simétrica.
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;}
}
Tengo la intención de almacenar la versión cifrada de la clave simétrica y el IV no cifrado en el almacenamiento de Azure Table. El diseño general asume que una clave simétrica cifrada inutiliza todos los demás datos de la tabla cifrada, incluso si el IV está disponible.
La clave simétrica se cifra con una clave RSA que es se entrega de forma segura a mi instancia de Azure Role .
Problemas conocidos:
Sé que me falta una semilla en mi cifrado simétrico. ¿Cómo implementaría esto desde una perspectiva Crypto?