Privacy Tools Guide

Prerequisites

Before you begin, make sure you have the following ready:

Step 1: How to Use YubiKey for Maximum Security in 2026

YubiKeys provide hardware-backed authentication and encryption protection against phishing, credential theft, and unauthorized access. This guide covers complete YubiKey setup for FIDO2, GPG, SSH, and OTP with multi-key backup and disaster recovery strategies.

Step 2: YubiKey Hardware Overview

YubiKey 5 Series Options:

Model Price Features Best For
YubiKey 5C $55 FIDO2, OTP, PIV, USB-C MacBooks, USB-C laptops
YubiKey 5C Nano $65 Compact, USB-C Portable users, business travel
YubiKey 5 NFC $55 FIDO2, OTP, NFC (phones) Mobile + desktop users
YubiKey 5Ci $85 USB-C + Lightning (Apple) iPhone + Mac users
YubiKey 5A $55 FIDO2, OTP, PIV, USB-A Desktop Linux/Windows

Recommended Setup: Purchase 3 YubiKeys:

Total cost: ~$165 for maximum redundancy and recovery capability.

Step 3: FIDO2 Authentication Setup

What is FIDO2:

Step 1: Register YubiKey with Primary Services

GitHub Registration:

1. Go to github.com/settings/security
2. Click "Add" under Security keys
3. When prompted "Plug in your security key"
4. Insert YubiKey into USB port
5. Press YubiKey button within 30 seconds
6. Name key: "YubiKey 5C - Primary"
7. Repeat for backup keys: "YubiKey NFC - Backup", "YubiKey USB-A - Storage"

Result: GitHub recognizes 3 registered YubiKeys for login.

Google Account Registration:

1. Go to myaccount.google.com/security
2. Scroll to "Your security keys"
3. Click "Add security key"
4. Select "USB or Bluetooth"
5. Insert YubiKey and press button
6. Name: "YubiKey 5C Primary"
7. Repeat for backup keys

After registration: YubiKey is required for login + recovery.

Microsoft Account Registration:

1. Go to account.microsoft.com/security
2. Select "Advanced security options"
3. Click "Add a new way to sign in or verify"
4. Choose "Security key"
5. Select "USB device"
6. Insert YubiKey, press button
7. Name key, repeat for backups

Apple ID Registration:

1. Go to appleid.apple.com/account/advanced-security
2. Click "Add a security key"
3. When prompted for YubiKey:
   - Use YubiKey 5Ci for Lightning connector
   - Or YubiKey NFC for iPhone via NFC
4. Name and register backup keys

Step 4: GPG Key Management

Step 1: Generate Master GPG Key (on secure machine)

# Generate master key (4096-bit RSA, never for signing)
gpg --full-generate-key

# Select:
# Key type: (1) RSA and RSA
# Keysize: 4096
# Validity: 0 (no expiration)
# Name: Your Name
# Email: your@email.com
# Passphrase: Long passphrase (40+ characters, unique)

# Export public key
gpg --export --armor your@email.com > public-key.asc

# Export secret key (SECURE - keep offline)
gpg --export-secret-keys --armor your@email.com > secret-key.asc.gpg

Step 2: Move Signing Key to YubiKey

# Install YubiKey manager
brew install ykman  # macOS
sudo apt install yubikey-manager  # Ubuntu

# Reset YubiKey GPG applet (careful - deletes existing keys)
ykman openpgp reset

# Generate key on YubiKey (takes 5-10 minutes)
ykman openpgp generate --sig-key
# When prompted: Select YubiKey slot (Signature key)
# For subkeys: decryption, authentication

# Verify key on device
ykman openpgp info

# Output should show:
# OpenPGP version: 3.4
# Pin: 3/3
# Admin PIN: 3/3
# Reset Code: not set
# Signing key [sig]:    [Key ID] (4096 bits)
# Encryption key [enc]: [Key ID]
# Authentication key [aut]: [Key ID]

Step 3: Backup Encrypted Master Key

# Create encrypted backup
gpg --symmetric secret-key.asc.gpg

# This creates: secret-key.asc.gpg.gpg
# Store this file:
# - Dropbox encrypted vault (Tresorit, Sync.com)
# - Hardware wallet storage
# - Safe deposit box (printed + USB)

# Store passphrase separately:
# - Password manager (1Password, Bitwarden)
# - Physical safe
# - NOT with the key file

Step 5: SSH Key Setup

Step 1: Enable SSH on YubiKey

# Check current SSH support
ykman openpgp info

# Configure SSH to use YubiKey
# Add to ~/.ssh/config:

Host *
  IdentityAgent ~/.gnupg/S.gpg-agent.ssh
  IdentityAgent "C:\Users\[User]\AppData\Local\GnuPG\S.gpg-agent.ssh"  # Windows

# Enable GPG agent SSH support
echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf

# Restart GPG agent
gpgconf --kill gpg-agent
gpgconf --launch gpg-agent

# Verify SSH key available
ssh-add -L

# Output should show YubiKey SSH key:
# ssh-rsa AAAAB3... cardno:000...

Step 2: Add SSH Key to Services

# Get SSH public key from YubiKey
ssh-add -L

# Add to GitHub:
# Settings > SSH and GPG keys > New SSH Key
# Paste public key from above
# Name: "YubiKey SSH - Primary"

# Add to Servers:
cat ~/.ssh/id_rsa.pub | ssh user@server 'cat >> .ssh/authorized_keys'

# Test connection (YubiKey will prompt for PIN)
ssh user@server
# You'll see: "Please touch the Yubikey"
# Touch YubiKey button

SSH Config Example:

# ~/.ssh/config

Host github.com
  HostName github.com
  User git
  IdentityAgent ~/.gnupg/S.gpg-agent.ssh
  IdentitiesOnly yes

Host prod-server
  HostName prod.example.com
  User deploy
  IdentityAgent ~/.gnupg/S.gpg-agent.ssh
  IdentitiesOnly yes
  Port 2222

Host *.internal
  ProxyJump prod-server
  IdentityAgent ~/.gnupg/S.gpg-agent.ssh

Step 6: One-Time Password (OTP) Setup

Step 1: Configure OTP on YubiKey

# YubiKey 5 supports two OTP slots
# Slot 1: TOTP (Time-based OTP)
# Slot 2: HOTP (Counter-based OTP)

# Install ykman
brew install ykman

# Program Slot 1 for TOTP (Google Authenticator compatible)
ykman otp insert 1 --totp --digits 6

# When prompted:
# Name: "Primary Auth"
# Key (from service): [paste secret from service]
# Digits: 6

# Test OTP generation
ykman otp yubiotp
# Output: 123456 (valid for 30 seconds)

Step 2: Register OTP with Services

Google Account:

1. Go to myaccount.google.com/security
2. 2-Step Verification > Authenticator app
3. Click "Can't use it?" > Enter a setup key
4. Paste secret from YubiKey
5. Save codes

GitHub:

1. Settings > Security > Two-factor authentication
2. Setup authenticator app
3. When prompted for secret:
   - Use: ykman otp yubiotp (from YubiKey)
   - Or manually enter secret
4. Save recovery codes

Microsoft:

1. account.microsoft.com/security
2. Advanced security options > Two-factor verification
3. Set up authenticator app
4. Scan QR or enter key
5. Click "I can't scan the code" if needed
6. Paste YubiKey secret

Step 7: Multi-Key Backup Strategy

Backup Architecture:

Backup Strategy:

Primary YubiKey (daily use):
├── Location: Keychain with you
├── Keys: FIDO2, SSH, GPG signing
├── Update: Monthly sync
└── Risks: Lost/stolen/damaged

Backup 1 (mobile + emergency):
├── Location: Desk drawer at home
├── Keys: FIDO2, SSH, GPG signing
├── Transport: Only during travel
└── Purpose: Phone access via NFC

Backup 2 (secure storage):
├── Location: Safe deposit box / secure safe
├── Keys: FIDO2, SSH, GPG signing
├── Transport: Never leave secure location
└── Purpose: Last resort recovery

Recovery Sequence:

Scenario 1: Lost primary key
1. Locate backup YubiKey (desk drawer)
2. Continue work immediately
3. Order replacement YubiKey
4. Register replacement with all services

Scenario 2: All keys lost
1. Use account recovery codes (stored separately)
2. Use authenticator app backup
3. Contact service support (GitHub, Google, etc.)
4. Verify identity (security questions, email)
5. Register new YubiKey after identity verified

Scenario 3: Key damaged/non-functional
1. Use backup key immediately
2. Contact YubiKey support (lifetime warranty)
3. Request RMA (return/replacement)
4. Receive replacement within 2 weeks

Step 8: Account Recovery Codes

Step 1: Generate Recovery Codes

Each service provides recovery codes when you enable 2FA with YubiKey.

GitHub Recovery Codes:

1. Settings > Security > Recovery codes
2. Download backup codes (printed PDF)
3. Print 2 copies:
   - Store in safe deposit box
   - Store in secure home safe
4. Each code: one-time use

Google Backup Codes:

1. myaccount.google.com/security
2. 2-Step verification > Backup codes
3. Download and print
4. Store in two physical locations
5. Label with expiration date

Backup Code Storage Locations:

Primary storage: Safe deposit box
├── Printed recovery codes (laminated)
├── YubiKey USB-A backup
├── Encrypted master GPG key (USB)
└── Passphrase list (separate)

Secondary storage: Home safe
├── Printed recovery codes (laminated)
├── YubiKey NFC backup
├── Setup notes (YubiKey pins, passphrases)
└── Service usernames/emails

Step 9: PIN and Password Management

YubiKey PIN Settings:

# Default PINs:
# User PIN: 123456
# Admin PIN: 12345678

# Change user PIN (requires current pin)
ykman openpgp set-pin

# Change admin PIN (requires current admin pin)
ykman openpgp set-admin-pin

# Set PIN retry counts (optional)
ykman openpgp set-pin-retries 3 3 3
# Format: user-retries admin-retries reset-retries

Recommended PIN Strategy:

User PIN: 6 digits, unique (random)
Admin PIN: 8 digits, unique (random)
Storage: 1Password vault

Example:
User PIN: 847293
Admin PIN: 92847561

Note: Memorizing PINs is NOT recommended
Store in password manager with YubiKey serial number

Step 10: Disaster Recovery Plan

Complete Recovery Playbook:

Step 1: Verify Situation (within 1 hour)
├── Determine which key(s) are inaccessible
├── Check safe deposit box for backup
├── Verify email access to recovery accounts
└── Note exact time of incident

Step 2: Immediate Access (within 24 hours)
├── Use backup YubiKey (if available)
├── Use recovery codes (if key truly lost)
├── Contact service support (GitHub, Google)
└── Change critical passwords while YubiKey unavailable

Step 3: Restore Access (1-7 days)
├── Receive replacement YubiKey (if ordered)
├── Restore GPG key from encrypted backup
├── Re-register new YubiKey with all services
└── Test each service works with new key

Step 4: Update Backups (1 month)
├── Order new backup YubiKeys
├── Register new YubiKeys alongside existing
├── Update safe deposit box contents
├── Update password manager recovery notes
└── Schedule annual backup maintenance

Common Mistakes to Avoid

Mistake 1: Single YubiKey Only

Mistake 2: Recovery Codes Stored with YubiKey

Mistake 3: Passphrase Forgotten

Mistake 4: No Test of Recovery

Mistake 5: No Firmware Updates

Step 11: Regular Maintenance Schedule

Monthly:

Quarterly:

Annually:

Troubleshooting

Configuration changes not taking effect

Restart the relevant service or application after making changes. Some settings require a full system reboot. Verify the configuration file path is correct and the syntax is valid.

Permission denied errors

Run the command with sudo for system-level operations, or check that your user account has the necessary permissions. On macOS, you may need to grant terminal access in System Settings > Privacy & Security.

Connection or network-related failures

Check your internet connection and firewall settings. If using a VPN, try disconnecting temporarily to isolate the issue. Verify that the target server or service is accessible from your network.