CrYptografia en KeePass
Sin duda un repositorio seguro de claves es una necesidad con la cantidad de llaves que se tienen hoy en dia.
Una herramienta muy recomendada para mantener protegidos los códigos de acceso a diferentes servicios. Muy liviana y con aceptables algoritmos criptograficos que protegen sus datos tanto al momento de procesarlo como cuando están en reposo. Tiene versiones para móvil y PC. Ademas su generador de claves con la posibilidad de elegir no solo la cantidad de caracteres, sino los tipos y consecuentemente la longitud de llave en bits nos permite apreciar de manera mas transparente la protección interna que se puede lograr.
Cifrado de la base de datos
Los archivos de la base de datos KeePass están cifrados. KeePass cifra toda la base de datos, es decir, no sólo sus contraseñas, sino también sus nombres de usuario, URL, notas, etc.
Se admiten los siguientes algoritmos de cifrado:
KeePass 1.x:
Algoritmo | Tamaño de clave | Std. / Ref. |
Estándar de cifrado avanzado (AES / Rijndael) | 256 bits | NIST FIPS 197 |
Twofish | 256 bits | Información |
KeePass 2.x:
Algoritmo | Tamaño de clave | Estándar. / Ref. |
Estándar de cifrado avanzado (AES / Rijndael) | 256 bits | NIST FIPS 197 |
ChaCha20 | 256 bits | RFC 7539 |
Existen varios complementos que brindan soporte para algoritmos de cifrado adicionales, incluidos, entre otros, Twofish, Serpent y GOST. |
Estos algoritmos bien conocidos y analizados minuciosamente se consideran muy seguros. AES (Rijndael) entró en vigor como estándar del gobierno federal de los EE. UU. Y está aprobado por la Agencia de Seguridad Nacional (NSA) para obtener información ultrasecreta. Twofish fue uno de los otros cuatro finalistas de AES. ChaCha20 es el sucesor del algoritmo Salsa20 (que se incluye en la cartera de eSTREAM).
Los cifrados de bloque se utilizan en elCipher Block Chaining modo de bloques de cifrado(CBC).En el modo CBC, se ocultan los patrones de texto sin formato.
Un vector de inicialización (IV) se genera aleatoriamente cada vez que se guarda una base de datos. Por lo tanto, múltiples bases de datos cifradas con la misma clave maestra (por ejemplo, copias de seguridad) no son un problema.
:
Solo KeePass 1.x
Autenticidad e integridad de los datosLa autenticidad y la integridad de los datos se garantizan mediante un hash SHA-256 del texto sin formato.
KeePass 2.x solamente
La autenticidad e integridad de los datos se asegura utilizando un hash HMAC-SHA-256 del texto cifrado (esquema Encrypt-then-MAC).
Hash de claves y derivación de claves
SHA-256 se utiliza para comprimir los componentes de la clave maestra compuesta (que consta de una contraseña, un archivo de clave, una clave de cuenta de usuario de Windows y / o una clave proporcionada por un complemento) en una clave de 256 bits K.
SHA-256 es una función hash criptográfica que se considera muy segura. Ha sido estandarizado en NIST FIPS 180-4. El ataque contra SHA-1 descubierto en 2005 no afecta la seguridad de SHA-256.
Para generar la clave para el algoritmo de cifrado, K se transforma utilizando una función de derivación de clave (con una sal aleatoria). Esto evita el cálculo previo de claves y dificulta los ataques de diccionario y de adivinación. Para obtener más información, consulte la sección “Protección contra ataques de diccionario“.
Protección contra ataques de diccionario
KeePass ofrece protección contra ataques de diccionario y adivinanzas.
Estos ataques no se pueden prevenir, pero se pueden hacer más difíciles. Para esto, la clave K derivada de la clave maestra compuesta del usuario (ver arriba) se transforma usando una función de derivación de clave con una sal aleatoria. Esto evita un cálculo previo de claves y agrega un factor de trabajo que el usuario puede hacer tan grande como desee para aumentar el esfuerzo computacional de un diccionario o ataque de adivinanzas.
Se admiten las siguientes funciones de derivación de claves (se pueden elegir y configurar en el cuadro de diálogo de configuración de la base de datos):
- AES-KDF (KeePass 1.xy 2.x):
esta función de derivación de claves se basa en iterar AES.
En el cuadro de diálogo de configuración de la base de datos, los usuarios pueden cambiar el número de iteraciones. Cuantas más iteraciones, más difíciles son los ataques de diccionario y adivinanzas, pero también la carga / guardado de la base de datos lleva más tiempo (linealmente).
En Windows Vista y versiones posteriores, KeePass puede usar la API CNG / BCrypt de Windows para la transformación de claves, que es aproximadamente un 50% más rápida que el código de transformación de claves integrado en KeePass. - Argon2 (KeePass 2.x solamente):
Argon2 es el ganador del Concurso de hash de contraseñas. La principal ventaja de Argon2 sobre AES-KDF es que proporciona una mejor resistencia contra los ataques GPU / ASIC (debido a que es una función que requiere mucha memoria).
El número de iteraciones escala linealmente con el tiempo requerido. Al aumentar el parámetro de memoria, los ataques GPU / ASIC se vuelven más difíciles (y aumenta el tiempo requerido). El parámetro de paralelismo se puede usar para especificar cuántos subprocesos se deben usar.
Hay tres versiones de Argon2: Argon2d, Argon2i y Argon2id. Argon2d tiene la mejor resistencia contra ataques de GPU / ASIC, Argon2i tiene la mejor resistencia contra ataques de canal lateral y Argon2id es una versión híbrida entre Argon2d y Argon2i. Como KeePass es una aplicación cliente, no una aplicación de servidor, la resistencia contra los ataques de GPU / ASIC es mucho más importante que la resistencia contra los ataques de canal lateral. Por lo tanto, KeePass usa Argon2d.
Al hacer clic en el botón ‘Retraso de 1 segundo’ en el cuadro de diálogo de configuración de la base de datos, KeePass calcula el número de iteraciones que resulta en un retraso de 1 segundo al cargar / guardar una base de datos. Además, KeePass 2.x tiene un botón ‘Prueba’ que realiza una derivación clave con los parámetros especificados (que se pueden cancelar) e informa el tiempo requerido.
La derivación de claves puede requerir más o menos tiempo en otros dispositivos. Si está utilizando KeePass o un puerto de este en otros dispositivos, asegúrese de que todos los dispositivos sean lo suficientemente rápidos (y tengan suficiente memoria) para cargar la base de datos con sus parámetros en un tiempo aceptable.
KeePassX. A diferencia de KeePass, el puerto de Linux KeePassX solo admite parcialmente la protección contra ataques de diccionario y adivinanzas.
Generación de números aleatorios
KeePass primero crea un grupo de entropía utilizando varias fuentes de entropía (incluidos números aleatorios generados por el proveedor criptográfico del sistema, fecha / hora actual y tiempo de actividad, posición del cursor, versión del sistema operativo, recuento de procesadores, variables de entorno, estadísticas de proceso y memoria, cultura, un nuevo GUID aleatorio, etc.).
Los bits aleatorios para los métodos de generación de alto nivel se generan usando un generador de números pseudoaleatorios criptográficamente seguro (basado en SHA-256 / SHA-512 y ChaCha20) que se inicializa usando el grupo de entropía.
Protección de la memoria del proceso
Mientras KeePass está en ejecución, los datos confidenciales se almacenan de forma cifrada en la memoria del proceso. Esto significa que incluso si volcara la memoria del proceso KeePass en el disco, no podría encontrar ningún dato sensible. Por motivos de rendimiento, la protección de la memoria de proceso solo se aplica a datos sensibles; Los datos confidenciales aquí incluyen, por ejemplo, la clave maestra y las contraseñas de entrada, pero no los nombres de usuario, las notas y los archivos adjuntos. Tenga en cuenta que esto no tiene nada que ver con el cifrado de archivos de base de datos; en los archivos de la base de datos, todos los datos (incluidos los nombres de usuario, etc.) están cifrados.
Además, KeePass borra toda la memoria crítica para la seguridad (si es posible) cuando ya no se necesita, es decir, sobrescribe estas áreas de memoria antes de liberarlas.
KeePass utiliza la DPAPI de Windows para cifrar datos confidenciales en la memoria (a través de CryptProtectMemory / ProtectedMemory). Con DPAPI, la clave para el cifrado de la memoria se almacena en un área de memoria segura y no intercambiable administrada por Windows. DPAPI está disponible en Windows 2000 y superior. KeePass 2.x siempre usa DPAPI cuando está disponible; en KeePass 1.x, esto se puede deshabilitar (en las opciones avanzadas; por defecto el uso de DPAPI está habilitado; si está deshabilitado, KeePass 1.x usa el algoritmo de cifrado ARC4 con una clave aleatoria; tenga en cuenta que esto es menos seguro que DPAPI , principalmente no porque ARC4 criptográficamente no sea tan fuerte, sino porque la clave para el cifrado de la memoria también se almacena en la memoria de proceso intercambiable; de manera similar, KeePass 2.x recurre a cifrar la memoria del proceso usando ChaCha20, si DPAPI no está disponible). En sistemas similares a Unix, KeePass 2.x usa ChaCha20, porque Mono no proporciona ningún método de protección de memoria efectivo.
Para algunas operaciones, KeePass debe hacer que los datos confidenciales estén disponibles sin cifrar en la memoria del proceso. Por ejemplo, para mostrar una contraseña en el control de vista de lista estándar proporcionado por Windows, KeePass debe proporcionar el contenido de la celda (la contraseña) como una cadena no encriptada (a menos que esté habilitado ocultar usando asteriscos). Las operaciones que dan como resultado datos no cifrados en la memoria del proceso incluyen, entre otros: mostrar datos (no asteriscos) en controles estándar, buscar datos, reemplazar marcadores de posición (durante el tipo automático, arrastrar y soltar, copiar al portapapeles, …), importar / exportar archivos (excepto KDBX) y cargar / guardar archivos sin cifrar. Windows y .NET pueden realizar copias de los datos (en la memoria del proceso) que KeePass no puede borrar.
Ingrese la clave maestra en el escritorio seguro (protección contrateclas)
registradores deKeePass 2.x tiene una opción (en ‘Herramientas’ → ‘Opciones’ → pestaña ‘Seguridad’) para mostrar el cuadro de diálogo de la clave maestra en un escritorio diferente / seguro (compatible con Windows 2000 y superior), similar al Control de cuentas de usuario (UAC) de Windows. Casi ningún registrador de teclas funciona en un escritorio seguro.
La opción está desactivada de forma predeterminada por razones de compatibilidad.
Puede encontrar más información en la Secure Desktop página de ayuda de.
KeePass 2.x solamente
Tenga en cuenta que el tipo automático también puede protegerse contra los keyloggers mediante el uso de la ofuscación de tipo automático de dos canales.
Nota: KeePass fue uno de los primeros administradores de contraseñas que permitió ingresar la clave maestra en un escritorio diferente / seguro.
Bloquear el espacio de trabajo
Al bloquear el espacio de trabajo, KeePass cierra el archivo de la base de datos y solo recuerda su ruta y ciertos parámetros de vista.
Esto proporciona la máxima seguridad: desbloquear el espacio de trabajo es tan difícil como abrir el archivo de la base de datos de la forma habitual. Además, evita la pérdida de datos (la computadora puede fallar mientras KeePass está bloqueado, sin dañar la base de datos).
Cuando se abre un cuadro de diálogo secundario, es posible que el espacio de trabajo no esté bloqueado; para obtener más detalles, consulte las preguntas frecuentes.