Worldcoin Foundation otwiera źródła kluczowych komponentów oprogramowania Orba

Mar 22, 2024 6 Minute Read

Orb został zbudowany, aby dać jednostkom możliwość udowodnienia swojej ludzkiej natury online z maksymalną prywatnością i bezpieczeństwem. Teraz główne składniki oprogramowania Orba są publicznie dostępne na GitHubie na licencji MIT/Apache 2.0. Aby uzyskać więcej informacji na temat znaczenia otwartego źródła w kontekście Orba, zobacz sekcję sprzętową w Worldcoin Tech Tree.

Te nowe otwarte składniki uzupełniają wcześniej wydane repozytoria sprzętu i rozpoznawania tęczówki, a ich publiczna dostępność oznacza znaczący postęp w uczynieniu przetwarzania obrazu przez Orba przejrzystym oraz weryfikowalnością jego twierdzeń dotyczących prywatności weryfikowalnymi. Dzisiejsze wydanie zawiera cały kod na Orb, który jest niezbędny do przechwytywania obrazów i bezpiecznego przesyłania ich do World App[1].

Ten post przegląda wymagania projektowe oprogramowania Orb, podkreśla kluczowe szczegóły implementacji i patrzy w jego przyszłość.

Jeśli jesteś zainteresowany pracą nad oprogramowaniem Orb, zobacz otwarte role u współtwórcy projektu Tools for Humanity tutaj.

Przegląd oprogramowania Orba

Wymagania najwyższego poziomu

Orb zapewnia najwyższy poziom weryfikacji dla World ID, aby odróżnić ludzi od AI[2]. Robi to najpierw sprawdzając, czy posiadacz World ID jest człowiekiem za pomocą obrazów oczu i twarzy. Jeśli te sprawdzenia człowieczeństwa zostaną zaliczone, Orb następnie przeprowadza weryfikację tęczówki i wysyła uzyskany kod tęczówki do usługi, która weryfikuje unikalność osoby. Proces jest zakończony w ciągu kilku sekund. Aby uzyskać więcej informacji na temat sposobu wykorzystania World ID zweryfikowanych przez Orb, zobacz tutaj

Figure

Jedyny przypadek użycia Orba do weryfikacji człowieczeństwa prowadzi do następujących wymagań najwyższego poziomu, bezprecedensowych dla urządzenia biometrycznego:

  1. Prywatność: Podczas weryfikacji World ID Orb musi przetwarzać obrazy lokalnie na urządzeniu, a następnie bezpiecznie przekazać je do pieczy użytkownika. To eliminuje jakiekolwiek wymaganie dotyczące przechowywania obrazów na Orb lub przesyłania ich do centralnego backendu do przetwarzania[3].
  2. Bezpieczeństwo: Protokół Worldcoin oczekuje, że Orby będą weryfikować World ID tylko prawdziwych ludzi. To oznacza, że Orb musi być wysoce odporny na oszustwa i manipulacje, nawet w środowiskach wrogich[4]. Zmodyfikowane lub podrobione urządzenia muszą być odrzucane przez protokół. 
  3. Przejrzystość i weryfikowalność: Orb musi być zaprojektowany w sposób wymagający minimalnego zaufania do jego producentów i operatorów. Musi istnieć sposób, aby publiczność mogła audytować Orbs, w tym sprawdzać stan oprogramowania i kluczy kryptograficznych. Zobacz odpowiednią sekcję whitepaper, aby uzyskać więcej szczegółów.

Te wymagania kształtują projekt Orb i wpływają praktycznie na wszystkie aspekty jego oprogramowania.

Figure

Stos obliczeniowy Orba

Tools for Humanity (TFH), współtwórca projektu Worldcoin, spędził lata na budowaniu bezpiecznego i potężnego środowiska obliczeniowego dla Orb. Projekt koncentruje się wokół NVIDIA Jetson, która lokalnie przetwarza pięć strumieni kamer Orb, aby zweryfikować World ID w ciągu kilku sekund. Każdy Orb dodatkowo posiada dwa mikrokontrolery Arm Cortex M4 (działające na Zephyr RTOS), które zajmują się takimi rzeczami jak zarządzanie zasilaniem, kontrola w czasie rzeczywistym i wykrywanie manipulacji. Ostatecznie każdy Orb posiada dedykowany bezpieczny element, który, podobnie jak portfel sprzętowy, przechowuje prywatny klucz podpisujący w obudowie odpornej na manipulacje.

Orb uruchamia kilka aplikacji Rust na Jetsonie, z intensywnym wykorzystaniem async Rust. Te aplikacje obsługują podstawowe funkcje, takie jak przetwarzanie danych z czujników, interfejsy z sieciami neuronowymi i stosowanie aktualizacji systemowych. Do przeprowadzania wnioskowania w sieciach neuronowych, Orb używa silnika NVIDIA TensorRT, aby w pełni wykorzystać 384-rdzeniowy GPU Jetsona

Wszystko to jest powiązane Orb OS[5]: niestandardowa dystrybucja GNU/Linux oparta na Debianie i Ubuntu, zoptymalizowana pod kątem bezpieczeństwa. Orb OS zawiera kontrole integralności całego systemu, wzmocnioną konfigurację Linuksa o wysokim poziomie bezpieczeństwa, solidny system aktualizacji OTA oraz wsparcie dla odtwarzalnych kompilacji. Do krytycznych operacji kryptograficznych (np. uwierzytelniania do backendu), Orb OS komunikuje się ze środowiskiem zaufanego wykonania (TEE) na Jetsonie, jak również z dedykowanym bezpiecznym elementem. 

Przewodnik po kodzie

Wśród kluczowych komponentów oprogramowania Orba, które zostały dziś wydane, znajduje się funkcja do_signup w orb-core, która koduje wysokopoziomowy przepływ Orba dla każdej weryfikacji World ID. Ta funkcja wywołuje fazę przechwytywania obrazu i fazę przetwarzania biometrycznego, następnie przesyła podpisane kody tęczówki do usługi unikalności. Dodatkowo, do_signup wywołuje upload_custody_images aby bezpiecznie przesłać obrazy użytkownika do ich World App.

Rejestrowanie obrazów

W ciągu kilku sekund zaawansowany system optyczny Orb może niezawodnie tworzyć wysokiej jakości obrazy oczu i twarzy. Ta podstawowa funkcjonalność jest możliwa dzięki niestandardowemu oprogramowaniu i sieciom neuronowym, które współpracują, aby wdrożyć face detection, eye tracking, autofocus i auto exposure.

Autofokus był jedną z najtrudniejszych części systemu obrazowania do wdrożenia. Kontroluje dedykowany płynny obiektyw w celu szybkiego znalezienia ostrego obrazu oczu danej osoby. Implementacja w języku Rust zawiera regulator sprzężenia zwrotnego, z szacunkami ostrości dostarczanymi przez sieć neuronową w czasie rzeczywistym. Wyjście sterujące jest wysyłane z Jetson do mikrokontrolera, który realizuje wewnętrzną pętlę sterowania do napędzania prądu elektrycznego do obiektywu[6].

Zerknij na zewnętrzną pętlę sprzężenia zwrotnego do znalezienia najostrzejszej wartości ostrości.

Figure

Autofokus steruje niestandardową ciekłokrystaliczną soczewką Orbu, aby szybko znaleźć ostry obraz tęczówki.

Przetwarzanie obrazów

Gdy Orb stworzy obrazy oczu i twarzy o wystarczającej jakości, są one przekazywane do biometrycznego pipeline'u. Ten pipeline ma dwa cele: sprawdzić, czy obrazy są autentyczne[7] oraz generować kody tęczówki. Oba są obsługiwane przez interfejsy Python do niestandardowych sieci neuronowych, a także implementację filtra Gabora.

Wysokiej jakości obrazy oczu z poprzedniej fazy są przekazywane do Systemu Rozpoznawania Tęczówki (IRIS). To nowoczesne wdrożenie zostało zbudowane przez TFH, a następnie udostępnione jako open source przez Fundację Worldcoin. Kod Rust jest zoptymalizowany, aby zawsze utrzymywać IRIS i inne duże modele w pamięci, unikając obciążenia związanego z regularnym ponownym ładowaniem tych dużych komponentów. Dokonuje się tego dzięki projektowi inspirowanemu procesem Zygote w Androidzie, który unika ładowania zbędnych kopii współdzielonych zależności (jak CUDA).

Prywatność i bezpieczeństwo

Prywatność i bezpieczeństwo zawsze były najwyższymi priorytetami podczas budowy Orba. Roszczenia Orba dotyczące prywatności[8] były przedmiotem audytu white-box przeprowadzonego przez Trail of Bits, który został niedawno opublikowany. Dalsze audyty są w toku i, w połączeniu z otwartym dostępem do kodu, odzwierciedlają dążenie Fundacji do utrzymania stale wysokiego poziomu przejrzystości w kwestiach prywatności i bezpieczeństwa.

Jednym z kluczowych kroków dotyczących prywatności jest wysyłanie danych indywidualnych z Orba do World App, dla funkcji nazywanej “Osobista Kustosz”. Osoby mogą korzystać z tych samodzielnie przechowywanych danych, na przykład do Autoryzacji Twarzy w World App. Patrząc w przyszłość, ta funkcja może również zmniejszyć częstotliwość, z jaką użytkownicy będą musieli wracać do Orba, aby ponownie zweryfikować swoje World ID.

Implementacja na Orb zapewnia, że użytkownicy zawsze mają kontrolę nad swoimi danymi. Każdy pakiet danych jest podpisywany prywatnym kluczem Orb, a następnie szyfrowany za pomocą klucza publicznego dostarczonego przez użytkownika[9][10] przed przesłaniem na telefon komórkowy użytkownika. Podpis jest wykonywany przez dedykowany bezpieczny element, który jest kryptograficznie sparowany z Jetson podczas produkcji[11]. Implementacja szyfrowania używa zapieczętowanego pudełka, aby zapewnić, że tylko dana osoba może odszyfrować te dane biometryczne[12]. Po przesłaniu zaszyfrowanych danych z Orba do World App użytkownika, nigdzie nie istnieją ich niezaszyfrowane kopie. 

Patrząc w przyszłość: przejrzystość i weryfikowalność

To początkowe wydanie oprogramowania Orba jest ważnym krokiem w kierunku celów[13] poprawy przejrzystości i weryfikowalności Orba. W kolejnych krokach, Worldcoin Foundation i szersza społeczność Worldcoin zamierzają skupić się na następujących obszarach związanych z oprogramowaniem Orba:

  1. Maksymalnie otwarty rozwój. Większość komponentów udostępnionych dzisiaj już ma otwarty rozwój w swoich publicznych repozytoriach. Jednakże, niektóre komponenty (w szczególności orb-core i orb-secure-element) są udostępniane jako forki wewnętrznych wersji, z pewnym wrażliwym[14] kodem ręcznie usuniętym. Zgodnie z misją protokołu, celem społeczności byłoby wyeliminowanie tej rozbieżności i przeniesienie całego niewrażliwego kodu do otwartego rozwoju.
  2. Niezaufane komponenty zamkniętego źródła. Aby zminimalizować wymaganą ufność w komponenty zamkniętego źródła, są one uruchamiane w "sandboxie", aby ograniczyć ich dostęp do systemu. Obecna konfiguracja sandboxa jest aktywnie ulepszana, aby zapobiec wszystkim modelom ML przed dostępem do sieci i trwałego magazynowania. Co istotne, implementacja sandboxa jest również open source.
  3. Wspieraj zdecentralizowane audyty.  Drzewo Technologiczne Worldcoin obejmuje wsparcie dla poświadczania właściwości konkretnych Orbs, takich jak oprogramowanie, które uruchamiają. Każdy powinien mieć możliwość dokonania tych poświadczeń i upublicznienia wyników. Ta infrastruktura jest niezbędna do zmniejszenia wymaganego zaufania do dostawców Orb. W toku jest kilka projektów inżynieryjnych, które mają wspierać takie poświadczenia, w tym bezpieczne raportowanie wersji i publiczne zreprodukowane buildy.

Wreszcie, te komponenty mają na celu pomoc w zapewnieniu bezpieczeństwa, prywatności i przejrzystości w wielu innych projektach, zwłaszcza tych, które uruchamiają uczenie maszynowe na urządzeniach brzegowych. Na przykład środowiska edukacyjne wspomagane przez AI (takie jak to) wiążą się z problemami dotyczącymi prywatności danych podobnymi do Orb. Fundacja Worldcoin ma nadzieję, że społeczność, aby uczynić świat wspomagany przez AI bezpiecznym, będzie ciągle doskonalić dziś otwarte komponenty, aby zmaksymalizować ich użyteczność dla innych projektów. 

Szczegóły wydania

Dostępne komponenty na dziś

Nazwa komponentuOpis
orb-core Główna aplikacja na Orb, która zawiera proces weryfikacji World ID.

Dzisiejsze wydanie to fork wewnętrznej wersji, z usuniętymi kontrolami oszustw.
orb-attest Używa bezpiecznego elementu do generowania efemerycznego tokenu uwierzytelniającego do komunikacji z backendem.
orb-secure-element Interfejs do dedykowanego bezpiecznego elementu.
orb-firmware Oprogramowanie układowe, które działa na głównym MCU Orba.
orb-messages Definicje Protobuf do komunikacji z głównym MCU.
orb-ui Zarządza światłami i dźwiękami na Orbie.
orb-can Opakowanie Rust do używania CAN na Linuksie.
orb-security-utils Biblioteka do wspólnych zadań związanych z bezpieczeństwem w Rust
orb-backend-state Pobiera stan Orba z backendu. Obecnie nieużywane.
orb-slot-ctrl Zarządza slotem rozruchowym Orba za pomocą zmiennych EFI.
seek-camera Bezpieczny Rust wrapper dla kamery termowizyjnej.
thermal-cam-util Narzędzie użytkowe do zarządzania kamerą termowizyjną.

Przyszłe prace

Nazwa komponentuOpis
orb-core Główna aplikacja na Orb, która zawiera proces weryfikacji World ID.

Oczekuje się, że interfejs do prywatnych ścieżek kodu będzie wyraźnie oznaczony. Oczekuje się, że nieprywatny kod przejdzie do otwartego rozwoju.
orb-os Buduje skrypty dla Orb OS.

Oczekuje się, że te skrypty, jak również wykonywalne obrazy kontenerów zostaną opublikowane. Oczekuje się, że elementy wrażliwe na bezpieczeństwo zostaną usunięte z publicznych obrazów.
orb-update-agent Odpowiedzialny za przeprowadzanie aktualizacji over-the-air (OTA).
orb-supervisor Koordynuje inne niestandardowe usługi na Orbie.
orb-trustzone Kod, który działa w Zaufanym Środowisku Wykonawczym (TEE) Jetsona.
orb-update-verifier Zamyka aktualizacje, jeśli są pomyślne.

References

  1. 1.
    World App to pierwszy portfel kompatybilny z World ID, stworzony i obsługiwany przez współtwórcę projektu Tools for Humanity (TFH).
  2. 2.
    Ogólny przegląd potrzeby na proof of humanness znajduje się w najnowszym wpisie na blogu Vitalika Buterina.
  3. 3.
    Użytkownicy mogą wyraźnie wyrazić zgodę na udostępnienie Worldcoin Foundation dostępu do ich obrazów w celu zapewnienia zaufania, bezpieczeństwa i polepszenia systemu.
  4. 4.
    Pełen zestaw środków wykrywania oszustw obejmuje nie tylko Orba, ale także jego backend i World App. Ze względów bezpieczeństwa, publicznie dostępny kod źródłowy dzisiejszego wydania nie zawiera wszystkich komponentów oprogramowania Orba związanych z zapobieganiem oszustwom.
  5. 5.
    Źródłowy kod budowy Orb OS zostanie uwzględniony w przyszłym wydaniu. Zobacz tabelę wydań, aby uzyskać więcej informacji. 
  6. 6.
    Druga pętla kontrolna na mikrokontrolerze pomaga stabilizować naturalne oscylacje soczewki.
  7. 7.
    „Autentyczne” oznacza, że obrazy pochodzą od prawdziwego człowieka. Na przykład obrazy wyświetlane na ekranie przed Orbem będą odrzucane. Te kontrole oszustw nie są uwzględnione w repozytoriach open source. Zobacz sekcję „Patrząc w przyszłość: przejrzystość i weryfikowalność” po więcej szczegółów.
  8. 8.
  9. 9.
    Publiczny klucz osoby jest wysyłany z World App do Orba przez infrastrukturę backendu. Zaplecze nie musi być zaufane, ponieważ skrót klucza publicznego jest wysyłany do Orb bezpośrednio za pomocą kodu QR, który jest używany do weryfikacji klucza przed jego użyciem.
  10. 10.
    Ten klucz publiczny jest generowany przez World App i używany tylko do szyfrowania danych Osobistej Ochrony. Dodatkowe szczegóły są określone tutaj.
  11. 11.
    Szczegóły dotyczące dalszej decentralizacji tego procesu można znaleźć tutaj.
  12. 12.
    Nawet Orb nie może odszyfrować pakietu Personal Custody po jego zaszyfrowaniu. 
  13. 13.
    Zobacz sekcję „Oracles: Orbs” w Advancing Decentralization.
  14. 14.
    Kod „wrażliwy” dotyczy sprawdzania oszustw i wykrywania manipulacji.

Zastrzeżenie

Powyższa treść obowiązuje wyłącznie we wskazanym czasie. Ponadto informacje te obarczone są ryzykiem, niepewnością i podlegają założeniom, przez co mogą być błędne i mogą ulec zmianie bez powiadomienia. Pełną treść zastrzeżenia można znaleźć w naszych Warunkach Użytkowania, a Ważne Informacje dla Użytkowników można znaleźć na naszej stronie Ryzyko.

Informacje w tym artykule mają ponad 12 miesięcy i mogą być nieaktualne. Wejdź na world.org/blog w celu uzyskania najnowszych informacji o projekcie.