Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Chmura] Deduplikacja a Wuala

Na początku bieżącego roku (lub jeszcze w poprzednim) na blogu DP pojawił się wpis poddający w wątpliwość bezpieczeństwo plików przechowywanych w chmurze Wuala - a jest to usługa, która z założenia jest bezpieczna, bo pliki opuszczają komputer właściciela w postaci zaszyfrowanej jego hasłem. Sprawa mnie zaintrygowała. W wolnej chwili zacząłem dociekać co i jak z tym bezpieczeństwem w Wuala. Poniżej rezultaty.

Deduplikacja

Na wstępie definicja, na wszelki wypadek: funkcją skrótu nazywamy funkcję, która dowolnie dużemu plikowi przyporządkowuje, na podstawie jego zawartości, relatywnie krótki ciąg znaków (długość jest taka sama dla wszystkich plików). W idealnym przypadku każde dwa pliki mają różne skróty, jak również dwa podobne pliki mają zupełnie niepodobne skróty. Ze skrótu nie można (łatwo) odtworzyć skracanego pliku.
Znany, niedoskonały przykład to sumy MD5. Lepszy przykład to SHA-3.

Deduplikacja jest metodą oszczędzania miejsca na serwerach usługodawców chmurowych.

A z chmurami to jest różnie z bezpieczeństwem. Są chmury, które nie są bezpieczne z założenia - są to prawie wszystkie tego typu usługi. Bezpieczne jest albo tylko połączenie, czyli osoba trzecia plików nie podejrzy, ale usługodawca już może do nich zajrzeć, albo bezpieczne nie jest nawet połączenie, co twórcy Wuala porównują do nadania pocztówki - każdy może przeczytać. Pliki na serwerach mogą (powinny) leżeć na szyfrowanych dyskach, aby w razie fizycznej kradzieży dysku dane były bezpieczne, ale w gruncie rzeczy, niewiele to zmienia. Mogą też leżeć w postaci zaszyfrowanej, ale kluczem znanym usługodawcy - to też wiele nie zmienia. Co prawda gdy osoba trzecia nie zna klucza, to treści pliku nie pozna, ale usługodawca dalej może pliki podglądać. I pokazywać np. amerykańskiej NSA.

W chmurze niezabezpieczonej deduplikacja działa jak następuje: użytkownik A chce wysłać plik "b.cde" na pusty serwer. Przed wysłaniem tego pliku, program-klient chmury oblicza skrót tegoż pliku - powiedzmy, że skrótem tym jest "w45cf6". Skrót ten jest wysyłany do chmury i porównywany z bazą danych o już przesłanych plikach - bazą pustą, bo tak założyliśmy. Klient wysyła plik "b.cde" do chmury, a w bazie danych pojawia się wpis (pierwszy) o treści typu:id właściciel nazwa_pliku skrót_pliku ścieżka_pliku 1 A b.cde w45cf6 /chmura/00000001Niech teraz użytkownik F zechce wysłać dwa pliki na serwer. Pierwszy z nich - "g.hij" - będzie nowym plikiem, a drugi z nich - "k.lmn" - będzie tym samym, co wysłany przez użytkownika A (nazwa inna, zawartość ta sama). Klient liczy skróty. Dla "g.hij" skrótem niech będzie "876trd", a dla "k.lmn" znane nam już "w45cf6". Klient wysyła pierwszy skrót do bazy danych. Baza danych nie zna tego skrótu. Plik "g.hij" zostaje wysłany na serwer, a baza danych wygląda teraz tak:id właściciel nazwa_pliku skrót_pliku ścieżka_pliku 1 A b.cde w45cf6 /chmura/00000001 2 F g.hij 876trd /chmura/00000002Klient wysyła teraz skrót ostatniego pliku, czyli "w45cf6" dla "k.lmn". Baza danych stwierdza, że taki skrót już zna. Plik "k.lmn" nie zostaje wysłany na serwer, ale zawartość bazy danych się zmienia, o tak:id właściciel nazwa_pliku skrót_pliku ścieżka_pliku 1 A b.cde w45cf6 /chmura/00000001 2 F g.hij 876trd /chmura/00000002 3 F k.lmn w45cf6 /chmura/00000001Czyli użytkownicy A i F mają w sumie trzy pliki, w bazie danych są dla nich trzy wpisy, ale na serwerze leżą dwa pliki, bo jeden z tamtych trzech się powtarza, czyli jest zduplikowany. Chmura zapobiegła trzymaniu dwa razy tego samego pliku, czyli nastąpiła deduplikacja.

Wyobraźmy sobie teraz, że ktoś wypuszcza do sieci plik ze spiraconym filmem. Plik taki swoje waży. Powiedzmy, że 4 GB. Do chmury chce go wrzucić nie dwóch, a stu użytkowników. Dzięki deduplikacji serwer trzyma jedną jego kopię zamiast stu, czyli oszczędza 99*4 GB = 396 GB danych. A jeszcze do tego wypadałoby mieć kopie zapasowe tego, co użytkownicy w chmurze trzymają. Czyli np. drugi serwer z tą samą zawartością. A więc oszczędność to już 2*396 GB = 792 GB. 792 GB oszczędności na jednym pliku 4 GB. Jest się o co bić. A to, że liczby są z sufitu, nic nie zmienia.

Kontynuujmy opowieść. Plik był piracki, właściciel praw do filmu dowiedział się, że plik wisi w sieci. Pobrał go sobie i wysyła po kolei do wszystkich chmur. Przy każdym wysyłaniu sprawdza obciążenie swojego łącza - sprawdza, czy plik rzeczywiście wyszedł przez łącze, czy nie. Jeśli wyszedł, nikt tego pliku w tej chmurze jeszcze nie trzymał. Jeśli nie wyszedł, to znaczy, że deduplikacja zadziałała i ktoś w chmurze trzyma sobie ten spiracony plik. Właściciel dzwoni do właściciela chmury i... No, tu już może być różnie. Teoretycznie, właściciel praw do filmu, właściciel chmury i policja dobierają się do skóry pirata i musi on zapłacić karę, oraz jego konto w chmurze zostaje usunięte.

Jest jeszcze inny aspekt deduplikacji - ktoś może generować wszelkie pliki, jakie tylko mu do łba strzelą, i patrzeć, co robi deduplikacja. I w ten sposób poznać wszystkie pliki, jakie w danej chmurze istnieją. Nasuwają się tylko dwa pytania: 1. Po co? 2. Kiedy?
Na pierwsze pytanie możemy odpowiedzieć: jak nie wiadomo o co chodzi, to wiadomo o co chodzi. Czyli można połasić się na zapisane jawnie hasła do kont bankowych itp.
Na drugie pytanie odpowiedź brzmi: nie prędko. Jak myślicie, ile trwa wygenerowanie wszystkich plików o rozmiarze nie większym, niż ustalony, np. niż 1 MB? Wszystkich, tzn. wszystkich możliwych ciągów bitów. Bez wdawania się w dywagacje - dużo. I jeszcze trzeba by było to wszystko zweryfikować.

Także zagrożenie jest, ale raczej teoretyczne.

Bezpieczeństwo Wuala

We wspomnianym na początku wpisie jego autor twierdził (w skrócie), że skoro w Wuala jest deduplikacja, to pliki nie są tak na prawdę szyfrowane. Czy tak jest w istocie?

Sprawa bezpieczeństwa w Wuala (i paru innych podobnych usługach) jest długa, nudna i trudna. W skrócie więc: z nazwy i hasła użytkownika generowany jest klucz szyfrujący, którym są szyfrowane podstawowe informacje na temat naszego konta, w tym katalog główny i klucze szyfrujące jego plików i folderów w nim zawartych. I tak samo niżej. Wuala określa to mianem drzewa, ale ja bym powiedział, że robi się taki stosik: żeby otworzyć coś, co jest niżej, trzeba otworzyć coś, co jest wyżej. A na samym wierzchu jest katalog główny obłożony kluczem z hasła użytkownika. Wszystko więc jest "przygniecione" hasłem użytkownika. Kluczem z hasła otwieramy katalog główny, z niego wyjmujemy klucz do podfolderu, z niego wyjmujemy klucz do podfolderu podfolderu, z niego (...) wyjmujemy klucz do pliku. I każdy kolejny klucz Wuala przechowuje u siebie w postaci zaszyfrowanej, tak, jak pliki.
"Gołe" hasło użytkownika nigdy nie opuszcza komputera użytkownika. Przechowywana jest jego zaszyfrowana postać, aby sprawdzić, czy przy kolejnym logowaniu użytkownik podał dobre hasło. To, co znajduje się na serwerach w chmurze, to są folderu użytkownika, pliki użytkownika, metadane nt. tych plików i folderów i klucze do tego całego bałaganu. Wszystko to (nawet klucze) jest zawsze zaszyfrowane jakimś kluczem - albo losowym, albo zrobionym z funkcji skrótu, albo wygenerowanym z hasła użytkownika - zależnie od poziomu.

Deduplikacja w Wuala

Pozornie wygląda ona jak w przypadku niezabezpieczonym. Klient wysyła skrót pliku do chmury z pytaniem czy chmura zna już ten plik. I chmura odpowiada czy zna, czy trzeba przesłać. Ale! Używamy dwóch funkcji skrótu. Chmurze pokazujemy skrót zrobiony pierwszą funkcją, ale wysyłamy plik zaszyfrowany kluczem, którym jest skrót z drugiej funkcji.
Chmura (Wuala) zna zaszyfrowany plik i jego pierwszy skrót (do deduplikacji). Ale nie potrafi go odszyfrować. Do jego odszyfrowania potrzebny jest drugi skrót oryginalnego, niezaszyfrowanego pliku, a ten jest... wysyłany jako zaszyfrowany, wedle wcześniejszego opisu. Dla użytkowników A i F z wcześniejszego przykładu, plik jest ten sam, pierwszy skrót jest ten sam, plik zaszyfrowany drugim skrótem jest ten sam, drugi skrót jest ten sam, ale drugi skrót każdy z nich trzyma zaszyfrowany innym kluczem losowym (lub wygenerowanym z własnego hasła). I inne mogą być metadane. Innymi słowy, Wuala ma pierwszy klucz, "bezużyteczny", a obaj użytkownicy mają swoje egzemplarze drugiego klucza w swoich własnych sejfach. Każdy z nich może tego klucza użyć bez udziału drugiego z nich, a chmura nie może nic zrobić.

Tak więc pliki wysyłane do Wuala są szyfrowane i nikt poza właścicielem ich nie może otworzyć. Pojawia się tylko potencjalne zagrożenie ze strony deduplikacji: drugi właściciel takiego samego pliku. Ja się tego nie boję.

Udostępnianie

A co się dzieje, gdy właściciel pliku (a właściwie katalogu) chce go udostępnić? Klucz jest ujawniany osobom, z którymi katalog jest dzielony (dzielenie się w obrębie przyjaciół w Wuala) albo wszem i wobec (w przypadku dzielenia się przez podanie linku do pliku).

Kto nie czuje się jeszcze dość zamotany tymi kluczami, skrótami, szyfrowaniami i innymi cudami, może sobie poczytać poniższe mądre teksty, na których bazowałem. I zapraszam do skorzystania z mojego zaproszenia do Wuala.

  • http://www.wuala.com/en/learn/technology
  • http://www.wuala.com/blog/2011/04/wualas-encryption-for-dummies.html
  • https://forum.wuala.com/viewtopic.php?f=11&t=7892
  • http://dcg.ethz.ch/publications/srds06.pdf
  • https://plus.google.com/116211747541130660089/posts/f7kUWiAMzxj
  • http://thesimplecomputer.info/behind-the-curtain-of-encrypted-cloud-storage-page2/#wuala
 

internet bezpieczeństwo

Komentarze

0 nowych
Jaahquubel_   13 #1 13.11.2013 16:47

1. Tekst zaczął powstawać kilka dni temu, skończyłem dziś. Pomysł miałem już dawno, ale czasu nie miałem.
2. Jak zliczysz użytkowników posiadających ten sam plik? O jakich linkach mówisz? Masz wiedzę zerojedynkową: ktoś już miał taki plik, lub nie.
3. Nie pamiętam co napisałeś w tamtym wpisie. Jak dziś przeglądam internet, to widzę, że już rok temu można było dużo o deduplikacji w Wuala przeczytać. Nie rozumiałeś tłumaczeń Wuala, czy co?
4. Kluczem użytkownika szyfrowane jest konto i klucze do zawartości. Sama zawartość jest szyfrowana kluczem losowym (foldery, może inne klucze?) i kluczem ze skrótu (pliki). Dla każdego posiadacza tego samego pliku skrót pliku jest taki sam. Wuala zna jedynie inny skrót (otrzymany inną funkcją), który służy deduplikacji, a nie służy deszyfracji. Właściwy klucz, taki sam dla każdego użytkownika, jest na koncie danego użytkownika zaszyfrowany jego własnym kluczem. Miałem nadzieję, że opisałem to dość przejrzyście, ale sprawa jest dość zawiła i łatwo się zgubić.

Shaki81 MODERATOR BLOGA  38 #2 13.11.2013 21:10

Czyli Wuala taka bezpieczna nie jest, ale czy którakolwiek inna chmura (czy to z deduplikacją czy też bez) jest na prawdę bezpieczna - wątpię.

Frankfurterium   10 #3 13.11.2013 22:27

Takie "klonowanie" plików nie podoba mi się z kilku powodów:

1) Płacę XYZ za ABC przestrzeni, chociaż faktycznie zjmuję mniej. Nie byłoby uczciwiej powiadomić "Hej, mamy już ten plik, nie policzymy ci za niego"?
2) Po to wysyłam pliki jako "prywatne", żeby nikt nie miał do nich dostępu. A tu nie dość, że trafiają do innych (bez mojej wiedzy ani przyzwolenia), to jeszcze nie daj boże dystrybutor przyczepi się jakiejś zbłąkanej MP3 (chociaż wcale jej nie udostępniam).
3) Zbieżność sum kontrolnych to ekstremalnie rzadka sytuacja, ale spreparowanie takiego czegoś jest wykonalne. Zwykli zjadacze chleba nie powinni się niczego obawiać, ale nie takie ataki arabscy/izraelscy/amerykańscy/ruscy żołnierze odstawiali.

Jaahquubel_   13 #4 13.11.2013 23:35

@Fraknfurterium
2) Nikt nie ma dostępu do *Twoich* plików *prywatnych*. Jeśli są przez Ciebie wytworzone i mają treść Ciebie dotyczącą, to nie spodziewałbym się, żeby ktoś miał taki sam plik. W konkretnym przypadku Wuala, musiałaby nastąpić podwójna kolizja: raz, żeby drugi plik "podszył się" pod pierwszy, drugi raz, żeby pierwszy plik otworzyć kluczem do drugiego.

@Shaki81
Jeśli jest jakaś z szyfrowaniem po stronie klienta i bez deduplikacji, to może tak (jak pisze dwolsz na końcu ostatniego komentarza).

@dwolsz
"Wuala nie zna skrótu pliku a jego zawartość. To nie jest możliwe w użyciu z deduplikacją."
No to mi to objaśnił, bo jak na razie to w kółko powtarzasz spiskową teorię dziejów bez jakichkolwiek argumentów. Lubię teorie spiskowe, ale jeśli jest w nich jakiś punkt podparcia. Ty mi takiego nie dałeś.

We Wuala deduplikowane są zaszyfrowane pliki.

Jaahquubel_   13 #5 13.11.2013 23:39

"Wystarczy dostać się do serwera."
Jak nie ma deduplikacji, to też "wystarczy" dostać się do serwera.

stasinek   11 #6 14.11.2013 07:59

Nie rozumiem, zaszyfrowałeś ten wpis, a sprawa jest tak zamotana że prawdopowobnie "Wuala nie potrafiła sama wytłumaczyć dla czego jest tak a nie inaczej." bo również sie pogubili :P
Korzystam z Wuala - Jaahquubel_ mamy wspólne upodobania - Opera(ja już nie) i Wuala
Ja pożegnam ich ale z zupełnie innej przyczyny niż bezpieczeństwo.
Natomiast pogubiony nie wiem czy Wuala jest bezpieczna czy mit obalony, nadajecie szyfrem.
Mam nadzieje że przynajmniej was ktoś zdeduplikuje i rozszyfruje :P

Wuala jest darmowa a profil profesjonalny rokuje że zarabia na siebie i mam nadzieje taka pozostanie bez oferowania użytkownikom syfu albo okradania ich z prywatności, zatem intencja obroni przed zakusami robienia ludzi w bambuko, przechowuje dane na europejskich serwerach mi to pasuje bardziej niż amerykański,
w dodatku że niby na kilku we fragmentach.
Nie kombinowali z programem tak jak SugarSync v2, którego synchronizacja mobilna pozostawia wiele do życzenia. Podejrzewam że blog Hafida z Dubaju dawno przestał by działać :P http://lifeofastrangerwhostolemyphone.tumblr.com/

Poznałem Wuala za pośrednictwem dysku NAT marki LaCie Internet Space(wcześniej Edmini2) - super sprawa mieć chmure w domu i dysk świetny jak ktoś ma publiczne IP, od każdego innego odróżnia własnie ten fakt - nie musi być stałe IP i można sobie zrobić nawet 1TB swojej prywatnej chmury via LaCie Home
+ kaszka z mleczkiem dla laika to skonfigurować
Poza tym że sie popsuł było ok :D - magiczne dwa skróty bga i rosh :)
Ale podobno ichniejszy NAS jest dziurawy i już nie wiem czy jest cokolwiek na tym świecie bezpieczne.
Teraz Wuala niby wcale nie jest bezpieczna. Aaaaaaa
Archiwum X - nie ufaj nikomu

Jest jedno ale które wystawia na cierpliwość
program jest beznadziejnie powolny, beznadziejnie pieruńsko diabelsko powolny ślimak
Synchronizacja zużywa mase zasobów procesora, zawiesza sie, po jakimkolwiek bledzie np. program nie może skasować folderu wymaga restartu aplikacji lub restartu synchronizacji...i a piać od nowa ileż można czuwać nad nim jak nad dzieckiem.

Dropbox przy Wuala jest jak gepard, ale fakt że mam tam mniej plików
Katalogi lokalny i we wuali zsynchronizowany, jak zrzucam penem zawartość takiego na kolejnego kompa - z dropboxem - klikam merge, pomieli pomieli i wykorzysta lokalne pliki, z Wuala - zrobi mi sieczke na dysku i doda konfliktowe etykietki a pliki i tak pobierze z sieci...nie czaje.

Trzymam w niej internet(pobrane strony, kod) jak Chuck Norris na dyskietce.
Trzymam go i synchronizuje z kilkoma komputerami dla wygody - to takie moje LINE-IN
Trzymam wypakowane archiwa open source np. biblioteki pokroju boost dla Wuali to wyzwanie
Dropbox to moje LINE-OUT(projekty którymi chce sie podzielić)

Do Dysku Google 15GB mam zastrzeżenia, nie ufam googlowi jak psu.
Dlatego jest tam sporo wyselekcjonowanej pornografii co by mieli w razie czego przyjemność :>
Dropbox - może sobie być niebezpieczny wszystko co tam mam, ma być publiczne
Ale Wuala - zniose powolność, ale jeśli i oni podpisali pakt z diabłem
to komu można na tym swiecie ufać?

Chyba przeczytam biblie - jakiś nie wiem kto może od boga user wysłał mi zaproszenie i biblie w wersji elektronicznego programu...moze to znak?
Opera is dead, wuala...jak żyć w świecie Foxa Mulldera
i zachować spokój?
Mam plan wart miliony dolarów, za dwa lata zobaczycie go na własne oczy ;)
Obiecuje :)

stasinek   11 #7 14.11.2013 08:20

Kurde..mi to żadna zapora i szyfrowanie nie pomoże, bo plote o tajemnicach publicznie :P

mikolaj_s   14 #8 14.11.2013 13:47

@Jaahquubel_:
Tak jak opisujesz to deduplikacja nie ma prawa działać, bez możliwości odszyfrowania przez serwer. Nawet jeśli szyfrowany jest klucz, którym to jest zaszyfrowany plik, to drugiemu klientowi o tym samym pliku trzeba wysłać ten klucz, którego niby Wuala nie może sam odczytać ;)
Dziwnie też wygląda informacja, że Twoje hasło nie jest wysyłane na serwer, tylko sprawdzane w aplikacji. Może i fajnie, ale jeśli komuś uda się podstawić fałszywego klienta to może pobrać każdy plik.

Wszystko i tak opiera się na zaufaniu do usługodawcy, bo nawet klient jeśli nie sprawdzisz jego kodu to nie wiesz co na prawdę robi na Twoim komputerze i jakie dane dokładnie przesyła. Gdyby klient był otwartoźródłowy i pobierałbyś go od twórców Twojej dystrybucji byłoby najbezpieczniej.
Nie wiem czy można wierzyć firmie która zapewnia, że szyfruje pliki u klienta, a potem opisuje jak to ładnie używa deduplikacji, przy czym opis nie trzyma się kupy. Były już przypadki firm które w podobny sposób oszukiwały, co wypłynęło przy aferze Snowdena.

Jedyna możliwa deduplikacja jako tako bezpieczna jaka przychodzi mi do głowy to pocięcie plików na małe fragmenty, przesłanie na serwer i zakodowanie w zabezpieczonym pliku jakie części zostały użyte. Niestety wtedy pliki nie są zakodowane, choć ich odczyt jest utrudniony. Nie ma też możliwości wyeliminowanie szansy dla oprogramowania aby wiedzieć co jest w plikach. Możesz tylko ufać, że programiści tego nie wykorzystają.

Jaahquubel_   13 #9 14.11.2013 14:41

Ja pierniczę...
Mam wyjąć klocki i na klockach to tłumaczyć?! Czy na misiach?
Pliki nie są szyfrowane kluczem własnym!
Pliki nie są szyfrowane kluczem losowym!
Pliki są szyfrowane własnym skrótem!
Klient każdego użytkownika sam oblicza zadanym algorytmem skrót i tym skrótem plik szyfruje. Tak zaszyfrowany plik jest testowany na obecność duplikatu. Wiecie co? Można nawet policzyć skrót zaszyfrowanego pliku! I jeszcze raz go zaszyfrować. I jeszcze raz. I jeszcze... Do upadłego. Zaszyfrowany plik dalej jest plikiem, z którym można coś zrobić. To też jest ciąg bitów, wiecie?

"drugiemu klientowi o tym samym pliku trzeba wysłać ten klucz"
Nic mu się nie wysyła. Sam sobie liczy. Bo kluczem jest skrót!

"Właśnie Jaahquubel_ nie potrafii zrozumieć, że nie da się deduplikować zaszyfrowanych plików."
Gdzie jest błąd w powyższym rozumowaniu? Wskaż albo nie obrażaj mojej inteligencji.

A że sprawa opiera się na zaufaniu? Owszem! Tu się zgadzam.

A jak się przygotowywałem do tego wpisu, to doczytałem się, że Wuala dzieli większe pliki na kawałki po 4 MB i to jest osobno szyfruje, deduplikuje i trzyma na serwerze. Przydatne przy edycji takiego większego pliku - jest szansa zaoszczędzić na transferze.

mikolaj_s   14 #10 14.11.2013 21:35

@Jaahquubel_:
"Mam wyjąć klocki i na klockach to tłumaczyć?! Czy na misiach? "
Wybieram misie ;) Trochę to namieszane, a i same komentarze wprowadzają jeszcze więcej zamieszania. Ale misie pomogły i mniej więcej rozumiem podaną idee ;)

"Gdzie jest błąd w powyższym rozumowaniu? Wskaż albo nie obrażaj mojej inteligencji."

OK wygląda to sensownie, choć same szyfrowanie katalogów jest dość zagmatwane. Byle tylko nikt nie znalazł jakiegoś związku matematycznego między obydwoma skrótami. ;)
Rozumiem też skąd mogą się brać problemy z wydajnością. Skoro po dwa razy robi się skróty, szyfruje i po kilka razy komunikuje z serwerem to nie może to być tak szybkie jak w Dropboxie. Ale coś za coś.

  #11 29.11.2013 10:28

Świetny artykuł, sporo wyjaśnia komuś, kto zada sobie choć trochę trudu zrozumienia :)

Jaahquubel_   13 #12 29.11.2013 11:34

A dziękuję.