TL;DR;
Tak, nie interesują nas Twoje dane. Są one domyślnie szyfrowane na Twoim urządzeniu, co oznacza, że nasze serwery ani bazy danych nigdy ich nie widzą ani nie rejestrują.
Dane znajdują się na Twoim urządzeniu
Głównym założeniem Capitally jest to, że wszystkie Twoje dane są przechowywane na Twoim urządzeniu. Nasze serwery przechowują jedynie kopię projektu w celu synchronizacji między urządzeniami – możesz bez przeszkód zablokować te żądania.
Jedyną rzeczą, którą „widzimy”, jest to, z jakimi symbolami rynkowymi wchodzisz w interakcję – czego szukasz lub dla jakich aktywów pobierasz ceny – ale nie łączymy tych informacji z Twoim kontem.
Projekty są domyślnie szyfrowane
Poprzez szyfrowanie danych dążymy do ochrony przed:
- nieautoryzowanym dostępem do danych przechowywanych w naszych bazach przez pracowników, hakerów lub instytucje rządowe
- nieautoryzowanym dostępem na Twoim urządzeniu, o ile chronisz profil przeglądarki przed bezpośrednim dostępem lub nie wybierzesz opcji „zapamiętaj mnie” podczas logowania
Nie możemy chronić danych przed:
- atakami typu supply-chain/man-in-the-middle, w których napastnicy podmieniają nasz kod źródłowy
- nieautoryzowanym zapisem lub usunięciem danych w naszych bazach lub na urządzeniu klienta
- wykryciem aktywności w projekcie – metadane projektu, takie jak typ operacji i znaczniki czasu, nie są szyfrowane
Tryby szyfrowania
Podczas tworzenia projektu masz do wyboru szyfrowanie za pomocą:
- Hasła użytkownika – podczas logowania używamy
PBKDF2, aby wygenerować dwa hasła z tego, które wpisujesz, używając dwóch oddzielnych soli. Pierwsze hasło służy do uwierzytelniania – dzięki temu nasze serwery autoryzacji (Google Identity Platform) nigdy nie otrzymują wpisanego przez Ciebie hasła, więc nie jest możliwe wygenerowanie z niego drugiego hasła. To drugie hasło służy do zaszyfrowania (za pomocąAES-GCM) zestawu kluczy prywatnych, które zostaną użyte do szyfrowania projektu. Istnieje opcja bezpiecznego przechowywania tego klucza szyfrującego w przeglądarce, aby nie trzeba było go wpisywać ponownie. - Hasła projektu – działanie jak wyżej, z tą różnicą, że zostaniesz poproszony o oddzielne hasło do projektu, które posłuży do wygenerowania klucza szyfrującego.
- Klucza zdalnego – po zalogowaniu aplikacja pobiera klucz szyfrujący z serwera. Klucz nie jest przechowywany w bazie danych; zamiast tego jest generowany z połączenia poświadczeń użytkownika, soli oraz naszego własnego klucza prywatnego. Punkt końcowy (endpoint) jest odizolowany od innych i jako jedyny ma dostęp do klucza.
Każdy użytkownik projektu (obecnie może być tylko jeden, ale system jest gotowy na wprowadzenie udostępniania projektów) posiada zestaw kluczy prywatnych i publicznych (RSA-OAEP). Klucz prywatny jest szyfrowany wspomnianym wcześniej głównym kluczem szyfrującym. Służy on do deszyfrowania klucza współdzielonego (kolejny AES-GCM), który z kolei służy do szyfrowania/deszyfrowania danych projektu. W projekcie może istnieć wiele kluczy współdzielonych (np. dla każdego zestawu danych udostępnianych między tymi samymi użytkownikami).
Klucz publiczny służy do szyfrowania kluczy współdzielonych wydawanych użytkownikowi oraz do podpisywania wiadomości generowanych przez backend (np. nowe transakcje od brokera) – tak, aby tylko użytkownik mógł je odczytać.
Warto zauważyć, że po wpisaniu hasła nie jest ono nigdzie przechowywane ani przesyłane. Klucze szyfrujące mogą być przechowywane, ale nie można ich wyeksportować, co oznacza, że mogą być użyte do deszyfrowania danych, ale sam klucz nie może zostać odczytany – aplikacja dosłownie nie ma do niego dostępu.
Do wszystkich zadań związanych z szyfrowaniem, w tym do generowania liczb losowych, używamy webcrypto .
Czy kod jest open-source i czy został zweryfikowany?
Capitally jest projektem o zamkniętym kodzie źródłowym, ale aplikacja kliencka jest napisana w TypeScript, a cała obsługa danych odbywa się po stronie klienta. Całą komunikację sieciową można łatwo zweryfikować w narzędziach deweloperskich przeglądarki.
Podobnie jak w przypadku każdego oprogramowania, wszystko sprowadza się do zaufania. Musisz nam zaufać, że my (lub haker) nie zmienimy potajemnie tego kodu, aby wykraść klucze szyfrujące lub hasła.
Sami na tym polegamy
Zdecydowaliśmy się na wdrożenie szyfrowania end-to-end, ponieważ chcemy zachować prywatność własnych danych finansowych. Dokładamy wszelkich starań, aby tak pozostało.
Analityka i śledzenie błędów
Nie chcemy znać Twoich szczegółów finansowych, ale aby ulepszać aplikację i pomagać Ci w razie problemów, gromadzimy pewne dane o użytkowaniu, jeśli nam na to pozwolisz. W szczególności obecnie gromadzimy:
- Twoje ID użytkownika
- adres URL strony, który może zawierać ID aktywa
- adresy URL żądań sieciowych (które będą zawierać rynkowe ID aktywów)
- elementy, które klikasz (wyłącznie ich ID systemowe)
- komunikaty dziennika systemowego (które mogą zawierać rynkowe ID aktywów)
Jeśli nie wyrazisz zgody na identyfikację, nie będziemy przechowywać żadnych z wyżej wymienionych identyfikatorów. W takim przypadku rejestrujemy błędy oraz minimalne statystyki korzystania z funkcji w sposób całkowicie anonimowy, bez ID i szczegółowych logów.
Rzeczy, których nigdy nie gromadzimy:
- wielkość lub wartość Twoich inwestycji
- nazwy, notatki ani żadne teksty, które samodzielnie utworzysz
- własne źródła notowań