Piawaian · otpauth-migration

Adakah QR eksport Google Authenticator selamat untuk diimbas?

Hanya jika anda yang menjana sendiri, pada telefon lama anda sendiri, dengan telefon baharu anda sendiri yang diarahkan ke skrin. Sesiapa lain yang memotret QR itu, atas sebab apa pun, mendapat akses kekal kepada setiap kod 2FA bagi setiap akaun dalam bundle.

Sahkan bundle → Semua piawaian →

Apakah ia

Google Authenticator dan beberapa aplikasi serasi (Aegis, Raivo OTP, 2FAS) membenarkan anda “mengeksport” akaun 2FA yang disimpan supaya anda boleh memindahkannya ke peranti baharu. Eksport berbentuk kod QR dengan URI yang bermula dengan otpauth-migration://. Di dalam URI itu adalah bundle protokol-buffer tunggal (skema MigrationPayload Google) yang membawa setiap akaun sekaligus — pengeluar, nama akaun, benih rahsia, algoritma, kiraan digit, jenis (HOTP / TOTP), dan pembilang.

Format ini pada asalnya tidak didokumentasikan, tetapi telah dijurutera semula dan kini merupakan format pertukaran de-facto untuk sandaran 2FA. Aplikasi pengesah pihak ketiga mengenali dan mengimport QR yang sama.

Satu QR boleh mengandungi berpuluh akaun. QR tidak dapat dibezakan secara visual daripada QR persediaan TOTP biasa — tiada penanda visual yang memberitahu pemerhati biasa bahawa ia membawa keseluruhan bundle.

Mengapa satu QR bundle adalah berbahaya secara unik

QR persediaan otpauth:// biasa adalah berbahaya untuk diimbas jika anda tidak memintanya, tetapi jejari letupannya adalah satu akaun. Jejari letupan QR migrasi ialah setiap akaun dalam pengesah anda. Jika penyerang memotret skrin yang memaparkan QR ini — dari bahu anda di kedai kopi, melalui kamera CCTV yang anda tidak perasan, melalui tingkap kaca jernih — mereka pergi dengan keupayaan untuk memintas 2FA pada setiap akaun yang diliputi. Secara kekal. Sehingga anda memutar setiap rahsia secara manual, yang kebanyakan perkhidmatan tidak mudahkan.

Tiada tamat tempoh pada rahsia dalam bundle. Tidak seperti token sesi (yang tamat tempoh), tidak seperti QR kunci laluan (yang sekali guna), benih dalam bundle migrasi adalah sah sehingga anda menggantikannya perkhidmatan demi perkhidmatan.

Inilah sebabnya keputusan pengimbas kami pada setiap QR otpauth-migration:// bermula pada berkemungkinan_berbahaya dan kekal di sana tanpa mengira konteks. Formatnya baik; model ancaman adalah kewujudan format itu.

Apa yang sebenarnya ada di dalam (anatomi)

URI kelihatan seperti:

otpauth-migration://offline?data=<urlsafe-base64-encoded-protobuf>

Badan base64, setelah didekod, adalah protocol-buffer MigrationPayload dengan medan peringkat atas ini:

Setiap entri otp_parameters mempunyai:

Apa yang pengimbas kami tunjukkan, dan apa yang sengaja tidak ditunjukkan

✓ Ditunjukkan

Untuk setiap entri dalam bundle, keputusan menunjukkan pengeluar (ACME, GitHub, AWS), nama akaun (alice@acme.com), algoritma (SHA1), kiraan digit (6), dan jenis (TOTP). Pendedahan keputusan membaca “Kebenaran dalam bundle ini: ACME / alice@acme.com; GitHub / bob@github; AWS / root; …” supaya pengguna yang SEDANG migrasi boleh mengaudit senarai sebelum mengimport.

Versi skema, indeks batch, saiz batch, dan ID batch juga ditunjukkan — berguna apabila eksport dibahagikan merentas pelbagai QR.

✗ Tidak pernah didekod

Bait secret mentah tidak pernah didekod ke dalam output keputusan. Penganalisis kami membacanya hanya untuk mengesahkan setiap entri terbentuk dengan baik (rahsia ada + tidak kosong), kemudian membuang nilai sebelum penemuan dibina.

Ini ditegaskan oleh suite ujian — kami memberi penganalisis muatan protobuf yang dibuat dengan tangan yang mengandungi rentetan canary (SECRET_SEED_1, SECRET_SEED_2) dan menegaskan rentetan itu tidak pernah muncul dalam output keputusan yang bersiri. Regresi di sana gagal CI.

Bila (dan bagaimana) menggunakannya

Kes guna yang sah: anda menaik taraf dari satu telefon ke yang lain. Telefon LAMA menunjukkan QR migrasi pada skrinnya selama ~30 saat. Aplikasi pengesah telefon BAHARU diarahkan ke skrin dan mengimport. Tiada orang lain dalam bilik. Anda memadam eksport dari telefon lama selepas mengesahkan segalanya diimport.

Permukaan bahaya ialah:

Jika anda mengesyaki QR migrasi telah terdedah

Anggap sebagai kebocoran bukti kelayakan merentas setiap akaun dalam bundle. Langkah pemulihan, mengikut urutan:

  1. Log masuk ke setiap perkhidmatan yang terjejas dan putar rahsia 2FA. Kebanyakan perkhidmatan membenarkan ini di bawah Akaun → Keselamatan → Pengesahan dua faktor → Lumpuhkan kemudian daftar semula.
  2. Untuk perkhidmatan yang tidak mendedahkan putaran (jarang tetapi wujud), alih keluar dan tambah semula akaun.
  3. Audit aktiviti log masuk terkini pada setiap akaun yang terjejas.
  4. Padamkan QR eksport asal daripada setiap peranti + perpustakaan foto yang disegerakkan awan yang mungkin memilikinya.

Penyerang dengan bundle boleh menghasilkan kod 2FA yang sah selama bertahun-tahun sehingga anda berputar. Jangan tangguhkan.

Berkaitan

Sahkan bundle anda

Letakkan imej QR ke dalam pengimbas kami, tampal URI otpauth-migration://, atau gunakan kamera. Keputusan menunjukkan setiap akaun dalam bundle tanpa mendekod rahsia.

Buka pengimbas →