Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Yubikeys

cphoton
March 09, 2017

 Yubikeys

Presentación en Meetup H&B

cphoton

March 09, 2017
Tweet

More Decks by cphoton

Other Decks in Technology

Transcript

  1. What the key? Dispositivo autenticación multifactor USB (HID / SmartCard)

    y/o NFC (dependiendo del modelo) Elemento hardware seguro (tamper-resistente) Open Source Tooling (dependiendo del modelo) Varios modelos, Yubikey NEO y Yubikey 4 son los más populares
  2. What the key? Programable (2 slots): • Yubico OTP (habilitado

    por defecto en slot 1, slot 2 vacío) • OATH-HOTP • Passwords estáticas (hardcoded) • Challenge/Response Además, soporta: • OATH-TOTP, OATH-HOTP (hasta 28 credenciales) • FIDO U2F (protocolo universal second factor) • SmartCard PIV (RSA / ECC sign / encrypt -> FIPS 201) • OpenPGP => \o/
  3. Qué puedo hacer con una Yubikey? Token 2FA OATH habilitado

    por defecto, soporta TOTP (timer) y HOTP (counter) Yubico Authenticator - compatible con Google Authenticator, pero la información queda guardada en la Yubikey • Qué ventajas me da? ◦ No te pueden robar la semilla de 2FA si queda comprometido el dispositivo (o si se rompe) ◦ Se puede usar la llave en varios dispositivos • Qué desventajas me da? ◦ Necesitás otro dispositivo para ver el valor de 2FA ◦ No pierdas la key! Tip: Yubikey + Backup Codes FTW
  4. Qué puedo hacer con una Yubikey? Token 2FA FIDO U2F

    - estándar abierto para autenticación • Estándar W3C - WebAuth API • Soporte de browsers: Chrome (done), Opera (done), Firefox (WIP), Edge (WIP)
  5. Qué puedo hacer con una Yubikey? Configuración Yubikey Manager -

    Permite visualizar/modificar features básicos de la llave Yubikey Personalization Tool - Permite programar los slots individualmente Hay más software orientado a developers (libraries, U2F connectors, OTP connectors, etc.). Yubico-PAM (PAM module) DEMO TIME!
  6. Qué puedo hacer con una Yubikey? OpenPGP Soportado via JavaCard

    applet - firmado y cifrado en la llave! - Soporta claves de RSA hasta 2048 bits en Yubikey NEO (4096 bits en Yubikey 4) - Compatible con gnupg, lo cual permite hacer algunas cosas interesantes, por ejemplo: • Crear una subkey de autenticación, y combinar con ssh-agent para que la clave privada funcione con SSH • Firmar commits de git
  7. Qué puedo hacer con una Yubikey? OpenPGP HOWTO: OpenPGP Setup

    • Generar clave privada maestra • Generar clave de revocación - guardar en lugar seguro • Generar subkeys (encriptación, autenticación, signing), es posible generarlas en la llave, o copiarlas (cada alternativa tiene ventajas y desventajas) • Copiar/Mover las keys a la llave • No olvidar prestar atención a las OpenPGP Best practices!
  8. Bonus content • No lo he usado, pero con el

    soporte de PIV, es posible firmar imágenes de Docker (Docker Content Trust) • TRNG: Con la Yubikey NEO, es posible obtener números aleatorios desde la llave: echo "scd random 255" | gpg-connect-agent • TRNG: FUgly hack para Yubikey 4 (no soporta el comando scd random): gpg-connect-agent --hex "scd apdu 00 A4 04 00 05 A0 00 00 03 08" /bye gpg-connect-agent --hex "scd apdu 00 87 03 9b 04 7c 02 81 00" /bye • Open Source: Yubikey NEO vs. Yubikey 4
  9. Q&A

  10. Referencias https://en.wikipedia.org/wiki/File:YubiKey-4-keychain-and-YubiKey-4-Nano.png https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_Algorithm https://www.yubico.com/products/yubikey-hardware/ https://developers.yubico.com Algunas specs del elemento

    de hardware: https://gist.github.com/darconeous/ab835fd4bda7f99aa6dd Yubico Authenticator: Desktop (Windows, Linux, OSX): https://developers.yubico.com/yubioath-desktop/ Android: https://play.google.com/store/apps/details?id=com.yubico.yubioath FIDO = Fast IDentity Online https://fidoalliance.org/about/what-is-fido/ https://www.yubico.com/2016/07/over-a-dozen-services-supporting-fido-u2f/ https://www.w3.org/TR/webauthn/
  11. Referencias (cont.) https://developers.yubico.com/yubikey-manager-qt/ https://developers.yubico.com/yubikey-personalization-gui/ https://developers.yubico.com/Software_Projects/ https://developers.yubico.com/yubico-pam/ https://developers.yubico.com/PGP/Importing_keys.html https://help.riseup.net/en/security/message-security/openpgp/best-practices https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo Comando

    para habilitar SSH gpg-agent --daemon --enable-ssh-support bash JavaCard APDU commands: https://www.win.tue.nl/pinpasjc/docs/apis/jc222/javacard/framework/ISO7816.html Generate 8 random bytes via PIV challenge -> http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-73-4.pdf https://blog.docker.com/2015/11/docker-content-trust-yubikey/