W artykule Jak dbać o swoją prywatność - nie tylko w sieci [1] dość obszernie opisałem jak zabezpieczyć swoje lokalne pliki za pomocą luksa i truecrypta. Jednak, żyjemy w czasach, w których mobilność jest tak samo ważna, albo może i ważniejsza (dla niektórych ludzi na pewno), jak i bezpieczeństwo i poufność danych. Użyteczność zwykle nie idzie w patrze z bezpieczeństwem - im prostszy jest dla nas dostęp do danych, tym bardziej zagraża ich bezpieczeństwu. W tym przypadku chcielibyśmy mieć możliwość dostępu do plików np. naszego domowego PC z dowolnego miejsca na ziemi. Czy można w prosty i w miarę bezpieczny sposób coś takiego osiągnąć?

Przeglądając sieć, przypadkiem natrafiłem na informacje dotyczące połączenia funkcjonalności truecrypta z dropboxem. Nie byłem jednak pewien co do tego jak to ma działać. Pierwsze co mi przyszło do głowy, to utworzenie kontenera na pliki w truecrypcie i umieszczeniu go w lokalnym folderze dropboxa. Następnie zostałby on wysłany do chmury i zsynchronizowany na każdej podpiętej maszynie. Ok, ale gdy mamy kontener, powiedzmy 4 GiB, to przesyłanie/pobieranie 4 GiB za każdym razem troszeczkę by nam nadwyrężyło łącze. Oczywiście, chcemy być mobilni, a ciągnięcie 4 GiB przez wifi na fonie raczej odpada. xD

Na szczęście dropbox inaczej zarządza synchronizacją danych niż się może początkowo wydawać. Na pewno konieczne będzie przesłanie całego pliku - tylko z jednej maszyny. Ponad to, na każdym dodatkowym sprzęcie trzeba będzie ten plik umieścić. Oczywiście, możemy przesłać plik lokalnie - nie musimy tego robić przy pomocy dropboxa, co zaoszczędzi nam sporo czasu. Gdy pokopiujemy pliki na porządne urządzenia, zostanie nam konfiguracja dropboxa ale to nie powinno sprawić problemu.

Jak całość działa? Dropbox pobiera plik z jednej maszyny i wysyła go do chmury. Po podłączeniu nowej maszyny, dropbox sprawdza czy pliki są takie same. Jeśli się różnią, synchronizuje katalogi na maszynach z tymi u siebie - niby nic zaawansowanego. Jak to ma się do kontenera truecrypta? Mając synchronizowany plik kontenera 4 GiB, można dość do wniosku, że każda zmiana w jego strukturze - zapisanie danych w kontenerze - doprowadzi do ponownego przesłania całego pliku. Tak się jednak nie stanie. Dropbox dzieli pliki na kawałki 4 MiB i tworzy ich sumy kontrolne, które przechowuje w bazie danych. Zatem nasz kontener będzie miał 1000 części po 4 MiB. W przypadku modyfikacji którejkolwiek części, zostanie ona przesłana przez sieć. Nasuwa się pytanie - co w przypadku gdy wrzucimy do kontenera plik, powiedzmy, 1 MiB? Na dobrą sprawę zostanie przesłane nieco ponad 1 MiB danych. Czemu nie 4 MiB? Faktyczne dane zajmują 1 MiB, reszta części zostanie wypełniona zerami, a następnie wszystko zostanie skompresowane. Część części pliku - zawierającego zera (3 MiB) - po kompresji będzie zawierać mniej więcej tyle samo miejsca. Temu też zostanie przesłane przez sieć 1 MiB a nie 4 MiB, co bardzo odciąża łącza. Więcej na ten temat można poczytać na forum dropboxa - https://forums.dropbox.com/topic.php?id=97843 [2].

Nie jestem zwolennikiem powierzania bezpieczeństwa swoich plików komuś trzeciemu, dlatego też wadą przesłania kontenera truecrypta do chmury dropboxa jest jego jawność, a fakt przesłania komuś plików, o których nie powinien wiedzieć nie jest do pogodzenia z moja polityką poufności i bezpieczeństwa danych. Najprościej założyć zatem, że panowie z dropboxa będą próbowali się dostać do naszych plików - tak wiem, paranoik ze mnie. xD Kontenery truecrypta mają z reguły hasło. By usługa zaszyfrowanego voluminum na dropboxie była w miarę niezbyt upierdliwa nie będziemy stosować tutaj hasła 50 znakowego. Hasło nie zostanie też zlikwidowane. Skorzystamy z kombinacji w miarę normalnego hasła oraz pliku klucza. Posiadając lokalnie plik klucz, panowie z dropboxa nie będą mogli wyciągnąć z kontenera żadnych danych, nawet gdy uzyskają hasło - trzeba będzie znać hasło oraz posiadać plik klucz.

Jak będą wyglądać nasze pliki klucze i po co nam tak naprawdę hasło? Za pliki klucze nie będą nam robić standardowe maluśkie pliki wypełnione losowymi danymi przez algorytm hashujący. Będą to normalne pliki, np. ulubiona mp3. Truecrypt dopuszcza taką możliwość i nie zmienia struktury danych w plikach, zatem możemy odtwarzać mp3 i jednocześnie używać jej jako klucza. Trzeba pamiętać, że w przypadku utraty pliku klucza lub zmiany jakiegokolwiek bitu w pierwszych 1024 KiB pliku, otworzenie kontenera stanie się niemożliwe, a co się z tym wiąże, wszelkie dane na nim zostaną bezpowrotnie utracone. Hasło z kolei, służy jako ostatnia deska ratunku, gdyby ktoś przechwycił mp3. Oczywiście ma też za zadanie zmylić potencjalnego napastnika, budując u niego przeświadczenie, że kontener jest tylko na hasło i odciągnąć go od keyfile. A bez pliku klucza, pozostanie mu tylko łamanie szyfru. xD

Kilka uwag co do korzystania z truecrypta w połączeniu z dropboxem. Kontener może być zmieniany tylko przez jedną osobę naraz. Gdy dwie lub więcej osób będzie chciało w tym samym czasie wrzucić/usunąć pliki z voluminum, dropbox stworzy kilka kopii w zależności od tego ile osób "edytowało" kontener. Oczywiście spowoduje to późniejsze pobranie każdej kopi na każdą maszynę, co raczej może wyprowadzić człowieka z równowagi. Dropbox traktuje także otwarty kontener jako plik w fazie edycji i nie synchronizuje go do momentu jego zamknięcia. Dlatego też, jeżeli dzielimy z kimś konto, np. w celu przesłania mu zmodyfikowanego obrazu .iso z linuxem, ważne jest by poinformować drugą stronę, aby odmontowała u siebie volumin - przynajmniej na czas wgrywania danych. Po wgraniu plików i odmontowaniu kontenera, nastąpi synchronizacja danych. W przypadku gdy druga osoba będzie chciała podmontować volumin u siebie w chwili gdy ten się synchronizuje, zostanie o tym fakcie powiadomiona. Podczas usuwania danych z kontenera, dropbox prześle do chmury tyle MiB ile usuniemy. Trzeba jednak pamiętać o kompresji. W przypadku usunięcia 2 GiB, dropbox wyśle 500 części, każda po 4 MiB ale będą one się składać z samych zer. Dlatego też, zamiast przesłać 2 GiB zostanie przesłanych paręset KiB.

Oprócz dropboxa mamy jeszcze inne usługi - skydrive, google drive i icloud. Nie będę się zbytnio rozpisywał na temat konfiguracji wszystkich tych usług - można ją znaleźć np. tutaj [3]. Interesuje mnie raczej odpowiedźS na pytanie - czy podobny zabieg można przeprowadzić w pozostałych usługach. W podanym linku, możemy wyczytać, że dropbox, skydrive i google drive dostarczają aplikacje desktopowe dla windowsa i maca. Ale tylko dropbox ma clienta dla linuxa. Bez clienta desktopowego raczej nie ma co podchodzić do mechanizmu szyfrującego z wykorzystaniem truecrypta. Co prawda, usługi googla i microsoftu mają clienty na wina i androida. Ja niestety z windowsa nie korzystam i pozostaje mi tylko (albo i aż) dropbox, który sprawuje się naprawdę zajebiście.

Jeśli uważasz, że któryś z moich artykułów jest ciekawy i przydał ci się do czegoś oraz nie masz konta na dropboxie, możesz się zrewanżować zakładając konto z tego linku http://db.tt/90XFs5H [4], zawsze mi to doda trochę miejsca (500MiB up to 16GiB).


Przypisy:

  1. http://dug.net.pl/tekst/239/jak_dbac_o_swoja_prywatnosc___nie_tylko_w_sieci/
  2. https://forums.dropbox.com/topic.php?id=97843
  3. http://www.techradar.com/news/internet/best-cloud-storage-dropbox-vs-skydrive-vs-google-drive-vs-icloud-1120024
  4. http://db.tt/90XFs5H