Szyfrowany internet pogłębia cyfrowe wykluczenie, ale nikt o tym nie mówi

Szyfrowany internet pogłębia cyfrowe wykluczenie, ale nikt o tym nie mówi

Szyfrowany internet pogłębia cyfrowe wykluczenie (depositphotos)
Szyfrowany internet pogłębia cyfrowe wykluczenie (depositphotos)
Kamil J. Dudek
17.08.2018 08:46, aktualizacja: 20.08.2018 21:13

Od czasu do czasu, słysząc na temat przełomowych zmian w krajobrazie IT, jak uruchomienie w Google Chrome obowiązkowego HTTPS, w głowie rodzi się zbiór pytań i wątpliwości. Zazwyczaj towarzyszy im pytanie nadrzędne: dlaczego tym razem nie słychać głosów żywiołowego protestu? Bunt, sprzeciw i ustawiczne niezadowolenie wydają się być przecież niemal przyrodzonymi cechami debaty internetowej, dlaczego wobec tego w owych „ważnych momentach” tak często jest cicho? Przecież ludzie są gotowi skrytykować wszystko. Wie o tym każdy, kto musiał kiedyś moderować komentarze.

W kwestiach czysto technicznych słychać marudzenie na zabawy z HTTPS, ale jest ono ignorowane, ponieważ zazwyczaj pochodzi od użytkowników, a nie fachowców. To użytkownicy będą marudzić, że ich paski adresu świecą na czerwono od braku szyfrowania. Fachowcy powiedzą wtedy, że przecież dzięki temu będziemy bezpieczniejsi. To użytkownicy będą narzekać na tony danych telemetrycznych, słanych przez system operacyjny. Albo na edytor tekstu generujący dwadzieścia trzy połączenia z serwerami producenta, nawet podczas pracy nad dokumentem offline. Inżynierowie będą dostarczać wachlarz argumentów opisujących same zalety takiego podejścia. Co gorsza, będą im w tym pomagać publicyści IT.

Obraz

Odejdźmy na chwilę od tego HTTPS, by pomówić o ogólniejszych kwestiach. Dziennikarstwo IT (oraz dziennikarstwo w ogóle) uległo rozczarowującemu przeobrażeniu wraz ze wzrostem dostępu do klawiatury. Ale to nie tylko drugorzędni blogerzy, bezwstydnie próbujący swych sił w publicystyce, sprzyjają popularyzacji groźnie mylących opinii na temat techniki. Znany, szanowany i przede wszystkim doświadczony Paul Thurrott, posiadacz wieloletnich koneksji wśród decydentów Microsoftu, przez kilka lat promował na przykład platformę WinRT i UWP, również gdy była na etapie miernych aplikacji obowiązkowo pełnoekranowych, i usilnie przekonywał świat, że klasyczny pulpit już niedługo pójdzie w odstawkę. Mary Jo Foley uparcie powtarzała, że do 2020 wszyscy będziemy używać tabletów. Ludzie im wierzyli. Tymczasem w głowie pojawiały się wspomniane wątpliwości. W jaki sposób te kolorowe atrapy mają zastąpić stacje robocze oraz przede wszystkim: jak bardzo trzeba być odpornym na fakty, żeby być takiego zdania?

Owa postawa, którą trzeba chyba nazwać ignorancją, może mieć różne źródła, i niekoniecznie są nimi niekompetencja i naiwność. Thurrott odrzuca np. wszelkie formy debaty o telemetrii, uznając zastrzeżenia za „foliarstwo” z czym nie ma dyskusji. Andrew Zarian jest gorącym zwolennikiem deanonimizacji Sieci, bo wraz z żoną otrzymywał internetowe pogróżki. Zac Bowden ma z kolei tendencje do religijnego utożsamiania się ze społecznością produktów, których używa (to już akurat nie fakt, ale krzywdzące uogólnienie. Ale skoro już wytykamy ludźmi palcem, pozwólmy sobie na trochę nadużyć. Klik klik. Mimo to jednak cieszę się, że nie znają polskiego.) Mowa tu więc o pozamerytorycznych opiniach, na bazie których formułowane są poglądy na temat branży IT. Owszem, każdy ma do tego tendencje, ja na przykład niezdrowo nienawidzę Javy i będę trwał w odrzucaniu jej. Nawet gdy okaże się, że jej znajomość jest kluczowym wymaganiem do osiągnięcia zbawienia i życia wiecznego. A przyda się to gdy wreszcie nadejdzie, za te kilka lat, ten niecierpliwie wyczekiwany koniec świata. Jednak owe tendencje do wyrazistych opinii są mechanizmem dokonującym erozji poziomu debaty. Powinny być poddawane wewnętrznej moderacji, w postaci prób zachowywania obiektywizmu lub, w skrajnych przypadkach – aplikowania elementarnego poczucia przyzwoitości.

Obraz

Istnieją też inne, gorsze źródła pomijania ważnych wątpliwości w publicznej debacie o IT. Przedstawiciele opiniotwórczych portali technologicznych to zazwyczaj zasypani promocyjnym sprzętem bogaci mieszkańcy pierwszego świata (mają oni więcej cech wspólnych, ale pozostałe z nich należą raczej do kręgu zainteresowań tytułu „Huffington Post” a nie „Computerworld”, stąd też nie należy o nich wspominać). Fakt ten wiąże się w nieunikniony sposób z życiem w pewnej społecznej (klasowej wręcz!) bańce, uniemożliwiającej rewizję swego doświadczenia w konfrontacji z mniej radosną rzeczywistością. Prowadzi to formułowania pytań dość szczególnego typu. „Czy dwuletni iPhone dalej jest używalny?” „Jakiego iPada wybrać do kuchni?” „Czy znacie kogoś, kto dalej używa Windows 7?” „Pomogłem babci w migracji z jej starego, pięcioletniego komputera”. Ci sami ludzie karcącym tonem wyzywają użytkowników, że popełniają oni grzech zaniechania, głupoty i niemodności jeżeli nie wymieniają swoich komputerów co dwa lata. Aby zapewnić sobie bezpieczeństwo i „optymalny poziom doznań”. To właśnie tacy autorzy rozpaczają nad tym, że tryb ciemny w iPadzie kiepsko działa, uznając ten problem, oraz wszystkie inne drobne niedogodności, za największe bolączki trapiące ludzkość.

To powinno wyjaśnić dlaczego dziennikarze IT nie podejmują oczywistych kwestii w ważnych tematach. Dlaczego niemal cała publicystyka informatyczna nie zadaje właściwych pytań o prywatności, bezpieczeństwie i inżynierii oprogramowania. A powodem nie jest to, że takie tematy się nie klikają. Bierze się to z tego, że dostawcy treści żyją w innej rzeczywistości, niż większość użytkowników. I jednym z tematów, które prawie nigdy nie pojawiają się na tapecie, jest cyfrowe wykluczenie. Ale nie takie w stylu „wujek Gienek nie ma szerokopasmowego internetu i łapie tylko dwie kreski zasięgu”. Mowa o wykluczeniu na skalę światową. O problemach pojawiających się w miejscach, których większość z nas nie odwiedziłaby nawet za sroga dopłatą. Dobrze, teraz możemy wrócić do HTTPS. Mniej więcej.

Nowe strony na starym sprzęcie to nie lada wyczyn. źródło: https://virtuallyfun.com/2014/03/11/web-rendering-proxy-update/
Nowe strony na starym sprzęcie to nie lada wyczyn. źródło: https://virtuallyfun.com/2014/03/11/web-rendering-proxy-update/

Ciężkie strony internetowe nie ładują się odpowiednio szybko na słabym łączu. Przeładowane JavaScriptem aplikacje webowe przestają reagować, gdy otworzy się je na słabszym komputerze. A połączenia szyfrowane będą niemożliwe do zestawienia na systemie nieobsługującym najnowszych algorytmów. Tak sformułowane kwestie są na co dzień zupełnie obce branży, która przez cyfrowe wykluczenie rozumie dziś brak obsługi niektórych kodeków dla Netfliksa w przeglądarkach internetowych. Tymczasem pęd do unowocześniania i zabezpieczania komunikacji okazuje się mieć swoją cenę. Płacą ją ludzie tak kosmicznie zignorowani w całym owym procesie, że zakrawa to niemal na skandal, a już na pewno na żenadę i hipokryzję.

Wzrost ciężkości aplikacji WWW oraz obciążenie ich bardzo drogim obliczeniowo JSem to zjawiska, które nastąpiły niejako mocą swojej inercji. Stopniowo rozszerzane zapotrzebowanie na aplikacje o poziomie funkcjonalnym zbliżonym do tradycyjnych programów, zestawione z ograniczoną liczbą środowisk uruchomieniowych sprawiło, że strony internetowe obudowywano w coraz więcej skryptów. JavaScript stał się językiem ożywiającym strony dość przypadkowo. Nie miał służyć do tego w takim zakresie, jak dziś. Oznacza to, że nigdy nie było planu unowocześnienia sieci poprzez rozbudowanie stron WWW z użyciem JavaScriptu. Zamiary wzmocnienia aplikacji internetowych tak, by konkurowały z pulpitem naturalnie istniały, ale przymiarki odbywały się z wykorzystaniem zupełnie innych środowisk, jak Java, Flash i Visual Basic.

Obraz

W przypadku masowego przejścia na HTTPS, sprawa ma się inaczej. Tym razem jest to jednoznacznie odgórna inicjatywa, forsowana przez „wielkich” dzisiejszego internetu, a trend i tempo wyznacza tu nieodmiennie przeglądarka Google Chrome. Intencje są pozornie słuszne, zwłaszcza w czasach rozbudowanego, zautomatyzowanego podsłuchu, stosowanego przez wywiady elektroniczne. Mimo to, powszechne szyfrowanie TLS w wielu sytuacjach nie ma sensu i jest mylącą oraz drogą przesadą.

Po co nam ten cały HTTPS, według ulotek reklamowych i na chłopski rozum? Jest kilka powodów. W szyfrowanej komunikacji chodzi nie tylko o prywatność, ale i o bezpieczeństwo. Komunikacja TLS nie oferuje bowiem jedynie szyfrowania, ale również wymusza integralność całej „sesji” w ramach której przeprowadzana jest interakcja ze stroną. A więc osoby trzecie nie mogą podejrzeć treści komunikacji, ale jednocześnie zapewniona jest także wiarygodność tożsamości nadawcy. Cóż nam po szyfrowanej komunikacji, gdybyśmy tak naprawdę od początku rozmawiali ze złodziejem? Dlatego połączenie jest nie tylko szyfrowane, ale i ujmowane pod „parasolem”, pilnującym szeregu cech połączenia, między innymi tożsamości. Zresztą, weryfikacja tożsamości idzie dziś w parze z jednorodnością źródła pochodzenia (single originator) i kilkoma innymi regułami. Nie gwarantuje ich sam HTTPS, ale robią to już dzisiejsze przeglądarki. Wynika to z presji na stworzenie wiarygodnego mechanizmu płatności i uwierzytelniania, gdzie samo szyfrowanie byłoby niewystarczające.

A jest przecież nie mniej istotne. W obecnych czasach nieskutecznego szaleństwa na punkcie „we value your privacy”, nawet Google szyfruje swoje wyszukiwania. Nie tylko wyniki, ale również zapytania od użytkowników. Jedyne metadane, jakie można wyciągnąć z takiej komunikacji, to rozmiar oraz… sam adres DNS (acz ograniczony tylko do domeny, wszak szyfrowanie TLS nie obejmuje ruchu DNS. Odczytamy domenę, ale adresu URL już nie). Uniwersalne podejście do prywatności powinno cieszyć: gdyby nie odgórny przymus stosowania HTTPS, wiele stron uchylałoby się od zabezpieczenia swojej komunikacji, motywując to nieśmiertelnym „ale przecież my tylko…”. Chcąc rozpatrywać tę kwestię indywidualnie, nigdy nie osiągnięto by satysfakcjonującego poziomu bezpieczeństwa. Podejście masowe powinno budzić wątpliwości – czy strona z Przepisami na Wypieki od Babci Gieni wymaga szyfrowanej komunikacji? Odpowiedź naturalnie brzmi „jasne, że nie – ale jak komuś odpuścimy, to inni zaczną kombinować”. Dlatego lepiej zaszyfrować Babcię Gienię ,tak dla świętego spokoju. No bo przecież co za różnica? Już nawet certyfikaty TLS można dostać za darmo, więc to wszystko prawie nie wymaga wysiłku!

Obraz

Z pomocą od razu przychodzą fachowcy, tłumaczący cierpliwie, że HTTPS ma zalety nawet wtedy, gdy wydaje się pozornie niepotrzebne. Powstają strony-przewodniki, jak „doesmysiteneedhttps.com”, które wyjaśniają, że nawet jeżeli strona internetowa nie zawiera nic ważnego, to żyjemy w tak odrażająco okropnych czasach, że dostawcy ISP oraz złośliwe routery infekują sam ruch sieciowy do klienta, „wzbogacając” strony o własne materiały reklamowe! Wstrzykiwanie reklam w komunikację HTTPS jest tymczasem „niemożliwe”, bo szyfrowana komunikacja jest wrażliwa na próbę manipulowania treścią: próba zmodyfikowania strony skończyłaby się unieważnieniem komunikacji, podpadając pod wzorcową definicję ataku „man-in-the-middle”. A jest to przecież tłuczenie termometru i uchylanie się od rozwiązania problemu. Zamiast wysyłać oszustów na słońce, a reklamodawców skazywać na publiczne podtapianie w balii z nawozem, szyfruje się komunikację, od początku zakładając, że po prostu nie da się wygrać ze skorumpowanymi ISP i twórcami śmieciowego oprogramowania. Bo przecież HTTPS nic nie kosztuje.

Fakt, nic nie kosztuje, aż pojedziemy np. do Ugandy (zaraz wrócimy do tego). Skoro już nie da się wygrać ze złem to dobrze, szyfrujmy, ale miejmy świadomość, jaki jest tego koszt. Nie zwracają na to uwagi dziennikarze IT, rozpływający się nad wszech-zaletami HTTPS, nierzadko opisując je z godnym uznania kunsztem technicznym. Tematem problemów wprowadzanych przez użycie szyfrowanego http zajął się Eric Meyer, programista Web o bogatym dorobku. Na jego blogu można przeczytać o wątpliwościach, które powinny się były pojawić, a o których było cicho podczas pierwszych miesięcy boomu na HTTPS.

Obraz

Gdy źródła opiniotwórcze ekspresowo klasyfikują każdy przejaw krytyki HTTPS jako lenistwo lub głupotę, Meyer otwiera oczy profesjonalnym posiadaczom ciepłej wody w kranie, przypominając, że rzeczy powszechnie dostępne dla nas, mogą być bardzo drogie dla innych. Opisuje, jak znalazł się w okolicznościach, które sprawiły, że skromny narzut komunikacyjny urósł do poziomu paraliżującego komunikację.

Internet na obszarach państw takich, jak Uganda, jest dostarczany w większości drogą satelitarną. Trasy, jakimi podróżują pakiety TCP generowane podczas takiego połączenia są bardzo długie i często zaskakująco niewydajne. Również „szerokość” takiego łącza potrafi być bardzo niska, ponieważ jest podatna na fluktuacje. Głównym problemem jest jednak utrata pakietów. A ta w komunikacji satelitarnej potrafi dobijać nawet 70 proc. Protokół TCP (w przeciwieństwie do UDP) jest zaopatrzony w rozwiązania uodparniające na utratę danych po drodze, ale mają one swoje granice, poza tym działają tak, że w razie utraconych fragmentów danych wymuszają ich ponowne przygotowanie w tle, generując jeszcze więcej ruchu.

Kiepskie („unreliable”) łącze nie jest nowym ani rzadkim problemem, więc opracowano już dla niego wiele rozwiązań. Są one w większości oparte o stosowanie pamięci cache na dużą skalę. Niestety, w przypadku ruchu HTTPS, wprowadzenie przezroczystego pośrednika (proxy) odpowiadającego za masowe cache’owanie ruchu nie sprawdza się, ponieważ działa na zasadach ataku MitM, stosowanego przez wyżej wymienionych, nieuczciwych reklamodawców. Zabezpieczanie ruchu z wykorzystaniem TLS ustrzega nas przez taką manipulacją, przy okazji odbierając możliwość cache’owania ruchu na masową skalę. To bardzo zła wiadomość dla kilkuset milionów ludzi (liczby przestały robić na nas wrażenie, ale proszę spróbować sobie wyobrazić ten tłum!), dla których internet nie jest dostępny na wyciągnięcie ręki. Przy takiej skali, kiepski zasięg LTE w Kowanówku to naprawdę problem pierwszego świata.

Obraz

Wprowadzenie i wymuszenie HTTPS miało uczynić internet bezpieczniejszym dla wszystkich. Meyer podkreśla, jak chybione jest określenie „dla wszystkich”, stosowane przez mieszkańców i obywateli innej rzeczywistości, niż krainy na które cyfrowi bogowie spoglądają z niebios z mniejszą uwagą. Pomijanie kwestii niedostępności cyfrowej infrastruktury, w postaci łącza internetowego, sprzętu objętego cyklem życia i kapitału intelektualnego fachowców, jest powszechne, choć wydaje się, że powinno być inaczej. Stosowana obecnie retoryka podkreślająca ciągłą edukację, walkę z wykluczaniem, popularyzację techniki i otwartość na wszelkie środowiska okazuje się być kompletnie fasadowa. Lewicowa narracja w wykonaniu producentów i konsumentów globalnego kapitalizmu to nic ponad modę, być może przejściową. Rzeczywistą debatą o równości w dostępie do technologii okazuje się być dyskusja o zasadności szyfrowania, jakże niepopularny temat! Przecież prawdziwymi problemami są kwestie takie, jak niestabilność iOS 11 na nowym iPhone X lub nieprawidłowy kolor powiadomień na ekranie blokady. Można się śmiać, że owi dziennikarze-arystokraci chwalą się głosowaniem na Demokratów, a nie mają pojęcia o skali i jakości popularyzacji elektroniki użytkowej. Ale będzie to jedynie mało wartościowy, osobisty przytyk. O wiele ważniejszą kwestią jest to, że ta wygodna nieświadomość obniża poziom debaty.

Obraz

W okolicach roku 2000 zaczytywałem się w pewnym ładnie wydanym, bardzo grubym przewodniku Pascala. Nie był to jednak przewodnik po żadnym z popularnych punktów turystycznych, lecz po internecie. „Praktyczny przewodnik: Internet” to jedna z tych książek, które mogły powstać tylko wtedy i których późniejsze istnienie było kompletnie nieuzasadnione. Poza kilkuset stronami na temat istniejących wtedy stron internetowych (przewodnik był w praktyce papierowym Googlem, zamrożonym w roku 2000), w przewodniku zawarto również rozdział o zestawianiu konfiguracji niezbędnej do połączenia z Siecią: wykaz potrzebnego sprzętu oraz oprogramowania. Wśród detalicznych opisów znajdował się też akapit zwracający uwagę na wersję omawianych programów: że oto Internet Explorer 5 wymaga niewiele więcej pamięci, niż wersja czwarta, a spisuje się o wiele lepiej. I że dla najsłabszych komputerów najlepszy będzie Netscape 2.0.

Dzisiaj jest to nie do pomyślenia. Stosowanie starej przeglądarki uchodzi za ciężki grzech – nie tylko z powodu ubóstwa funkcjonalnego, utrudniającego życie webmasterom, ale również dlatego, że poprzednie wersje są dziurawe: beztrosko załadują kursor w wirusem, przebiegle uruchomią skrypt w niewidzialnym oknie, nie uchronią przed wyciekiem danych umożliwiających jednoznaczną identyfikację. Sporą część nowości wprowadzono nie dla wygody programistów, ale „dla naszego dobra” i bezpieczeństwa. Nie zadbano jednak o „fallback” i możliwość dostępu do danych z użyciem słabszego sprzętu i starszego oprogramowania. Internet przestał być bowiem zwykłym źródłem informacji: dziś wszystko musi być serwowane jako platforma, najlepiej w interaktywnej postaci. I nie jest to wymysł zblazowanych milenialsów i adaptacja do pustogłowia instagramowych gimnazjalistek: to finał ścieżki konsekwentnie obranej ponad dwadzieścia lat temu.

Nie trzeba jechać do Ugandy, bo zetknąć się z „przestarzałą” technologią. Wiele europejskich szkół, szczególnie tych zza Żelaznej Kurtyny, jest wyposażonych w pracownie informatyczne oparte o wiekowy, kilkunastoletni sprzęt, niemożliwy do zabezpieczenia i często nieradzący sobie z obciążeniem obliczeniowym, wymaganym przez dzisiejsze aplikacje webowe. Nie jest to reptiliański spisek zawiązany w porozumieniu producentów sprzętu z dostawcami oprogramowania – po prostu narzędzia ułatwiające tworzenie programów, celem obniżenia kosztów (czytaj: wykorzystania słabszych inżynierów w charakterze programistów), generują kod łatwiejszy, ale cięższy. Połączenie tego faktu z JavaScriptem daje dość przekomiczne efekty w postaci np. frameworku Electron. Niska moc obliczeniowa jest tolerowana jedynie w urządzeniach typu Raspberry Pi, Arduino lub (tu już ekstremalny przykład) Micro:Bit. Milcząco zakłada się, że właściwa infrastruktura jest oparta o ultrabooki przynajmniej z 2017 roku. I to właśnie pod takim kątem jest mimowolnie serwowana coraz większa porcja zasobów internetowych. Przekonanie, że dostępność materiałów wzrosła z powodu powszechnej cyfryzacji i spadku kosztów komputerów (proszę zobaczyć, ile kiedyś kosztował IBM PC!) jest mylne, ponieważ owa dostępność wzrosła w sposób nierówny. A dzięki wzrostowi wymagań sprzętowych, owa dostępność może zacząć się powoli „zwijać” z powrotem. Niestety, ten argument bardzo rzadko się przebija, bo „dziś przecież prawie każdy ma iPhone’a…”. A przecież HMD wydaje np. taką Nokię 8110 4G z KaiOS. Czy to tylko telefon dla sentymentalnych nerdów i/lub seniorów? Ależ nie. Po prostu świat to nie tylko pierwszy świat.

czasem nie chodzi o oryginalność
czasem nie chodzi o oryginalność

Nie każda strona musi od razu wyglądać jak stallman.org (gdzie i tak domyślnie działa HTTPS), bez nałożonego stylu, bez CSS i bez JS. Choć niewątpliwie często byłoby to zdecydowanie wskazane i pożądane. Lecz nawet sensoryczne przeładowanie nie jest argumentem, który jest często podnoszony przez publicystów IT. Gdy kilka miesięcy temu wszystkie większe strony zapadły na wysypkę GDPR, nas znanego pod nazwą „RODO”, właściciele niektórych postanowili rozwiązać problem poprzez unik: wyłączyli ruch, który mógłby generować zdarzenia wymagające obsługi RODO. Efektem w kilku przypadkach był kilkunastokrotnie mniejszy „footprint” połączenia. Strony ładowały się szybciej, były mniej przeładowane i działały po prostu… lepiej, ze względu na brak zaplecza technicznego, koniecznego do przetworzenia przez przeglądarkę. Bo w sumie czemu strona, na której się nie logujemy, raczy nas plikami cookie? I po co jej tyle skryptów? Wyrazy aprobaty były jednak nieliczne: w większości przypadków podniósł się krzyk.

Można się zastanawiać nad ogólną jakością dziennikarstwa IT. Od kiedy bezwstydnie panoszy się rozbestwienie, niekompetencja i rozpieszczenie nowymi technologiami, bez zważania na całe rzesze cyfrowy wykluczonych? Oczywiście, od zawsze. Rodzime czasopisma komputerowe początku lat dziewięćdziesiątych, złożone w 75 proc. z reklam, brzmiały dosłownie identycznie, jak te dzisiejsze. I również rozpływały się nad systemem NT, gdy normą było 4MB RAMu, nie inaczej, jak dzisiejsze przeglądy dziesięciu najlepszych aplikacji do zarządzania smart-domem na iPhone’a. Ówczesne dramy dotyczące ochrony pamięci w Windows 95, związane nie ze stabilnością, a z bezpieczeństwem przypominały w dodatku o solidnej dawce myślenia życzeniowego. Pocieszna niezdolność do zadawania właściwych pytań jest zatem cechą przyrodzoną publicystyki technicznej, zmienia się tylko skala. Nie inaczej, jak zmienia się skala społecznego wpływu na rozwój IT.

Frustrującym podsumowaniem niech będzie to, że nie możemy nic z tym faktem zrobić. Nierówności będą się tylko pogłębiać. A my będziemy czytać o tym, jak wielkim dramatem estetycznym jest „buła” na wyświetlaczu obrzydliwie drogich smartfonów. Na szczęście dla nas, swoimi przemyśleniami podzielą się ludzi tacy, jak Eric Meyer, których nie zabraknie.

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Wybrane dla Ciebie
Komentarze (124)