¿Cómo puedo proporcionar una seguridad decente en este caso para evitar que alguien tome la base de datos (mediante acceso local, esta máquina NO está conectada a Internet)?
Hay muchas cosas que puedes hacer, pero la mayoría no es directamente programación de base de datos. Debido a que la mayor parte de esto no es programación, podría estar fuera del alcance para usted. No sé para qué fue contratado o qué antecedentes tiene. Si esto está fuera del alcance o no se siente cómodo implementándolo, entonces comunique a su cliente sus inquietudes de seguridad y recomiende que contrate a un especialista.
- Hash los números de tarjeta de crédito.
Esto depende del propósito de los números de tarjeta de crédito almacenados. Si el número solo se usa para identificar de forma única a un cliente o comprar, entonces realmente no necesita el número de la tarjeta de crédito, solo un valor que se asigna de forma inequívoca al número de la tarjeta de crédito. Si este es el caso, entonces reemplaza el número de la tarjeta de crédito con un hash del número de la tarjeta de crédito. Algunos algoritmos hash: SHA1, MD5, RIPEMD-128/256.
- Eliminar el número de la tarjeta de crédito.
Si en algún momento el número de la tarjeta de crédito ya no es necesario, pero el resto de los datos de la fila es, borre el campo de la tarjeta de crédito. Si necesita conservar alguna indicación de la tarjeta, pero no para cargarla, entonces mantenga los últimos cuatro dígitos.
- Rompe la base de datos en partes.
Si no necesita acceder a todo al mismo tiempo, divida la base de datos en partes a las que necesita acceder al mismo tiempo. Si las entradas son independientes, entonces divídalo en partes del mismo tamaño. Esto limitará el daño si una pieza se pierde o es robada. Intente cargar la menor cantidad de piezas a la vez que sea razonable. Si su aplicación tiene solo unas pocas piezas accesibles a la vez, esto ralentizará a un usuario no autorizado.
- Guarde las llaves fuera de la máquina.
Hay algunas maneras de hacer esto. Un método es utilizar un token criptográfico. Hay dispositivos USB, dispositivos de tarjetas inteligentes y tokens de software. Los tokens de software se pueden almacenar en cualquier medio extraíble (CD-ROM, DVD, unidad de disco USB, etc.). Si divide su base de datos en partes, podría considerar el uso de claves diferentes para algunas partes, especialmente si algunas se usan con menos frecuencia que otras.
Un salt es un número aleatorio que se usa normalmente con entradas de contraseña con hash para dificultar que un atacante que accede a una base de datos de contraseñas encuentre rápidamente todas las contraseñas en la base de datos. PBKDF2 es un algoritmo criptográfico que utiliza un salt y una contraseña para generar una clave. Genere una sal (número aleatorio) para cada fila y almacene la sal en texto sin formato en la fila. Utilice PBKDF2 u otro algoritmo de generación de clave adecuado para generar una clave para luego alinear y cifrar los datos de la tarjeta de crédito utilizando la clave generada. El propósito es hacer que el atacante lea la base de datos y genere una nueva clave para descifrar cada número de tarjeta de crédito.
- Limite el acceso de red al sistema.
Dice que la máquina no está conectada a Internet pero sospecho que todavía está en una red interna. Use el firewall en el sistema para restringir el acceso a la red a otros dos o tres sistemas. Si el sistema necesita conectarse a más de dos o tres sistemas, entonces puede que tenga que pensar en mover la base de datos a un sistema diferente o hacer un sistema dedicado para la base de datos.
- Limite el acceso de los usuarios al sistema.
Configure la política de seguridad para permitir que solo unos pocos usuarios críticos puedan iniciar sesión en la máquina. Si más de ocho personas necesitan acceso a la máquina, de nuevo, eso debería ser una señal de que la base de datos debe moverse a otro sistema o a su propio sistema dedicado. Mi respuesta rápida a ocho usuarios: administrador del sistema, administrador alternativo del sistema, administrador de seguridad, administrador alternativo de la seguridad, administrador de base de datos, administrador alternativo de la base de datos, desarrollador de la aplicación, desarrollador de la aplicación alternativo.
- Limite el acceso físico al sistema.
Esto es solo la buena puerta cerrada a la antigua. Si necesita estar en un área compartida con otro sistema, intente hacer que sean sistemas que permitan el acceso a los mismos usuarios. Si todo lo que está disponible es un armario o gabinete, solo asegúrese de que tenga una llave única. Una gran cantidad de cerraduras de oficina y furnite comparten claves comunes.
- Limite lo que los usuarios tienen acceso físico al sistema.
El hecho de que necesiten acceder a la máquina no significa que necesiten acceso físico al sistema. Elija a quién le da las llaves y pídales que no hagan copias ni se las presten a nadie más.