Tienes dos alternativas:
-
Control criptográfico. Con esto, solo los usuarios que conocen la contraseña pueden descifrar los datos. La desventaja es que el usuario debe ingresar la contraseña de descifrado cada vez que acceden a los datos. Un informe debe contener un parámetro de contraseña que el usuario que ejecuta el informe completa con la contraseña de acceso a los datos. La aplicación debe solicitar la contraseña al usuario. Los sitios web deben solicitar la contraseña del visitante. Y así sucesivamente
-
Control de acceso. Los datos se cifran con una clave a la que el propio SQL Server tiene acceso (en última instancia, la cadena de cifrado llega hasta la clave maestra del servicio y se cifra mediante DPAPI). Esto no le brinda mayor protección que la que le brindaría otorgar y denegar SELECT:es acceso control, no control criptográfico. Tal esquema protege únicamente contra la pérdida accidental de medios (alguien encuentra un disco con su base de datos o usted pierde una computadora portátil con la base de datos). Puede lograr lo mismo usando Transparent Data Encryption o cifrado de nivel de archivo (BitLocker ).
El escenario de cifrado de datos común es cifrar los datos con una clave simétrica y luego cifrar la clave simétrica con una clave asimétrica (generalmente la clave privada de un certificado). Luego, la clave asimétrica se cifra a su vez con una contraseña, y esta contraseña debe presentarse al intentar acceder a los datos. La razón principal de este desvío de dos niveles es el cambio de contraseña:cuando se compromete una contraseña o una clave privada, la clave simétrica se vuelve a cifrar con una clave asimétrica diferente o la clave asimétrica se vuelve a cifrar con una contraseña diferente. De esta forma la contraseña de acceso ha cambiado sin necesidad de volver a cifrar todos los datos . Si el acceso se concediera directamente a la clave simétrica, entonces un compromiso de contraseña posiblemente requeriría volver a cifrar todos los datos , posibles terabytes de datos.
Donde los dos escenarios que presenté difieren es si la clave asimétrica también está codificada con la clave maestra de la base de datos o no. Caso 1) no lo es, caso 2) lo es. Todo esto se explica en Jerarquía de cifrado .