Czy moje dane są bezpieczne?

Dane przechowywane na Twoim urządzeniu

Podstawową zasadą Capitally jest to, że wszystkie Twoje dane są szyfrowane i przechowywane na Twoim urządzeniu. Nasze serwery przechowują jedynie kopię Twojego projektu do synchronizacji między urządzeniami, ale ponieważ tylko Ty masz dostęp do kluczy szyfrujących, nie możemy zobaczyć faktycznych danych — i nic się nie stanie, jeśli zablokujesz te żądania synchronizacji.

Jedyne, co „widzimy", to symbole instrumentów, z którymi wchodziłeś w interakcję — wyszukiwanych lub pobieranych cen — ale nie łączymy tego z Twoim kontem.

Capitally to również tracker portfela bez Plaid, Yodlee ani żadnego innego agregatora łączącego się z brokerami. Nie prosimy o Twoją nazwę użytkownika i hasło do brokera, nie czytamy Twojego rachunku bankowego. Importy odbywają się wyłącznie przez bezpośrednie przesłanie pliku (CSV/XLS/XML/JSON) lub ręczne wprowadzenie. To wybór podyktowany prywatnością, ale też precyzją — eksporty CSV od brokerów sięgają dnia otwarcia rachunku i zawierają działania korporacyjne, reinwestycje dywidend oraz konwersje FX, które agregatory zazwyczaj pomijają, a to właśnie te szczegóły decydują o dokładnym koszcie nabycia (i rozliczeniu podatkowym).

Projekty są domyślnie szyfrowane

Każdy projekt w Capitally korzysta z szyfrowania AES-256 po stronie klienta (AES-GCM) z kluczami wyprowadzonymi z Twojego hasła za pomocą PBKDF2 i zabezpieczonymi owijaniem kluczy RSA-OAEP. To szyfrowanie zero-knowledge: klucze szyfrujące nigdy nie opuszczają Twojego urządzenia, a nasze serwery przechowują wyłącznie szyfrogram.

Szyfrując Twoje dane, chronimy je przed:

  • nieautoryzowanym dostępem do danych przechowywanych w naszych bazach danych — ze strony pracowników, hakerów lub instytucji rządowych
  • nieautoryzowanym dostępem na Twoim urządzeniu — o ile chronisz profil przeglądarki przed bezpośrednim dostępem i nie wybierasz opcji „Zapamiętaj mnie" podczas logowania

Nie możemy natomiast chronić przed:

  • atakami typu supply-chain lub man-in-the-middle, w których atakujący podmieniają nasz kod źródłowy
  • nieautoryzowanymi zapisami lub usunięciami danych w naszych bazach lub na urządzeniu klienta
  • wykrywaniem aktywności w projekcie — metadane projektu, takie jak typ operacji (utworzenie, aktualizacja, usunięcie transakcji itp.) oraz znaczniki czasu (kiedy wprowadziłeś zmianę, a nie faktyczna data transakcji) nie są szyfrowane

Jak działa szyfrowanie

Tworząc projekt, masz do wyboru trzy tryby szyfrowania:

  1. Hasło użytkownika — gdy się logujesz, używamy PBKDF2, aby z jednego wpisanego hasła wyprowadzić dwa hasła, stosując dwie oddzielne sole. Pierwsze hasło uwierzytelnia Cię, dzięki czemu nasze serwery uwierzytelniania (Google Identity Platform) nigdy nie otrzymują wpisanego przez Ciebie hasła, a drugiego nie można z niego wyprowadzić. Drugie hasło szyfruje (za pomocą AES-GCM) zestaw kluczy prywatnych używanych do szyfrowania projektu. Możesz wybrać bezpieczne przechowywanie tego klucza w przeglądarce, aby nie trzeba było go wpisywać ponownie.
  2. Hasło projektu — tak samo jak powyżej, ale ustawiasz oddzielne hasło projektu, z którego wyprowadzany jest klucz szyfrujący, różne od hasła logowania.
  3. Klucz zdalny — po zalogowaniu aplikacja pobiera klucz szyfrujący z serwera. Klucz nie jest przechowywany w bazie danych; jest wyprowadzany na bieżąco z Twoich danych uwierzytelniających, soli i naszego własnego klucza prywatnego. Endpoint przechowujący ten klucz prywatny jest odseparowany od wszystkich pozostałych endpointów.

Każdy użytkownik projektu (system jest przygotowany na współdzielenie projektów, choć obecnie obsługiwany jest tylko jeden użytkownik) posiada parę kluczy RSA-OAEP. Klucz prywatny jest szyfrowany głównym kluczem szyfrującym opisanym powyżej i służy do odszyfrowywania kluczy współdzielenia (kolejny AES-GCM), które z kolei szyfrują i odszyfrowują dane projektu. W jednym projekcie może być wiele kluczy współdzielenia — np. po jednym dla każdego zestawu danych współdzielonych między tymi samymi użytkownikami.

Klucz publiczny służy do szyfrowania kluczy współdzielenia wydawanych użytkownikowi oraz do podpisywania wiadomości generowanych przez backend (np. nowych transakcji od brokera), tak aby tylko zamierzony użytkownik mógł je odczytać.

Po wpisaniu hasła nie jest ono nigdzie przechowywane ani wysyłane. Wyprowadzone klucze szyfrujące mogą być przechowywane w Twojej przeglądarce, ale są nieeksportowalne — mogą odszyfrować Twoje dane, ale sam materiał klucza nie może zostać odczytany, nawet przez kod aplikacji Capitally.

Hosting, RODO i rezydencja danych w UE

Capitally jest budowane w Europie dla inwestorów z całego świata i działa zgodnie z unijnym prawem o ochronie prywatności.

  • Hostowane w Europie. Wszystkie serwery i bazy danych znajdują się w europejskich centrach danych — Twoje zaszyfrowane dane nigdy nie opuszczają jurysdykcji europejskiej. Korzystamy z Google Cloud, Railway, Hetzner, MongoDB i Cloudflare.
  • Zgodność z RODO. Masz prawo do wyeksportowania i trwałego usunięcia swoich danych w dowolnym momencie; obie operacje są dostępne jednym kliknięciem w aplikacji, bez konieczności wysyłania e-maila.
  • Standardowa higiena serwerów branży na bazie szyfrowania end-to-end: HTTPS dla całego ruchu, szyfrowanie at rest, dostęp na zasadzie need-to-know w naszym zespole, uwierzytelnianie dwuskładnikowe i logi dostępu.
  • Brak zewnętrznych brokerów danych. Nie udostępniamy danych reklamodawcom, a żaden SDK analityczny nie ma dostępu do Twojego portfolio — możesz też całkowicie zrezygnować z analityki (zobacz Analityka i śledzenie błędów poniżej).

Czy kod jest otwartoźródłowy i zweryfikowany?

Capitally to projekt o zamkniętym kodzie źródłowym, ale aplikacja kliencka jest napisana w TypeScript, a wszelka obsługa danych odbywa się po stronie klienta. Całą komunikację sieciową można łatwo zweryfikować w narzędziach deweloperskich przeglądarki.

Jak w przypadku każdego oprogramowania, ostatecznie sprowadza się to do zaufania. Musisz nam zaufać, że my (ani haker) nie zmienimy potajemnie tego kodu i nie wykradniemy kluczy szyfrujących ani haseł.

Większość innych trackerów portfela opisuje siebie jako „zaszyfrowane na poziomie banku", co oznacza, że dostawca przechowuje Twoje klucze i może odczytać Twoje dane. Capitally jest szyfrowane end-to-end, co oznacza, że tylko Ty możesz odczytać swoje dane — nawet nasi inżynierowie nie mogą, z założenia.

Analityka i śledzenie błędów

Nie chcemy znać Twoich danych finansowych, jednak aby ulepszać aplikację i pomagać Ci w razie problemów, zbieramy pewne dane o sposobie korzystania z niej — jeśli nam na to pozwolisz. Zbieramy konkretnie:

  • Twoje ID użytkownika
  • URL strony, który może zawierać ID aktywa
  • URL żądań sieciowych (które będą zawierać ID aktywów rynkowych)
  • elementy, które klikasz (tylko ich systemowe ID)
  • systemowe komunikaty dziennika (które mogą zawierać ID aktywów rynkowych)

Jeśli nie zezwolisz nam na identyfikację, nie będziemy przechowywać żadnego z wymienionych powyżej ID. W takim przypadku rejestrujemy jedynie błędy oraz minimalne dane o użyciu funkcji — w całkowicie anonimowy sposób, bez ID ani szczegółowych logów.

Rzeczy, których nigdy nie zbieramy:

  • wielkość ani wartość Twoich inwestycji
  • nazwy, notatki ani żaden tekst tworzony przez Ciebie
  • niestandardowe źródła kursów