Rozproszony serwis społecznościowy

Dużo ostatnio się dzieje w temacie „fake news” i manipulacji opinią społeczną. Serwisy społecznościowe, które niegdyś były ostoją wolności, stały się powoli regulatorami tego, co można, a czego nie można zamieszczać. Stopniowo, ale konsekwentnie oduczono użytkowników wyszukiwania treści i zastąpiono ten proces algorytmem, który podsuwa to, co powinni zobaczyć i pomija to, czego zobaczyć nie wolno. Na każdym kroku zapewniano o szyfrowaniu i bezpieczeństwie danych osobowych, by ostatecznie okazało się, że były one nie tyle kradzione, co… sprzedawane.

Mogę tak wymieniać i wymieniać, ale wszystkie te problemy sprowadzają się do tego, że pieczę nad tym, co udostępniamy, sprawują osoby trzecie. Wpadł mi więc do głowy dość ciekawy pomysł. A co, gdyby uniezależnić się od jakiegokolwiek nadzoru? Co, gdyby moje dane nie były gromadzone w nieznanym miejscu i podlegały dobrej, lub złej woli jednej korporacji? Przecież każdy z nas nosi w kieszeni potencjalny serwer, będący praktycznie non stop połączony z internetem, więc czemu by tego nie wykorzystać?

Rozproszony serwis społecznościowy

Jak wyglądałoby korzystanie z takiego tworu? Otóż dokładnie tak samo, jak z obecnych rozwiązań typu YouTube, Facebook, czy Twitter. Mógłbym stworzyć własny profil, zamieszczać zdjęcia, filmy, zakładać grupy dyskusyjne, publikować treści itd. Różnica polegałaby na tym, że wszystko to, co udostępnię, przechowywane by było tylko i wyłącznie na moim urządzeniu (lub dostęp do tych zasobów odbywałby się poprzez moje urządzenie – później wyjaśnię o co mi chodzi).

Sztywno zdefiniowane by były wyłącznie protokoły – sposób uwierzytelniania, format danych, kluczy itp. Aplikacje, które pozwoliłyby na łączenie się z tego typu siecią byłyby Open Source i istniałoby wiele ich różnych wersji – tak jak kiedyś komunikatorów.

Nie byłoby czegoś takiego, jak posiadanie własnego konta. Mógłbym jedynie przywłaszczyć (wygenerować) baaardzo długi, losowy identyfikator. Jeśli tego typu identyfikator stworzyłaby również inna osoba, to nawiązaniem relacji byłaby ich wymiana i wygenerowanie wspólnego klucza. Uwierzytelnianie polegałoby na rozsyłaniu zapytania z własnym identyfikatorem i kluczem. Pytany weryfikowałby klucz i w przypadku zgodności, zwracał pytającemu swój identyfikator, tak, żeby jednocześnie uwiarygodnić siebie.

Dla przyśpieszenia wyszukiwania, istniałaby możliwość dzielenia się między „znajomymi” listą zidentyfikowanych adresów IP.

Przestrzenie wspólne, jak fora, lub grupy mogłyby działać zarówno w formie prywatnej – hostowane przez właściciela, jak również bez jakiejkolwiek moderacji i nadzoru – w technologii Blockchain.

Potencjalne problemy

Oczywiście tekst ten jest tylko nakreśleniem pomysłu, ale już podczas jego pisania, natknąłem się na wiele potencjalnych problemów, więc uznałem, że warto by je wypunktować już na samym początku.

Przede wszystkim, aby mój „profil” – czyli wszystkie udostępnione dane były osiągalne, smartfon musi być włączony i połączony z siecią non stop. Co jeśli bateria się wyczerpie, albo pojadę zwiedzać… Syberię? Szczerze mówiąc, na dzień dzisiejszy nie widzę rozwiązania tego problemu. Musielibyśmy pogodzić się z tym, że jeśli my (nasz smartfon) nie jesteśmy dostępni, to znaczy, że to co udostępniamy, również nie jest dostępne. Trzeba czekać na technologiczny postęp, zapewniający tani internet satelitarny dla każdego i baterie mogące podtrzymywać urządzenie przez wiele dni, bez ładowania.

Jest jeszcze drugi, istotny problem. O ile udostępnianie wpisów, zdjęć, czy nawet filmów między małą grupą znajomych nie będzie wyzwaniem dla obecnych urządzeń, to co, jeśli ta grypa znajomych rozszerzy się do tysiąca osób? Albo co, jeśli jeden z naszych postów stanie się viralowy i nasze urządzenie zaleje fala żądań z całego świata? Jestem skłonny założyć, że gdyby chodziło o krótki post (sam tekst), to urządzenie mogłoby sobie jakoś poradzić. Jednak już w przypadku nawet małych obrazków nie byłoby fajnie. Wpadły mi do głowy trzy rozwiązania tego problemu. Albo urządzenie, które „lajkuje” nasz post, bierze na siebie także obowiązek rozsyłania dalej całej jego zawartości, albo stosujemy chmurę P2P, albo wykorzystujemy dedykowany serwer. Omówmy to po kolei.

Pierwsze rozwiązanie wydaje się rozsądne. Udostępniając jakąś treść nie wskazujemy na zródło, tylko na naszą, jego lokalną kopię. Pozostawia to jednak spore pole do manipulacji, bo nijak nie jesteśmy w stanie zweryfikować, czy to, co nam zostało udostępnione, nie było na jakimś etapie zmodyfikowane. Odpada.

W drugim rozwiązaniu chodzi o to, że wszystko to, co udostępniamy, „hostowane” jest również, przez grupę naszych znajomych, a prawdziwość rozsyłanych treści weryfikowana jest demokratycznym głosowaniem – jeśli ponad 50% urządzeń potwierdzi dane, to są one prawdziwe. Tutaj też pojawia się jednak problem – z nawarstwianiem danych. Otóż każdy ze znajomych musiałby przechowywać na swoim telefonie dane każdego innego znajomego. Raz, że nie sądzę, żeby użytkownicy byli na tą chętni, a nawet gdyby, to nie do przeskoczenia jest też kwestia ograniczonego miejsca na smartfonie.

Wyjście pośrednie

Najrozsądniejszym rozwiązaniem wydaje mi się trzecie podejście. Z kilku powodów. Po pierwsze jednak, muszę wyjaśnić, że rozwiązanie to nie jest dokładnie tym, czym są obecne serwisy społecznościowe. Do działania całego systemu, dalej potrzebny jest smartfon, którego zadaniem jest jednak tym razem rozsyłanie wyłącznie jednorazowych odnośników i kluczy do zaszyfrowanych treści osadzonych na serwerze. Taki serwer mógłby utworzyć każdy, kto chciałby wspomóc działanie systemu i miałby ku temu możliwości. Wystarczająco duża grupa takich serwerów mogłyby tworzyć własną chmurę, zapewniać redundancję danych i tym samym jeszcze bardziej zwiększać przesył. Mogłyby również istnieć serwery płatne, z dużo większymi możliwościami, a to, kogo byśmy wybrali zależałoby wyłącznie od nas. W obu jednak przypadkach, przechowujący nasze dane, nie miałby możliwości odczytania tego, co udostępnia. Dane byłyby przekształcone w sensowne treści dopiero przez urządzenie, które otrzymało od nas ich identyfikator i klucz.

Rozwiązanie z serwerami ma zresztą jeszcze jedną, fajną zaletę – serwery mogą być tzw. węzłami, przechowującymi adresy IP użytkowników sieci, tak, aby w przypadku dołączenia do niej, urządzenia miały jakikolwiek punkt startowy.

Część dalsza nastąpi :]

Post ten trochę przekroczył mój subiektywny limit znaków.  Więc o kolejnych szczegółach opowiem w postach będących rozwinięciem tego pomysłu. Pozwoli mi to też trochę bardziej zgłębić temat, i być może dostarczyć lepszych przemyśleń.