Czy moje dane są bezpieczne?

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ą:

  1. 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.
  2. 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.
  3. 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.

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.

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ń