Jak zbudować prywatną kamerę monitorującą na Raspberry Pi bez chmur i subskrypcji
Kupowanie gotowej kamery smart home prawie zawsze wiąże się z kompromisem. Z jednej strony wygodnie jest otworzyć aplikację w telefonie i sprawdzić, co dzieje się w pomieszczeniu. Z drugiej strony, strumień wideo z salonu czy korytarza trafia prosto na serwery kogoś innego — Amazon, Google lub chińskich producentów no-name. Do tego dochodzą regularne doniesienia o wyciekach danych, płatne subskrypcje za przechowywanie nagrań oraz ryzyko, że dostawca po prostu zamknie kiedyś swoje serwery.
Ostatnio natknąłem się na ciekawy projekt o nazwie Secluso, który próbuje rozwiązać ten problem we właściwy sposób. To domowy system monitoringu wideo dla mikrokomputerów Raspberry Pi z uczciwym szyfrowaniem end-to-end (E2EE), gdzie nawet pośredni serwer przekaźnikowy działa na zasadzie zero-trust.
Kto stoi za projektem i jaki jest pomysł
Projekt jest rozwijany przez Ardalana Amiri Sani, profesora na Uniwersytecie Kalifornijskim w Irvine, specjalizującego się w bezpieczeństwie komputerowym, oraz inżyniera Johna Kachmana. Repozytorium secluso/core zawiera bazę kodu w Rust.
Główna idea autorów jest prosta. Użytkownik powinien otrzymać gotowe rozwiązanie, które można skonfigurować w pięć minut, gwarantując jednocześnie kryptograficzną izolację od wścibskich oczu. Żadnych zamkniętych chmur. Wideo jest szyfrowane na płytce Raspberry Pi i odszyfrowywane tylko na smartfonie.
Jak działa architektura
Większość DIY rozwiązań do monitoringu wideo, takich jak MotionEye czy ZoneMinder, zawodzi jeśli chodzi o zdalny dostęp. Jeśli chcesz oglądać strumień poza siecią Wi-Fi domu, musisz zmagać się ze statycznymi adresami IP, dynamicznym DNS, przekierowaniem portów lub konfiguracją bramy domowej.
Secluso rozwiązuje problem inaczej:
- Kamera i telefon komunikują się przez pośredni przekaźnik.
- Jako przekaźnik może służyć każdy niedrogi serwer Linux VPS.
- Serwer przekaźnika jest odizolowany i nie ma dostępu do kluczy szyfrowania. Przekazuje ruch w ciemno, widząc tylko zaszyfrowane pakiety.
Cała kryptografia została zaprojektowana z uwzględnieniem modelowania zagrożeń. Protokół implementuje doskonałą tajność i ochronę przed przyszłym kompromitacją. Jeśli ktoś uzyska dostęp do twojego VPS przekaźnika, zobaczy tylko zaszyfrowany strumień binarny i nie będzie w stanie odszyfrować ani zarchiwizowanych nagrań, ani transmisji na żywo.
Innym interesującym punktem są Reproducible Builds. Twórcy zadbali o to, aby binarne pliki wykonywalne, narzędzie wdrożeniowe, niestandardowy obraz systemu Secluso OS oraz aplikacja na Androida mogły być kompilowane ze źródeł i weryfikowane bajt po bajcie względem oficjalnych wydań. Dla projektów skoncentrowanych na prywatności, to podejście budzi szacunek.
Wymagania sprzętowe
Lista komponentów potrzebnych do rozpoczęcia pracy jest minimalna:
- Płytka Raspberry Pi Zero 2W.
- Moduł kamery Raspberry Pi Camera Module V1, V2 lub dowolny moduł oparty na sensorach Sony IMX219 / OmniVision OV5647.
- Karta microSD do zapisu obrazu.
- Własny serwer Linux VPS z dostępem SSH dla przekaźnika (do testowania autorzy oferują tymczasowy dostęp próbny do swojego serwera).
- Smartfon z iOS lub Android.
Proces uruchomienia i wrażenia
Zazwyczaj budowanie takich systemów na Pi zamienia się w niekończące się dostosowywanie konfiguracji, instalację sterowników kamery i żonglowanie systemd. Zespół Secluso napisał oddzielne narzędzie desktopowe o nazwie Secluso Deploy, aby wyeliminować tę żmudność.
Proces wygląda następująco:
- Pobierz Secluso Deploy na swój komputer.
- Program generuje unikalne klucze szyfrowania bezpośrednio na twojej maszynie i zapisuje je w obrazie Secluso OS.
- Narzędzie łączy się przez SSH z twoim VPS i automatycznie wdraża tam komponent serwera przekaźnika.
- Zapisz gotowy obraz na dysku flash, włóż go do Pi Zero 2W i włącz zasilanie.
- Pobierz oficjalną aplikację ze App Store lub Google Play i zeskanuj kod QR parowania wygenerowany przez Deploy.
Po tym twoje urządzenie łączy się z kamerą. Przez klienta mobilnego masz dostęp do strumienia wideo na żywo, powiadomień o zdarzeniach oraz przeglądania zapisanych zaszyfrowanych klipów.
Dla kogo jest ten projekt
Secluso to świetne rozwiązanie dla osób, które:
- Chcą mieć oko na swoje mieszkanie, warsztat lub domek letniskowy, nie powierzając swojej przestrzeni osobistej usługom stron trzecich.
- Szukają zastosowania dla Raspberry Pi Zero 2W kurzącego się na półce.
- Chcą zrozumieć architekturę strumieni wideo szyfrowanych end-to-end w Rust oraz zasady przekaźnika zero-trust.
Projekt nadal się rozwija, lista obsługiwanych sensorów kamery jest obecnie ograniczona do popularnych modułów Pi, ale podstawowa funkcjonalność działa niezawodnie. Jeśli masz dość zamkniętych ekosystemów z subskrypcjami za każdy gigabajt archiwum wideo, secluso/core zdecydowanie warto sprawdzić. Kod źródłowy jest otwarty na licencji GPLv3, a dokumentacja dotycząca modelu kryptograficznego znajduje się bezpośrednio w repozytorium.
Powiązane projekty