Skip to content
🔐

Ciphie

Tus secretos, cifrados y bajo tu control. Sin nube, sin servidor, sin concesiones.
Cifrado

AES-256-GCM. Un nonce por secreto. Un salt por secreto.

Cada valor se cifra de forma completamente independiente. Comprometer un secreto no compromete el resto.

  1. 1HKDF-SHA256 — combina la clave maestra con un salt único para derivar una clave de cifrado individual
  2. 2AES-256-GCM — cifra el valor con un nonce de 12 bytes generado por os.urandom
  3. 3GCM tag — garantiza que cualquier modificación del ciphertext sea detectable antes de intentar descifrar

Contraseñas hasheadas con PBKDF2-HMAC-SHA256 · 310.000 iteraciones (OWASP 2023). Comparaciones con hmac.compare_digest para eliminar timing attacks.

Autenticación

Login en dos capas

Credenciales primero. Si el usuario tiene 2FA activo, una segunda prueba antes de entrar. Sin opción de saltearlo.

  • TOTP — RFC 6238. Compatible con Google Authenticator, Authy y cualquier app estándar. El secreto se guarda cifrado.
  • Touch ID — biometría en macOS vía pyobjc. Ciphie no almacena datos biométricos.
  • Bloqueo — 3 intentos fallidos bloquean la cuenta. Duración configurable: 5, 10, 15, 30 o 60 min.
Organización

7 tipos de secreto

Cada categoría tiene campos predefinidos. Sin estructuras sueltas, sin campos genéricos para todo.

contraseñatarjetaapi keytokennotaenvotro
Historial

Cada edición genera una versión recuperable

versiones por secreto
4acciones auditadas

Crear, editar, eliminar y copiar quedan registrados en el log de auditoría del dashboard.

Multi-usuario

Aislamiento real entre cuentas

El owner_id se verifica en cada query, no solo al listar. No hay forma de acceder a secretos ajenos sin pasar por autenticación.

  • Editar nombre de usuario y email
  • Configurar o desactivar 2FA
  • Cierre automático por inactividad (30 s – 5 min)
  • Borrado en cascada con verificación 2FA
Dependencias

Una obligatoria. Dos opcionales.

  • cryptography — AES-256-GCM, HKDF, PBKDF2 · requerida
  • qrcode[pil] — QR para setup TOTP · opcional
  • pyobjc — Touch ID en macOS · opcional

Todo lo demás es stdlib de Python. Sin frameworks, sin abstracciones innecesarias.

Stack

Python puro

Interfaz de escritorio con Tkinter. CLI para operaciones básicas. Base de datos SQLite con permisos 0o600. Requiere Python 3.11+.

Filosofía de diseño

Decisiones deliberadas, no limitaciones técnicas

No sincroniza con servidores externos — tus secretos no viajan por la redNo tiene recuperación por email — no hay servidor que reciba el pedido de resetNo corre como daemon — arranca cuando lo necesitás, cierra cuando terminásCifra valores, no el archivo completo — SQLite inspectable para migraciones directas

Tus secretos son tuyos. Ciphie no lo olvida.