Mantener mi pase
Acerca de KeepMyPass
KeepMyPass es un sistema de administración de contraseñas construido en Python que utiliza la integración de MySQL con una interfaz gráfica de usuario. Se desarrolló en June/July, 2020
como un proyecto de informática de grado XII (CBSE). También contiene un sistema de gestión de eventos y de gestión de contactos.
Reconocimiento y Certificación
Este proyecto se realizó en parte con la ayuda de mi profesor de Ciencias de la Computación de grado XII. Cumple con todos los requisitos del Proyecto de Ciencias de la Computación de Grado XII, 2020-21, y cubre los siguientes conceptos con gran detalle:
- Manejo de archivos de datos binarios a través de Python
- Gestión de bases de datos MySQL a través de la integración Python-MySQL usando
mysql.connector
- Creación de interfaces gráficas de usuario usando
tkinter
Algunas características de la aplicación
Característica de información
Se proporcionan botones de ayuda en varias pantallas para ayudar al usuario a navegar por la aplicación.
Función de contraseña olvidada
Si un Usuario olvida su Contraseña Maestra, puede recuperar su Cuenta perdida utilizando esta función.
Función de generación de contraseña
Secure-Vault contiene un generador de contraseñas que genera contraseñas (pseudo)aleatorias.*
(Pseudo) características de seguridad
- Los archivos binarios incluyen registros de datos falsos.*
- Los datos que se escriben en un archivo binario se cifran dos veces.*
- Sólo un Usuario puede iniciar sesión a la vez.
- Todos los datos se almacenan en la base de datos en formato cifrado y se descifran sólo si el Usuario desea verlos.
- Las claves de cifrado/descifrado son únicas para cada Usuario.
Función de modo administrador
Usando un modo de administrador protegido por contraseña, una persona puede buscar en todas las bóvedas de usuarios a la vez.* La búsqueda se puede utilizar para buscar registros específicos o todos los registros de un tipo particular.
Notas a pie de página y problemas de seguridad
- El proyecto es vulnerable a la deserialización insegura porque utiliza el módulo de Python
pickle
. - El proyecto menciona (en varios lugares) que las contraseñas generadas son "seguras". Sin embargo, tenga en cuenta que las contraseñas son pseudoaleatorias , aunque un elemento de la función de generación de contraseñas usa
os.urandom()
. - La función Modo administrador solo se agregó al proyecto para cumplir con los requisitos establecidos por CBSE. De ninguna manera se debe aprovechar esta característica. Yo, el desarrollador, entiendo completamente que poder acceder a todos los datos almacenados y proporcionar su acceso a los usuarios finales es problemático y poco ético .
- La técnica de cifrado implementada consta únicamente de diferentes asignaciones de caracteres y cifrados ROT, es decir, no se ha utilizado ningún algoritmo de cifrado real en el proyecto.
- La inclusión de registros falsos en los archivos binarios realmente no afecta la seguridad de los registros de datos reales.
- Cifrar los datos dos veces no tiene ningún beneficio adicional en comparación con cifrarlos solo una vez.
- Las sugerencias de tipo se agregaron a todas las funciones en una fecha posterior.
-
user_checker.py
solo se agregó como un verificador de funcionalidad de back-end. No está diseñado para su uso.
Créditos de ilustración
Todas las ilustraciones utilizadas en el proyecto han sido tomadas de LastPass y afirmo que, de ninguna manera, puedo usar ni usaré mi proyecto para fines comerciales con estas ilustraciones.
Correr
Para ejecutarlo, clone el repositorio en su dispositivo, navegue hasta la carpeta y ejecute:
Planes futuros
- Parche todos los posibles problemas de seguridad y la participación de algoritmos de cifrado/descifrado reales
- Mejorar la interfaz de usuario/diseño
- Uso de un paquete alternativo para manejar archivos binarios o implementación de un método alternativo para almacenar claves de cifrado/descifrado
- La contraseña del modo administrador no debe estar codificada en el archivo.
- Bifurca el proyecto, donde se eliminará el modo administrador
- Hacer el código más modular
- Insinuaciones tipográficas mejores y más profesionales