SeedQR to otwarcie opisany format danych projektu SeedSigner, a nie nowy rodzaj seedu, szyfrowanie czy protokół Bitcoin. Standard SeedQR łączy indeksowane od zera pozycje słów BIP39 w numeryczny QR; CompactSeedQR zapisuje pierwotną entropię jako dane binarne i pozwala odbiorcy ponownie obliczyć checksum.
Standard SeedQR bierze każde słowo mnemoniki, odnajduje jego indeksowaną od zera pozycję na liście BIP39 i zapisuje ją dokładnie czterema cyframi. Wartość 12 jest więc zapisywana jako 0012. Wynik nie jest zdjęciem słów ani kluczem prywatnym w postaci tekstu, lecz inną bezstratną reprezentacją tego samego sekretu. [1]
Lista BIP39 zawiera 2048 pozycji o indeksach od 0 do 2047. Standardowa fraza 12-wyrazowa daje 48 cyfr i siatkę QR 25×25; fraza 24-wyrazowa daje 96 cyfr i siatkę 29×29. Kolejność czterocyfrowych bloków odpowiada kolejności słów, więc ich zamiana odtworzy inną lub nieprawidłową frazę. [1]
SeedSigner zaprojektowano jako stateless signer: wyłączenie usuwa załadowane dane tajne, dlatego następnym razem seed trzeba wprowadzić ponownie. SeedQR skraca ten proces do jednego skanu lub ręcznego przerysowania. Nie wolno mylić go z PSBT, wallet descriptor ani QR adresu; one mogą przenosić dane publiczne lub transakcyjne, a SeedQR przenosi sekret odzyskiwania. [7]
Przed przepisaniem interfejs SeedSigner ostrzega: “SeedQR is your private key” oraz zakazuje fotografowania i skanowania urządzeniem podłączonym do internetu. Air gap ogranicza sieciową drogę wycieku, ale nie szyfruje QR i nie powstrzymuje kamery, kopii, fizycznego złodzieja ani przejętego urządzenia offline przed odczytaniem seedu. [5]
Oficjalna dokumentacja podaje obsługę Standard SeedQR i CompactSeedQR dla fraz BIP39 złożonych z 12 słów i 24 słów. Publiczne zgłoszenie dodania problematycznego wektora testowego CompactSeedQR otwarto 25 lipca 2022, a później zamknięto zmianą projektu; dokumentuje ono publiczne testy interoperacyjności, nie formalną standaryzację BIP. [2] [6]
CompactSeedQR łączy 11-bitowe indeksy słów, przy 12 słowach usuwa 4 bity checksum i zapisuje 128 bitów, czyli 16 bajtów, w siatce 21×21. Przy 24 słowach usuwa 8 bitów checksum i zapisuje 256 bitów, czyli 32 bajty, w siatce 25×25. Jest mniejszy, lecz zwykły czytnik może błędnie obsłużyć dane binarne lub bajty zerowe; ta niedogodność nie jest ochroną kryptograficzną. [1]
BIP39 tworzy słowa przez podział entropii i jej checksum na 11-bitowe indeksy listy. CompactSeedQR może więc pominąć bity checksum i po skanowaniu wyliczyć je ponownie z entropii. Payload nie zawiera jednak jednoznacznego identyfikatora języka listy; odzyskiwanie musi użyć tej samej listy, a główna specyfikacja zaleca angielską. [4]
Implementację trzeba sprawdzać z opublikowanymi wektorami testowymi i rzeczywistym kodem encodera, w tym z bajtem zerowym w CompactSeedQR. Praktyczny test odzyskiwania wykonuje się na urządzeniu offline bez wartości: po wczytaniu porównuje się fingerprint, descriptor lub pierwszy adres odbiorczy z oczekiwanym portfelem. Prawdziwego seedu nigdy nie testuje się generatorem internetowym. [3]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Seed Phrase, BIP 39, BIP39 checksum, Private Key, Hardware Wallet, Air-gapped Wallet. Do tego hasła prowadzą również odsyłacze z BBQr.
01Czy SeedQR jest tym samym co zwykły kod QR z adresem bitcoin?+
Nie. QR adresu zwykle publikuje cel odbioru płatności, natomiast SeedQR koduje dane potrzebne do odtworzenia portfela BIP39. Kto poprawnie odczyta SeedQR i zna ewentualną BIP39 passphrase, może wyprowadzić klucze prywatne. Dlatego należy obchodzić się z nim jak z seed phrase, nie jak z publicznym adresem.
02Czy CompactSeedQR chroni seed, ponieważ zwykły telefon go nie odczyta?+
Nie. CompactSeedQR jedynie wydajniej zapisuje ten sam sekret jako binarną entropię. Niektóre zwykłe czytniki pokazują go błędnie albo wcale, ale specjalistyczne oprogramowanie potrafi go zdekodować. To przeszkoda zgodności, nie szyfrowanie; bezpieczeństwo musi opierać się na ochronie fizycznej, kontrolowanym skanowaniu offline i ewentualnie oddzielnie przechowywanej BIP39 passphrase.