PassPai es una herramienta para la generación y gestión de contraseñas de codigo abierto que permite la generación de contraseñas seguras gracias a la encriptación AES-256
Para instalar y ejecutar KeyForge localmente, sigue estos pasos:
Clona el repositorio:
#BASH1git clone https://github.com/Rawierdt/PassPai.git 2
Abre el proyecto en tu navegador:
Abre el archivo index.html
en tu navegador para ver la aplicación en acción.
#JAVASCRIPT1 2 function savePasswordsToFile() { 3 promptForMasterPassword((password) => { 4 generateEncryptionKey(password).then(key => { 5 encryptionKey = key; 6 iv = crypto.getRandomValues(new Uint8Array(12)); // IV debe ser único para cada cifrado 7 8 const passwordEntries = Object.entries(passwords); 9 if (passwordEntries.length === 0) { 10 alert("No hay contraseñas guardadas para descargar."); 11 return; 12 } 13 14 let passwordText = "Red Social - Contraseña\n"; 15 // Eso ultimo no tiene utilidad pero aun asi esta 16 passwordEntries.forEach(([network, password]) => { 17 passwordText += `${network}: ${password}\n`; 18 }); 19 20 return crypto.subtle.encrypt( 21 { 22 name: "AES-GCM", 23 iv: iv 24 }, 25 encryptionKey, 26 new TextEncoder().encode(passwordText) 27 ).then(encryptedText => { 28 const blob = new Blob([iv, new Uint8Array(encryptedText)], { type: "application/octet-stream" }); 29 const url = URL.createObjectURL(blob); 30 const a = document.createElement("a"); 31 a.href = url; 32 a.download = "mypasswords.pai"; 33 // la extensión del archivo es PAI para comodidad 34 document.body.appendChild(a); 35 a.click(); 36 document.body.removeChild(a); 37 }); 38 }); 39 }); 40 } 41
Se esta usando AES en modo GCM y PBKDF2 con SHA-256
🔵 AES-GCM no solo cifra los datos para mantenerlos confidenciales, sino que también incluye un mecanismo para verificar la integridad y autenticidad de los datos cifrados.
🔵 Rendimiento: Es conocido por su eficiencia y rendimiento, lo que lo hace adecuado para aplicaciones que requieren alta velocidad de cifrado y descifrado.
🔵 Uso Común: Es ampliamente adoptado en protocolos de seguridad como TLS (Transport Layer Security) y en aplicaciones que requieren cifrado seguro y rápido.
🔵 PBKDF2 es una función criptográfica utilizada para derivar claves seguras a partir de contraseñas.
🔵 Resistente a ataques de fuerza bruta y ataques de diccionario.
🔵 “Key stretching” y aumenta significativamente el tiempo necesario para romper una contraseña.
🔵 Sal: Un valor aleatorio que se añade a la contraseña para asegurar que contraseñas iguales no generen la misma clave derivada.
🔵 Iteraciones: El número de veces que se repite el proceso de derivación. Un mayor número de iteraciones aumenta la seguridad.
generateEncryptionKey(password):
#NX1 Genera una clave de cifrado a partir de una contraseña usando PBKDF2 con SHA-256. La sal utilizada es la propia contraseña, lo cual no es una práctica recomendada por motivos de seguridad, pero se hace aquí por simplicidad. 2
savePasswordsToFile():
#NX1 Guarda las contraseñas en un archivo cifrado. Primero, solicita una contraseña maestra, genera una clave de cifrado con ella, y luego cifra las contraseñas almacenadas en un objeto. El archivo resultante se descarga con la extensión .pai. 2
Nombre | Descripción |
---|---|
Seguridad | Usar la contraseña como sal no es seguro (Esto se cambiará mas tarde). Es mejor usar una sal aleatoria. |
Vector de inicialización | Se genera un IV único para cada cifrado, lo cual es correcto. |
Cifrado | Utiliza AES-GCM, que es un modo de cifrado seguro y moderno. |
AES-GCM | Advanced Encryption Standard - Galois/Counter Mode (Simetrico) |
PBKDF2 | Password-Based Key Derivation Function 2 |
Contributions, issues and feature requests are welcome! Feel free to check issues page.
Give a ⭐️ if this project helped you!
Copyright © 2024 Rawier. This project is MIT licensed.