Brak centralnej bazy danych

31

Mam klienta, który chce zbudować stronę internetową / aplikacje mobilne / aplikacje komputerowe, które zajmują się bardzo wrażliwymi danymi (bardziej wrażliwymi niż dane bankowe / karty). Ze względu na wrażliwy charakter danych nie chcą zapisywać ich w centralnej bazie danych, ale nadal chcą, aby ich aplikacje synchronizowały się (powiedzmy, że dodałem trochę danych do mojej aplikacji mobilnej, a następnie chcę móc przejść do mojej aplikacja komputerowa i zobacz te same dane).

Nie mogę wymyślić przyjemnego, niezawodnego sposobu na zrobienie tego i nie jestem pewien, czy taki istnieje. Dlatego tu jestem. Czy ktoś wie, jak sobie poradzić z tymi danymi?

Jednym rozwiązaniem, o którym myślałem, było stworzenie bazy danych po stronie klienta dla każdej aplikacji, która w jakiś sposób zsynchronizowałaby się między aplikacjami. Widzę, że jest to bardzo niewiarygodne i robi się bałagan.

użytkownik2424495
źródło
2
Jeśli chcesz, aby dane zostały zsynchronizowane, nadal muszą one być gdzieś dostępne, aby można je było pobrać do aplikacji. Możesz podzielić dane na więcej baz danych, więc jeśli jedna z nich zostanie w jakiś sposób naruszona, nie wyciekną wszystkie twoje dane. Jeśli to zadowoli klienta, po prostu dodaj do aplikacji więcej połączeń z bazą danych i pobierz z nich dane.
Andy,
2
Czy to problem peer-to-peer? czy tylko 1 pulpit rozmawia z 1 smartfonem (dla każdej przestrzeni danych)?
ebyrob,
7
Możesz zapewnić poufność w bazie danych, szyfrując dane na serwerze za pomocą klucza, który jest znany tylko użytkownikowi.
Philipp
26
To brzmi jak schemat, o którym pomyślał ktoś, kto nie rozumie bezpieczeństwa. Ktokolwiek wymyślił ten wymóg, powinien sformułować pytanie dotyczące zabezpieczenia danych w Security.SE .
jpmc26,
4
@ user2424495: Jeśli dane muszą być dostępne za pośrednictwem strony internetowej, dane muszą być dostępne w miejscu, z którego twoja strona jest obsługiwana - zazwyczaj jest to serwer centralny. Lub musisz napisać wtyczkę do przeglądarki, która dostarcza dane po stronie klienta.
Bergi,

Odpowiedzi:

60

Wiele poufnych informacji jest przechowywanych w bazach danych. W rzeczywistości centralna baza danych jest prawdopodobnie najbezpieczniejszym sposobem przechowywania tych danych. Duże korporacyjne bazy danych mają mnóstwo funkcji do wykonywania takich czynności, jak szyfrowanie poufnych informacji, kontrolowanie, kto uzyskuje do nich dostęp, ograniczenie lub uniemożliwienie osobom, w tym DBA, przeglądania danych itp. Możesz mieć profesjonalnych ekspertów ds. Bezpieczeństwa monitorujących środowisko i profesjonalnych DBA nadzorujących tworzenie kopii zapasowych, więc że nie stracisz danych. Niemal na pewno znacznie łatwiej byłoby skompromitować dane przechowywane na urządzeniu mobilnym lub laptopie przypadkowego użytkownika niż przeniknąć do dobrze zaprojektowanej infrastruktury bezpieczeństwa i zagrozić właściwej centralnej bazie danych.

Możesz zaprojektować system z centralną bazą danych, która przechowuje tylko zaszyfrowane dane i przechowuje klucz prywatny użytkownika na urządzeniu użytkownika. W ten sposób, nawet jeśli centralna baza danych jest całkowicie zagrożona, dane mogą być używane tylko przez użytkownika. Oczywiście oznacza to, że nie można przywrócić danych użytkownika, jeśli zgubi on swój klucz (powiedzmy, że jedyna kopia była na telefonie, a telefon był uszkodzony). A jeśli ktoś naruszy klucz i przypuszczalnie swoje dane logowania, będzie mógł zobaczyć dane.

Justin Cave
źródło
24
@ user2424495 - Jeśli celem jest rzeczywiste bezpieczeństwo, prawie centralne przechowywanie danych wygrywa. Z marketingowego punktu widzenia może nie być twoją winą zaatakowanie czyjegoś telefonu. Ale z pewnością źle odbije się na aplikacji, jeśli wyjdzie wiadomość, że stosunkowo łatwo ją włamać (ponieważ systemy większości ludzi są bardzo słabo zabezpieczone). Wolę wytłumaczyć ludziom, że ich dane są przechowywane w postaci zaszyfrowanej przy użyciu zabezpieczeń klasy wojskowej, niż mieć nadzieję, że nie obwinią mnie, gdy ich słabo zabezpieczony telefon zostanie zhakowany.
Justin Cave,
27
To jedyna jak dotąd odpowiedź, która naprawdę odpowiada na pytanie i zapewnia najlepszy możliwy wynik bezpieczeństwa. Wymagania podane przez PO są absurdalne. Jeśli dane są tak wrażliwe, że pomysł, że dane są nawet dostępne w sieci publicznej, jest obraźliwe dla użytkowników, to pomysł aplikacji nie jest realistyczny. Kropka. Urządzenia klienckie nie są bezpieczne i nie można im ufać.
wałek klonowy
2
@mharr, jeśli baza danych przechowuje tylko zaszyfrowane dane (zaszyfrowane przed opuszczeniem urządzenia), nie ma znaczenia, co mówi orzeczenie sądowe, nie można go fizycznie odszyfrować bez kluczy szyfrowania, które posiada tylko użytkownik.
Richard Tingle,
9
@RichardTingle <tinfoil> Chyba że agencja rządowa już złamała szyfrowanie. </tinfoil>
Bob
3
Nigdy nie mówiłem, że problem nie jest „interesujący”, jak dotąd pytanie i odpowiedzi są bardzo intrygujące i prowokujące do myślenia. To jest właśnie pytanie, które sprawia, że ​​ta strona jest świetna. Naprawdę kwestionuję wymagania i niektóre założenia, które mogą być poczynione na temat danych. Mój paskudny przeczucie krzyczy do mnie, że te wymagania i założenia dotyczące znaczenia danych są zadumą obłudnej i samouwielbiającej firmy, która lubi się dobrze poinformowana i wnikliwa, ale w rzeczywistości
nadal
38

Musisz wykonać kopię zapasową kilku kroków i, w porozumieniu z klientem, opracować model zagrożenia . (Tak, to jest link do 600-stronicowej książki; tak, zdecydowanie polecam przeczytanie całości).

Model zagrożenia zaczyna się od zadawania pytań typu

  • Dlaczego aplikacja musi przede wszystkim przechowywać te wrażliwe dane?
    • Czy w ogóle możesz go nie przechowywać?
    • Czy można go wyrzucić po krótkim czasie?
    • Czy naprawdę musi być dostępny dla więcej niż jednego urządzenia?
    • Jeśli musi być dostępny na więcej niż jednym urządzeniu, czy musi być przechowywany na więcej niż jednym urządzeniu?
  • Kim są ludzie, którzy mogą zobaczyć wrażliwe dane każdego użytkownika?
    • Czy można skrócić tę listę?
  • Kim są ludzie, którzy mogą mieć kontakt z poufnymi danymi każdego użytkownika podczas wykonywania swoich zadań, ale nie muszą o tym wiedzieć?
    • Czy listę można skrócić?
    • Czy dane mogą być dla nich niedostępne bez uszczerbku dla ich zdolności do wykonywania pracy?
    • Jeśli to nie może być niedostępne, to czy może przynajmniej stać się niezrozumiałe? (To właśnie robi szyfrowanie, w skrócie: czyni dane niezrozumiałymi.)
  • Kim są ludzie, którzy chcą zobaczyć wrażliwe dane, ale nie mają pozwolenia?
    • Jakie możliwości muszą uzyskać przy danych?
    • Co chcą zrobić z danymi, gdy już je uzyskają?
    • Jak będą źli, jeśli nie dostaną tego, czego chcą?
    • Ile pieniędzy, czasu, cykli procesora i wysiłku ludzkiego są w stanie wydać?
    • Czy obchodzi ich to, czy ktoś wie , że widział dane?
    • Czy chcą uzyskać dostęp do poufnych danych określonych użytkowników , czy też zrobi to ktoś inny?
    • Co oni już wiedzą?
    • Do czego mają już dostęp?

Gdy poznasz odpowiedzi na te pytania, będziesz w znacznie lepszym miejscu, aby dowiedzieć się, co robić.

Pamiętaj, że na każdy zestaw pytań może przypadać więcej niż jedna odpowiedź, zwłaszcza na pytania dotyczące osób atakujących (osoby, które chcą poufnych danych, ale nie mogą ich mieć). Jeśli nie możesz wymyślić co najmniej pół tuzina różnych archetypowych napastników, z różnymi motywacjami, celami i zasobami, prawdopodobnie coś przegapiłeś.

Należy także pamiętać, że napastnicy, którzy powodują was (i / lub klient) najwięcej problemów, są najbardziej prawdopodobne, aby gigantyczną splash w mediach, czy ich atak się powiedzie, lub którzy mają największą ilość kruszywa szkody, prawdopodobnie są nie atakujący, którzy mogą wyrządzić największą szkodę indywidualnym użytkownikom, jeśli ich atak się powiedzie. Firma twojego klienta racjonalnie bardziej dba o zagregowane szkody, ale użytkownicy racjonalnie bardziej dbają o szkody dla siebie.

zwol
źródło
4
To tak naprawdę nie próbuje odpowiedzieć na pytanie ani obalić, ale to naprawdę niesamowita odpowiedź na pytanie, które nie zostało zadane.
wałek klonowy
11
@maple_shaft: Cóż, odpowiada na pytanie, które OP chciał zadać. Ponieważ pytanie może mieć problem z XY , wydaje się to dobrą odpowiedzią.
śleske,
8

Jedną z opcji wykonania synchronizacji byłoby wykonanie połączenia peer-to-peer. Będzie to nadal wymagało centralnego serwera, ale ten serwer nie obsłuży żadnych danych.

Gdy urządzenie przechodzi w tryb online, serwer centralny otrzymuje powiadomienie o identyfikatorze użytkownika. Kiedy drugie urządzenie tego samego użytkownika przechodzi w tryb online, serwer wysyła obu urządzeniom adresy IP drugiego. Urządzenia mogą następnie wymieniać dane bezpośrednio. Zastrzeżenie: jedno urządzenie musi działać jako serwer, więc co najmniej jedno nie może znajdować się za routerem NAT.

Nie zapominaj, że będziesz potrzebował silnego uwierzytelnienia i szyfrowania zarówno dla mechanizmu powiadomień, jak i dla wymiany peer-to-peer.

Philipp
źródło
1
Wygląda na to, że wymagany byłby również schemat wersjonowania, aby uniknąć przesyłania wszystkich danych w obie strony przez oba urządzenia ...
ebyrob,
Wymiana p2p byłaby świetnym rozwiązaniem, gdyby nie potrzeba niepotrzebnego narzucania konfiguracji użytkownikowi końcowemu, co moim zdaniem sprawiłoby, że korzystanie z aplikacji byłoby mniej przyjazne dla użytkownika. Następnie pojawia się pytanie, czy klient chce wybrać między wrażliwością na dane a kłopotem przy konfigurowaniu aplikacji, co zależy w dużej mierze od tego, jak dokładnie wrażliwe są dane i na ile dbają użytkownicy.
Andy,
1
@DavidPacker przy założeniu, że konfigurujesz i utrzymujesz pierwszy serwer, jakie są dodatkowe kroki konfiguracji?
ebyrob,
@ebyrob Być może jestem źle zrozumiany, ale rozumiem, że serwer dostarczony przez twórcę aplikacji nie zawiera niczego poza procedurą synchronizacji p2p. Ale dane muszą być pobierane przez ten serwer z jednego z urządzeń klienta - a klient musi udostępnić siebie lub swoje dane - oto konfiguracja, o której mówiłem.
Andy,
1
@David, Philipp sugeruje wymianę poufnych danych w sieci peer-to-peer, nie wysyłając ich do centralnego serwera ani nawet przez niego. Serwer centralny jest tylko po to, aby ułatwić jednemu z partnerów znalezienie drugiego. wtedy znika z drogi.
Erik Eidt,
5

Spraw, aby był to problem kogoś innego.

Przechowuj dane lokalnie w każdej aplikacji, a następnie daj użytkownikom opcję włączenia synchronizacji przy użyciu własnego konta z usługą innej firmy (Dropbox, Dysk Google itp.). Pomyśl także o zaszyfrowaniu wszelkich danych przesyłanych do usługi innej firmy (są w tym plusy i minusy).

Daje to wrażenie, że użytkownicy są właścicielami własnych danych, ponieważ muszą włączyć synchronizację danych. To sprawia, że ​​aplikacje są przydatne dla osób, które nie chcą udostępniania. Sprawia to, że ktoś inny jest odpowiedzialny (technicznie i potencjalnie prawnie) za ciągłe problemy związane z utrzymywaniem bezpieczeństwa wszystkich udostępnianych danych.

James Mason
źródło
1

Wydaje się, że zmartwienie klienta dotyczy widoczności tych danych. pierwsze pytanie, jakie należy zadać klientowi, to czy dane zostały zaszyfrowane, gdzie można je przechowywać? Następnie zapytaj klienta, jakie rodzaje kontroli dostępu chcą wprowadzić, zanim dane będą mogły zostać odszyfrowane i przetworzone - gdzie można przechowywać klucz deszyfrujący? czy jest oddzielny klucz dla użytkownika? itp...

Jeśli klient nie chce, aby dane były nigdzie przechowywane, czy chce, aby użytkownik wprowadzał je za każdym razem?

Michael Shaw
źródło