Ygoow: prerejestrowany pomiar własnych twierdzeń o bezpieczeństwie
Kontynuuje wpis z 2026-07-10, już z nazwą produktu. Od lipca do września 2026 twierdzenia Ygoow o bezpieczeństwie zamieniano w dwuetapowe karty — najpierw kryteria i predykcje, potem pomiar — na docelowym telefonie albo w symulacji: 37 kart (24 z rejestracją zapisaną przed pomiarem), 199 predykcji w rejestrze, z czego 36 chybionych, osiem opublikowanych twierdzeń obalonych i wycofanych oraz korekty nieaktualnych stwierdzeń wpisu lipcowego. Konstrukcje wstrzymane; wyniki o ruchu pochodzą z modelu, nie z przechwyconego ruchu Tor.
Koch Laboratory — Ygoow: prerejestrowany pomiar własnych twierdzeń o bezpieczeństwie
Wpis z 10 lipca 2026 („Komunikacja odporna na metadane, bezkontowa”) opisał siedem kierunków badań nad komunikatorem z głuchym pośrednikiem, bez nazwy produktu. Tym produktem jest Ygoow (ygoow.com); aplikacja na Androida nie jest jeszcze wydana. Od 24 lipca do 29 września 2026 jego twierdzenia o bezpieczeństwie zamienialiśmy w karty pomiarowe. Niżej: metoda, liczniki, wyniki już jawne na stronie produktu i korekty wpisu lipcowego. Streszczenie metody (po angielsku): Measured, not assumed.
Metodyka: karta w dwóch etapach. Etap 1, spisany przed uruchomieniem przyrządu: pytanie; przeciwnik — najsilniejszy, jakiego umiemy zbudować z publicznego opisu protokołu; model populacji z policzonym poziomem przypadku; kryteria, predykcje liczbowe, kandydaci na naprawę i reguła decyzyjna. Etap 2, pomiar: kontrola null (dwie próbki tej samej klasy) i kontrola pozytywna (znany efekt, który musi zostać wykryty w tej samej sesji); czas i koszt na telefonie referencyjnym (ARM64, build release), ruch, magazyn i grupy w symulacji kodu produkcyjnego lub jego modelu; werdykt dla każdego kryterium i każdej predykcji, dopiski po pierwszych liczbach oznaczone jako post hoc, odstępstwa nazwane. Praktyka zaostrzała się w trakcie: od 3 września każda liczba pochodzi z co najmniej trzech przebiegów lub ziaren losowych, od 6 września etap 1 trafia do repozytorium osobnym commitem przed pomiarem.
Liczniki (stan na 29 września 2026). Karta to jeden protokół w repozytorium produktu.
- 37 kart (24 lipca – 29 września), wszystkie z etapem 2; wyniki 11 z nich, z 20–29 września, nie są jeszcze opublikowane. Etap 1 w osobnym commicie przed pomiarem mają 24, wszystkie od 6 września; 13 wcześniejszych zapisało kryteria i wyniki w jednym commicie, więc kolejność poświadcza w nich tylko tekst karty.
- Rejestr predykcji (od 3 września, 25 kart): 199 predykcji — 113 trafionych, 48 częściowo lub tylko co do kierunku, 36 chybionych, 2 nieocenialne; chybienie ma 19 z tych kart.
- Obalone twierdzenia: 8 zdań, które ygoow.com opublikowało jako właściwość produktu, a karta im zaprzeczyła; wszystkie wycofano lub przepisano (niżej: „twierdzenie obalone”). Dwa kolejne stały tylko w dokumentacji wewnętrznej.
- Na kierunki: 1 — 11, 2 — 4, 3 — 11, 4 — 3, 5 — 5, 6 — 3, 7 — 0.
Reguły wymuszone przez chybienia.
- Czas mierzymy tylko na docelowym telefonie, w buildzie release, a negatyw przyjmujemy tylko przy kontroli pozytywnej, która zadziałała w tej samej sesji: ML-KEM był na desktopie czysty, a na telefonie dawał 15,6 % różnicy czasu; przebieg debug nie widział nawet znanego wycieku.
- Przeciwnik co najmniej tak silny, jak najsilniejszy możliwy z publicznego protokołu: słabszy wybiera złą naprawę. Trzy predykcje jego siły chybiły w jedną stronę, 6–24-krotnie.
- Przed rejestracją progu: poziom przypadku, osiągalność progu i jeden przypadek przeprowadzony ręcznie przez mechanizm, z ogona rozkładu.
- Liczby o ruchu pochodzą z modelu publicznego protokołu i zadeklarowanej populacji, nie z przechwyconego ruchu Tor.
1. Kierunek 1 — bezpieczeństwo po kompromitacji bez serwera stanowego: prymitywy pod spodem
Pytanie. Czy szyfr, podpis, uzgadnianie i wyprowadzanie klucza zdradzają sekret czasem wykonania na telefonie? Stan techniki. TVLA i dudect (test Welcha), RFC 8032, NIST SP 800-38D, RFC 9106, zxcvbn. Kryterium. |t| ≤ 4,5 w każdym przebiegu przy czystej kontroli null i zadziałanej kontroli pozytywnej; wynik zgodny z wektorami. Metoda. 11 kart (2 z 20–29 września), telefon i symulacja; samego leczenia po kompromitacji żadna nie mierzyła. Wynik. Obalone i naprawione: Ed25519 (|t| = 60 i 71, natywnie 2,6 i 1,6), arytmetyka kworum (kierunek 7) i AES-GCM (efekt ok. 1,4 %, widoczny tylko z lokalnego zegara; opublikowany przed naprawą, natywnie 24 z 24 odczytów na poziomie szumu). X25519 czysty. Twierdzenie obalone: „uczciwy miernik siły” — siłę haseł „słowo + cyfry + symbol” zawyżał o medianę 45 bitów; przez bramkę kopii zapasowej przechodziło ich 97 %, dziś 0,3–0,6 %. Zmianę z 28 sierpnia, wprowadzoną bez karty (mniej pamięci w wyprowadzaniu klucza kopii), karta obaliła dwa dni później. Dalej. Double Ratchet w aplikacji, co zamknie też lukę poufności przyszłej; niewyjaśniona anomalia czasowa zewnętrznej biblioteki SHA3. Konstrukcja: wstrzymana. Status: prymitywy zmierzone i w aplikacji; leczenie po kompromitacji zbudowane i zweryfikowane wektorami, poza aplikacją.
2. Kierunek 2 — hybryda post-kwantowa (X25519 + ML-KEM)
Pytanie. Czy hybryda chroni pierwszą wiadomość przed kimś, kto nagrywa dziś i złamie X25519 później, i czy mieści się w wymianie kluczy między kontaktami? Stan techniki. FIPS 203, Signal PQXDH, X25519MLKEM768, KyberSlash. Kryterium. Połowa post-kwantowa trzyma po złamaniu X25519; zaproszenie mieści się w jednym kodzie QR przy korekcji błędów M; |t| ≤ 4,5 na telefonie. Metoda. 4 karty: analiza przepływów produkcyjnych, biblioteka QR aplikacji, pomiar czasu na telefonie. Wynik. Twierdzenie obalone, opublikowane w lipcu: klucz post-kwantowy wyprowadzany z sekretu X25519 miał chronić pierwszą wiadomość, lecz dwa obsługiwane przepływy wystawiają klucze publiczne, z których po złamaniu X25519 ten sekret da się odtworzyć; od 23 sierpnia klucz post-kwantowy nie zależy od X25519. Obalone: jeden kod QR jest za gęsty — potrzebny QR dzielony, NFC albo link. Obalone i naprawione: dzielenie zależne od sekretu we własnej implementacji ML-KEM — na telefonie 15,6 % (|t| = 339), po naprawie |t| = 3,9. Dalej. Wpięcie w żywe rozmowy i w kod kontaktu; do tego czasu „nagraj teraz, odszyfruj później” nie jest w aplikacji pokryte. Status: zbudowane i przypięte do opublikowanych wektorów zbiorczych, poza aplikacją.
3. Kierunek 3 — warstwa odporności na metadane
Pytanie. Co relay wyczyta z rozmiaru, rytmu i liczby ramek, nie widząc treści ani adresu IP? Stan techniki. Loopix, wyściółka netflow Tora, test ilorazu wiarygodności, informacja wzajemna. Kryterium. Rozmiar niesie ≤ 0,5 bita o długości wiadomości i zależy tylko od parametrów jawnych; żadna ramka nie jest po rozmiarze „na pewno prawdziwa”; grupowanie adresów urządzenia ≤ 2× poziomu przypadku. Metoda. 11 kart (4 z 20–29 września): model publicznego protokołu na ścieżkach kodu produkcyjnego, przeciwnik — relay z zegarem. Wynik. Twierdzenia obalone i naprawione: „nigdy dokładna długość” (pokoje bez dopełniania; dziś 0,043 bita długości) i „nieodróżnialne ramki pozorne” (zawsze najmniejsza klasa; dziś 0,0002 bita w rozmiarze, 0,0018 bita w odstępach). Twierdzenie obalone: „relay nie wie, kiedy wysyłasz” — ruch pozorny maskuje wiadomości, nie sesje, i jest domyślnie wyłączony; bez niego relay zachowuje 98,5 % informacji o tym, kiedy ktoś rozmawia. Twierdzenia obalone: „relay nie połączy adresów w jedno urządzenie” i „persony nie zdradzają wspólnego urządzenia” — przeciwnik ilorazu wiarygodności grupuje adresy urządzenia w 85–90 % po jednej 15-minutowej epoce, w 99,8 % w ciągu 30 minut. Znalezione: jawny licznik wiadomości w nagłówku łączy rozmowę przez rotację adresu w 81–89 % przy 20 aktywnych rozmowach. Dalej. Dwa zmierzone projekty zamknięcia kanału czasu czekają na decyzję; szyfrowanie nagłówka w toku; pomiar na prawdziwym ruchu. Konstrukcja: wstrzymana. Status: dopełnianie rozmiaru i opcjonalny ruch pozorny w aplikacji; kanał czasu i licznik otwarte.
4. Kierunek 4 — bezadresowy rendezvous z rotacją epokową
Pytanie. Czy rotacja adresu rozmowy co około 15 minut zrywa ciągłość widoczną dla relaya, nie gubiąc wiadomości? Stan techniki. Usługi cebulowe Tora, dostarczanie store-and-forward, powiązywalność przy zmianie identyfikatora. Kryterium. Utrata wiadomości do nieobecnego odbiorcy ≤ 0,1 %; łączenie kolejnych epok rozmowy po samym kursorze ≤ 1 %. Metoda. 3 karty (2 z 20–29 września): symulacja z dostarczaniem w tle i bez niego. Wynik. Obalone i naprawione: w konfiguracji domyślnej wiadomości do kogoś nieobecnego dłużej niż 15–30 minut mogły ginąć bez komunikatu (57–58 % w modelu; dziś 0 %), a kursor nadrabiania sam łączył adresy rozmowy (100 %; dziś 0 %). Dalej. Wyniki dwóch kart z 22 września — w kolejnym wpisie. Konstrukcja: wstrzymana. Status: rotacja adresów i nadrabianie bez śladu w aplikacji; wobec relaya sama rotacja nie wystarcza (kierunek 3).
5. Kierunek 5 — gojenie rozgałęzień epok w grupach bez koordynatora
Pytanie. Czy zmiana składu grupy dociera do wszystkich członków, także nieobecnych, i co relay wie o grupie z ramek sterujących? Stan techniki. MLS (RFC 9420) z serwerem porządkującym, Sender Keys. Kryterium. Co najmniej 99 % członków na wspólnym kluczu w ciągu 24 h przy dostarczaniu w tle (95 % bez niego); utrata wiadomości pokoju ≤ 0,5 % w każdym ziarnie. Metoda. 5 kart (3 z 20–29 września): symulacja na modelu i na kodzie produkcyjnym. Wynik. Obalone: zmiana składu docierała tylko do członków otwierających pokój, póki była świeża — w modelu wspólny klucz w ciągu doby miało 3–9 % członków, a ginęło 29–55 % wiadomości pokoju. Kryterium spełnił dopiero wariant dopisany po pierwszych liczbach (post hoc): 100 % i poniżej 0,5 %. Wdrożono go mimo to, a odstępstwo od własnej reguły zapisano na karcie; test na urządzeniach czeka. Znalezione i naprawione: przy otwarciu pokoju relay czytał jego rozmiar i skład; nadal widzi zmianę składu (100 % w modelu), a z licznika w nagłówku — ilu członków pisze. Dalej. Ochrona przed powtórzeniem ramek z kluczami; poufność przyszła dla dystrybucji kluczy nadawcy; usunięty członek wciąż widzi, kiedy pokój jest aktywny. Konstrukcja: wstrzymana. Status: gojenie bez koordynatora i dostarczanie w tle w aplikacji; granice z punktu „Dalej” otwarte.
6. Kierunek 6 — zaprzeczalny magazyn z ukrytym wolumenem
Pytanie. Czy profil ukryty pozostaje niedowodliwy po miesiącach używania wobec kogoś, kto kopiuje pamięć telefonu i mierzy czas odblokowania? Stan techniki. Ukryte wolumeny klasy VeraCrypt; przeciwnik z wieloma migawkami (Czeskis i in., 2008). Kryterium. Bez hasła wabika detektor na jednej lub dwóch kopiach na poziomie przypadku; zero utraty danych w co najmniej 300 skryptowanych cyklach życia; czas odblokowania bez różnicy. Metoda. 3 karty: kod produkcyjny magazynu w miesiącach symulowanego użycia, stoper na telefonie. Wynik. Twierdzenie obalone: „nieodróżnialne na dysku” — po 30 dniach jedna kopia ujawniała profil ukryty w 69 % symulowanych telefonów z nieotwieranym wabikiem, dwie w 98–100 %; odblokowanie trwało około 1,1 s dłużej, a używanie wabika mogło nadpisać profil ukryty. Po przebudowie: 0 utraconych danych w 600 cyklach życia, 0 rozbieżności rozmiaru w 7200 migawkach, odblokowanie od −3 do +28 ms względem telefonu bez wabika. Predykcja zarejestrowana dla przebudowy chybiła — zmiana hasła miała własny podpis; ostatnią z dwóch dalszych poprawek sprawdzono testem, nie populacją. Dalej. Z hasłem wabika w cudzych rękach dwie kopie nadal pokazują użycie profilu ukrytego; re-randomizacja bez klucza kosztuje dziś 14–40-krotność budżetu zapisu. Konstrukcja: wstrzymana. Status: w aplikacji, zmierzone w cyklu życia; granice przy przekazanym haśle wabika nazwane.
7. Kierunek 7 — warunkowy dostęp z kworum
Pytanie. Czy ocena warunków odblokowania — hasło, plik, link, kworum K-z-N, klucz sprzętowy — nie zdradza sekretu ani położenia? Stan techniki. Podział sekretu Shamira nad GF(2⁸); warunki egzekwowane po stronie klienta. Kryterium. Arytmetyka kworum z |t| ≤ 4,5 na telefonie; ocena warunku nie wysyła niczego poza Torem. Metoda. Bez własnej karty: arytmetykę kworum zmierzyła karta kierunku 1, warunek położenia sprawdzono poza kartami. Wynik. Obalone i naprawione: mnożenie w GF(2⁸) oparte na tablicach przeciekało (|t| do 1222); wersja bez gałęzi i tablic jest wyczerpująco równoważna na wszystkich 65 536 parach wejść. Wynik negatywny: warunek położenia usunięto, bo jego ocena wysyłała do Google okoliczne sieci Wi-Fi i komórkowe, poza Torem. Dalej. Pomiar samego grafu warunków. Konstrukcja: wstrzymana. Status: blokada z dowolną kombinacją warunków w aplikacji; graf warunków bez karty pomiarowej.
Korekty wpisu z 2026-07-10
- Metodyka, „weryfikacja jako testowalna własność”: wektory sprawdzają poprawność, nie kanały boczne ani zachowanie w czasie — cztery prymitywy je przechodziły i przeciekały na telefonie, a magazyn wabika tracił dane.
- Kierunek 2, „Status: prace projektowe”: dziś zbudowane, poza aplikacją; biblioteka natywna (FFI) nie była potrzebna do usunięcia zmierzonego wycieku.
- Kierunek 3, „stałą stopę Poissona”: działa stała siatka z fazą losowaną na nowo przy każdej rotacji adresu. „Nigdy dokładnej długości” i „nieodróżnialnymi ramkami pozornymi”: do 1 września nieprawdziwe dla pokoi i dużych ramek ruchu pozornego. „Każda persona na własnym obwodzie Tor”: prawda, ale wspólny zegar urządzenia łączył persony. „pcap-diff”: nie został wykonany; liczby o ruchu pochodzą z modelu.
- Kierunek 4, „relay nie zbatchuje adresów w »jedno urządzenie«” i „najwyżej jedno 15-minutowe okno”: fałszywe wobec relaya, prawdziwe tylko wobec obserwatora z zewnątrz i złośliwego kontaktu. „Kursor po stronie klienta” i status „zaimplementowane i przetestowane”: sam kursor łączył adresy rozmowy, a wiadomości do nieobecnego odbiorcy mogły ginąć; naprawione 17 września.
- Kierunek 5, „bez utraty własności bezpieczeństwa MLS”: niespełnione w całości — granice wymienione w kierunku 5.
- Kierunek 6, „mechanizm zaimplementowany”: tracił dane i był wykrywalny po 30 dniach; przebudowany 17 września.
Status kierunku. Zbudowane, lecz poza aplikacją: leczenie po kompromitacji i hybryda post-kwantowa. Otwarte wobec relaya: kanał czasu i licznik w nagłówku. Poza zasięgiem tej serii: niezależny przegląd protokołu i implementacji oraz pomiar na prawdziwym ruchu. Kolejny wpis opisze jedenaście kart z 20–29 września; bieżący stan prowadzi strona ygoow.com/progress.
Dowód czasu
Ten tekst został zahaszowany i ostemplowany przy publikacji. Do sprawdzenia potrzebne są oba pliki: stempel dowodzi, że w tamtej chwili istniał dokładnie jeden ciąg bajtów, a tym ciągiem jest wyłącznie źródło poniżej. Każda późniejsza zmiana przesuwa skrót i zrywa zgodność — i o to właśnie chodzi.
SHA-256 ostemplowanego tekstu: e7809aa121bebb53a42cf9597437a55ba01b50a48bcf2a28cf4c049345f99442
- Kotwica Sigelith portfolio-ygoow-measurements.public.md.beattime.json
- Dowód OpenTimestamps portfolio-ygoow-measurements.public.md.ots
- Ostemplowany tekst źródłowy portfolio-ygoow-measurements.public.md
Sprawdzenie: ots verify <dowód> --file <źródło>