Sådan gemmer Kode dine koder
Hvor Kode gemmer dine 2FA-nøgler, hvordan de synkroniseres, og hvordan du får dem ud igen.
Kun i din nøglering
Hver konto – også den hemmelige nøgle, som koderne laves af – gemmes som ét element i iPhonens nøglering (Keychain), tilgængeligt efter første oplåsning. Nøglen gemmes aldrig i appens database, i indstillinger, i logfiler, i analyse eller i nedbrudsrapporter.
iCloud-nøglering
Med sync slået til (standard) er elementet markeret som synkroniserbart, så iCloud-nøgleringen tager det med til dine andre Apple-enheder og en ny iPhone. iCloud-nøgleringen er end-to-end-krypteret. Slår du sync fra, flyttes nøglerne til kun denne iPhone (“denne enhed”) og følger ikke med til en anden telefon.
Ingen server
Kode laver ingen netværkskald. Koderne udregnes efter TOTP-standarden (RFC 6238) med HMAC-SHA1/256/512 – de samme koder som Google Authenticator.
Lås
Face ID eller adgangskode, når appen åbnes, og igen efter et minut i baggrunden. Mens appen ikke er aktiv, dækker en låseskærm alt, så app-skifteren aldrig viser en kode. En kopieret kode udløber fra iPhonens udklipsholder efter 60 sekunder. Den kan sættes ind på din Mac via Universal Clipboard, hvor den bliver, til du kopierer noget andet.
Backup-filens format
Den krypterede backup er en JSON-fil. Nøglen udledes af din adgangskode med PBKDF2-HMAC-SHA256 (600.000 runder, 16 bytes salt), og indholdet krypteres med AES-256-GCM. ciphertext er den krypterede tekst efterfulgt af GCM-tagget på 16 bytes. Alle binære felter er Base64.
{
"format": "kode-backup",
"version": 1,
"kdf": { "name": "PBKDF2-HMAC-SHA256", "iterations": 600000, "salt": "…" },
"cipher": { "name": "AES-256-GCM", "nonce": "…" },
"ciphertext": "…"
}
Dekrypteret er indholdet en liste af konti. Hver konto har også en færdig otpauth://-adresse, som de fleste apps kan importere.
{
"created": "2026-09-24T09:41:00Z",
"accounts": [
{
"issuer": "GitHub", "name": "anna", "secret": "JBSWY3DPEHPK3PXP",
"algorithm": "SHA1", "digits": 6, "period": 30,
"uri": "otpauth://totp/GitHub:anna?secret=JBSWY3DPEHPK3PXP&issuer=GitHub&algorithm=SHA1&digits=6&period=30"
}
]
}
Sådan dekrypterer du filen uden Kode (Python med pakken cryptography):
import base64, getpass, hashlib, json, sys
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
backup = json.load(open(sys.argv[1]))
b64 = base64.b64decode
key = hashlib.pbkdf2_hmac("sha256", getpass.getpass().encode(),
b64(backup["kdf"]["salt"]), backup["kdf"]["iterations"], 32)
plain = AESGCM(key).decrypt(b64(backup["cipher"]["nonce"]), b64(backup["ciphertext"]), None)
for account in json.loads(plain)["accounts"]:
print(account["uri"])