Voy a darle una oportunidad:
Distribución
Mi sugerencia sería dejar el sistema de distribución como está, especialmente porque no parece haber un método más seguro para distribuir las contraseñas de forma segura. Si realmente desea distribuir las contraseñas utilizando un servidor web, le recomendaría que proporcione a cada usuario un enlace único de tiempo limitado. El usuario ingresa el enlace en un navegador y está conectado, pero debe ingresar una nueva contraseña antes de que el acceso normal pueda continuar. Esto simula un intercambio típico de restablecer contraseña a través del correo electrónico, excepto que el único enlace único se imprime en papel en lugar de enviarlo por correo electrónico.
Creación de contraseña única
Mi sugerencia sería crear una tabla simple en la base de datos de tu elección que tenga dos columnas: nombre de usuario y contraseña.
Uso postgresql, pero que yo sepa, todos los sistemas de base de datos tienen un calificador único para una restricción de columna. Puede tener contraseñas de salida de un generador de contraseñas aleatorias y compararlas con las actuales en la base de datos ... o puede emitir un UUID como contraseña. Se garantiza que un UUID es único, y si se combina con la idea del vínculo de enlace en la sección de distribución solo se deberá ingresar una vez. En cualquier caso, el generador de contraseñas aleatorias combinado con una lista de contraseñas actuales es bastante fácil de implementar y automatizar. Además, la tabla de contraseña inicial se puede exportar fácilmente o incluso vincularse directamente a la tabla de contraseña de la base de datos de la aplicación web.
Cambios de administración
Si implementa una tabla de base de datos con un generador automático de contraseñas aleatorias, el administrador de la aplicación web simplemente necesita ingresar un nuevo nombre de usuario y el sistema creará una contraseña. Si implementa un método de enlace de distribución de contraseña inicial único, la distribución en papel solo cambiará el contenido ... en lugar de una contraseña, habrá un enlace.
Asuntos legales y trato con menores
En algunas localidades, hay leyes específicas que detallan los sistemas de información / computación y los menores. Si no está al tanto de las leyes en su área, le sugiero que averigüe si la ejecución de un sistema que puede incluir información de identificación personal (PII) de menores tiene alguna implicación especial de seguridad y / o registro / registro.
Preguntas
¿Algo de esto tiene sentido? ¿Servicial? ¿O simplemente confuso?
Addendum
Tras una consideración más a fondo, me doy cuenta de que omití algunas preocupaciones de seguridad específicas, así como algunas sugerencias para la implementación.
Almacén de contraseña de la base de datos
Es una mala práctica de seguridad almacenar contraseñas de texto simple. Hay al menos dos opciones decentes al almacenar contraseñas en una base de datos:
- Almacene un hash salado de una manera en lugar de la contraseña.
- Almacene la contraseña de texto sin formato en una columna cifrada usando la clave pública del propietario de los datos.
En este caso de uso particular, de contraseñas generadas centralmente e inmutables, recomendaría almacenar las contraseñas en una columna cifrada en una base de datos separada y un sistema separado de la aplicación web. Por supuesto, la columna de contraseña de la aplicación web debe contener el hash con sal de la contraseña según la consideración de seguridad habitual. Además, la exportación de una columna de contraseñas en formato salted y hash como un vector o tabla csv
se automatiza fácilmente con el único requisito de administración de que el propietario de los datos ingrese la frase de contraseña de la clave privada.
Si se utiliza la idea de enlace web, entonces no es necesario rastrear las contraseñas de texto sin formato, ya que el administrador nunca generará una. Pero entonces, el administrador no tendría un registro de la contraseña de texto sin formato. Sin embargo, en la mayoría de los casos, el acceso a la contraseña de texto simple real no es necesario.
Tasa de crecimiento de datos
Según la descripción de su caso de uso, se supone que su almacén de datos crecerá lentamente o no crecerá en absoluto. Parece que tiene una inscripción progresiva en la aplicación con un número total de usuarios estático a lo largo del tiempo, más o menos algún búfer. Si es verdadero, las consideraciones de escalabilidad más allá del número actual de usuarios no son aplicables.
Lecturas adicionales