Bezpieczeństwo danych



Bezpieczeństwo w programie KDR

W celu zabezpieczenia danych użytkownika przed nieuprawnionym dostępem w programie KDR zastosowano kilka poziomów zabezpieczeń.

1. Logowanie do programu

Aby móc używać program i mieć dostęp do informacji w nim przechowywanych należy podczas uruchomienia podać login i hasło. Dane to są ustawiane przy pierwszym uruchomieniu programu i przechowywane w komputerze w postaci zaszyfrowanej. Intruz nie znający loginu lub hasła nie jest w stanie korzystać z programu. Dane te przesyłane też są do chmury (jeśli użytkownik pracuje w chmurze), co daje możliwość logowania i pracy na innych komputerach danego klienta.

2. Szyfrowanie plików

W odróżnieniu od wcześniejszych wersji programu KDR, obecna przechowuje wszystkie dokumenty jednostek w postaci zaszyfrowanej. Oznacza to, że dostęp do katalogu z danymi i próba ich otwarcia w zewnętrznych programach nie pozwala na poznanie ich rzeczywistej treści. Dokumenty odszyfrowywane są jedynie na czas ich podglądu/edycji w programie i ponownie szyfrowane podczas zapisu na dysk. Do szyfrowania stosuje się przemysłowego szyfru AES-256-CBF.

Klucz używany do szyfrowania składa się z min. 16 znaków i jest tworzony na podstawie hasła domyślnego zapisanego w programie KDR lub dodatkowo hasła użytkownika definiowanego na początku pracy z programem.

W przypadku korzystania z chmury pliki przesyłane są w takiej postaci w jakiej znajdują się na dysku, czyli zaszyfrowanej.

3. Hasło jednostek

Podczas tworzenia nowej jednostki użytkownik może nadać jej hasło, które będzie następnie wymagane podczas każdorazowego otwierania danej jednostki. Jest to dodatkowe zabezpieczenie, które w szczególności może być przydatne, jeśli jednostki współdzielone są w chmurze, ale nie wszyscy użytkownicy powinni mieć dostęp do wszystkich jednostek (tzw. idea chińskiego muru). Jeśli użytkownik pracuje indywidualnie z programem lub wszyscy użytkownicy powinni mieć dostęp do wszystkich współdzielonych jednostek, to ustawianie tego hasła nie jest potrzebne. Hasło nie powoduje zmiany klucza szyfrowania.

4. Przechowywanie danych w chmurze

Dokumenty jednostek przechowywanych w chmurze są zaszyfrowane (są wysyłane do chmury od razu w postaci zaszyfrowanej). Po stronie serwera (chmury) nigdy nie następuje ich odszyfrowanie. Oznacza to, że włamanie na serwer i pobranie danych nie przyniesie efektu w postaci danych użytkownika, ponieważ po stronie serwera hasło nie jest w ogóle przechowywane.

5. Komunikacja z serwerem

Komunikacja z chmurą odbywa się z użyciem protokołu https (http+SSL/TLS), który zapewnia dodatkowy poziom bezpieczeństwa, oferując szyfrowanie komunikacji między komputerem klienta a serwerem. Oznacza to, że zaszyfrowane przez program KDR pliki są dodatkowo zabezpieczone podczas samego transferu danych utrudniając ich przechwycenie.

6. Zabezpieczenia po stronie serwera

Dane w chmurze znajdują się na serwerach dostawcy usług chmurowych: nazwa.pl. Dostawca ten może pochwalić się wieloma certyfikatami bezpieczeństwa, co można wyczytać na stronie https://www.nazwa.pl/o-firmie/technologie/:

Bezpieczeństwo serwerów nazwa.pl gwarantowane jest przez zgodność z najwyższą klasą standardu ANSI/TIA 942 - TIER IV, Certyfikaty Bezpieczeństwa Przemysłowego II stopnia, Tajne NATO, Tajne UNIA, Tajne KRAJ, certyfikat bezpieczeństwa zgodny z normą ISO/IEC 27001:2013 HU 11/6162 oraz siedmiostopniową kontrolę dostępu.

Serwery nazwa.pl zasilane są w układzie 2N, zabezpieczone agregatami prądotwórczymi w układzie N+1, a cały tor zasilania każdego z urządzeń jest zdublowany, co daje gwarancję ciągłości pracy na poziomie 99,999%. Nad bezpieczeństwem przeciwpożarowym czuwa redundantny system gaśniczy oparty o system gaszenia gazem neutralnym dla ludzi, sprzętu i środowiska.

7. Klucz do szyfrowania jednostek

Klucz do szyfrowania jednostek podawany jest jednorazowo podczas aktywacji programu w czasie pierwszego uruchomienia.

Klucz jest dodatkowym zabezpieczeniem jednostek przechowywanych lokalnie i w chmurze. Klucz nie jest obowiązkowy, jego zagubienie spowoduje niemożność odzyskania danych. Niezależnie od podania klucza, przechowywane dane są zawsze szyfrowane. Nadanie klucza (tzw. tryb paranoidalny) spowoduje, że pliki znajdujące się w chmurze będą niemożliwe do odszyfrowania również przez autorów programu.

Uwaga: wszyscy użytkownicy, którzy będą wymieniać się danymi poprzez chmurę muszą podać ten mieć zdefiniowany taki sam klucz (podawany podczas pierwszego uruchomienia programu), lub nie posiadać żadnego.

8. Eksport/import jednostek

Program KDR umożliwia eksport jednostek w celach archiwizacyjnych lub przekazania ich innemu użytkownikowi. Eksport powoduje utworzenie pliku zaszyfrowanego archiwum w formacie 7-zip (*.7z). W celu wymiany jednostek między różnymi użytkownikami oraz między użytkownikami różnych klientów szyfrowanie odbywa się jednym (ukrytym) hasłem (o długości min. 16 znaków).

Zwiększenie bezpieczeństwa wiąże się zwykle z obniżeniem wygody. Np. wymóg podawania hasła. O ile prościej byłoby nie instalować zamków w drzwiach i nie musieć nosić kluczy.

Zasada działania chmury

Struktura danych na dysku

Dane jednostek przechowywane są na komputerze użytkowników. Dane każdej jednostki przechowywane są w osobnym katalogu. Np. w Windows 7 jest to domyślnie katalog: C:\Users\Public\Documents\KDR\01, gdzie ostatni podkatalog: 01 oznacza numer tożsamości (domyślnie 1).

Każdy katalog jednostki nazywa się tak, jak dana jednostka, czyli np. jednostka o nazwie e-storm.pl będzie w katalogu:

C:\Users\Public\Documents\KDR\01\e-storm.pl

Wewnątrz katalogu jednostki znajdują się podkatalogi zgodnie ze strukturą gałęzi w drzewku KDR. W katalogach znajdują się pliki KDR oraz pliki dołączone przez użytkownika. Nazwy plików KDR są takie same jak nazwy węzłów w drzewku KDR, natomiast nazwy plików dodanych przez użytkownika są zakodowane (składają się z przypadkowych znaków).

Szyfrowanie danych

Wszystkie pliki znajdujące się w katalogu jednostki (zarówno pliki KDR jak i pliki użytkownika) są zaszyfrowane szyfrem przemysłowym AES-256-CBF.

Klucz szyfrowania jednostek K1 jest zdefiniowany w programie i jego długość wynosi ponad 16 znaków. Do szyfrowania plików stosuje się klucz K2 będący funkcją skrótu SHA-256 z klucza początkowego K1 oraz dodatkowej “soli” SL. Klucz szyfrowania jednostek może być dodatkowo rozszerzony (poprzez konkatenację) o klucz zdefiniowany przez użytkownika KU jako klucz szyfrowania jednostek, podawany podczas pierwszej aktywacji programu.

Zatem klucz szyfrujący, to:

K2 = SHA-256(K1 + KU + SL)

gdzie: KU jest puste lub zdefiniowane przez użytkownika

Deszyfrowanie danych

Pliki deszyfrowane są tylko podczas ich otwierania. Deszyfrowanie odbywa się w pamięci komputera. Pliki KDR nie występują w postaci odszyfrowanej na dysku. Pliki użytkownika podczas otwierania w zewnętrznych programach muszą być odszyfrowywane na dysku. Ich zaszyfrowanie odbywa się po ich zamknięciu lub po zamknięciu danej jednostki.

Struktura danych w chmurze

Podczas wysyłania danych do chmury nie są one odszyfrowywane, zatem trafiają do chmury w takiej postaci jak były na dysku (zaszyfrowane). Pliki w chmurze przechowywane są na serwerze, podobnie jak lokalnie, jako pliki. Transfer odbywa się poprzez protokół https (http z użyciem protokołu SSL). Daje to dodatkowe zabezpieczenie podczas samego przesyłania.

Synchronizacja

Pierwsza wysyłka jednostki do chmury powoduje przesłanie wszystkich jej plików. Następne synchronizacje powodują wysyłkę jedynie tych plików, które są różne i to w tym kierunku, który spowoduje nadpisanie starych danych nowymi.

Zatem w chmurze (i lokalnie) przechowywane są również dane o dacie modyfikacji pliku. W celu szybkiego porównania plików zarówno w chmurze, jak i lokalnie przechowywane są również skróty plików w postaci funkcji skrótu SHA-1.

Konflikty

Każdy dokument jednostki ma swojego właściciela i tylko właściciel może edytować taki dokument. Ponieważ przyznawanie właścicielstwa dokumentowi, który jest współdzielony w chmurze powoduje natychmiastowe poinformowanie o tym chmury (i sprawdzenie, czy istnieje możliwość wywłaszczenia pliku), to jest to sposób zabezpieczenia przed dokonywaniem w dokumencie zmian przez więcej niż jedną osobę w tym samym czasie.

Istnieją oczywiście sytuacje, w której może dojść do konfliktu: jeśli jedna osoba przejęła dokument, a druga przed jego lokalną edycją nie pobrała informacji z chmury, że nie jest już jego właścicielem.

Dodawanie plików

Jeśli po jednej ze stron L (lokalnie) lub R (chmura) pojawi się nowy plik, którego brak po drugiej stronie, to jest on przesyłany w celu uzupełnienia braku. Ma to głównie miejsce w przypadku plików użytkownika.

Usuwanie plików

Usuwanie plików jest bardziej skomplikowane i wymaga nadania plikowi w chmurze znacznika usunięty. Wtedy każda strona synchronizująca otrzymuje polecenie usunięcia danego pliku. Ze względu na możliwe potencjalne szkody, usuwanie pliku będącego w chmurze wymaga podania kodu czerwonego.

Plików KDR (dostarczanych oryginalnie w drzewku) nie można usuwać (ani lokalnie ani zdalnie).

Jeżeli dodany do jednostki plik użytkownika nie został jeszcze wysłany do chmury, to użytkownik ma możliwość jego lokalnego usunięcia (nawet jeśli pozostałe pliki jednostki znajdują się w chmurze).

Blokada jednostki podczas synchronizacji

Łączność z chmurą została uzupełniona w zabezpieczenie przed powstaniem ew. kolizji spowodowanych jednoczesną synchronizacją danej jednostki przez więcej niż jednego użytkownika.

Przed rozpoczęciem synchronizacji sprawdzane jest, czy inny użytkownik nie prowadzi aktualnie synchronizacji danej jednostki. Jeśli tak, to na ekranie pojawia się odpowiedni komunikat. Po pewnym czasie ustalonym w programie, jeśli nadal jednostka jest blokowana, to użytkownik ma możliwość ją odblokować (przyjmując, że z jakiegoś powodu synchronizacja innego użytkownika nie zakończyła się powodzeniem, np. poprzez utratę łączności lub wyłączenie komputera podczas procesu). Po udanej synchronizacji dana jednostka jest odblokowywana w chmurze.