Secret Key
Wielowarstwowy system ochrony bazy haseł zaprojektowany tak, aby w sytuacji kryzysowej wyznaczone osoby mogły bezpiecznie przejąć kontrolę nad kontami cyfrowymi właściciela przy jednoczesnej ochronie przed nieautoryzowanym dostępem za jego życia.
Czym jest Secret Key?
Każdy z nas przechowuje dziesiątki haseł — do banków, mediów społecznościowych, poczty, subskrypcji. Co się z nimi stanie po naszej śmierci? Rodzina zostaje odcięta od kont, nie może anulować subskrypcji, zamknąć kont, odzyskać pieniędzy.
Secret Key rozwiązuje ten problem, tworząc bezpieczny plan awaryjny: główne hasło do bazy haseł jest podzielone kryptograficznie między wyznaczone, zaufane osoby. Żadna z nich nie zna hasła samodzielnie — dopiero wspólnie, w uzgodnionym momencie, mogą je odtworzyć.
System chroni właściciela za życia — każda próba dostępu wymaga weryfikacji SMS, a sam sekret nigdzie nie jest zapisany w całości. Dostęp bez wiedzy właściciela jest niemożliwy.
Krok po kroku
W sytuacji kryzysowej wyznaczone osoby wykonują cztery kroki — od zebrania się, przez logowanie, po uzyskanie dostępu do bazy haseł.
Dowolny format przekazania
Wygenerowane udziały można przekazać wybranym osobom w dowolnej formie — wydruk na kartce, plik PDF lub autorska karta plastikowa. Niezależnie od formatu, każdy nośnik powinien zawierać te same cztery elementy.
Flow systemu
Użytkownik przechodzi przez kolejne warstwy weryfikacji zanim uzyska dostęp do chronionych zasobów. Każdy etap — od hasła, przez SMS, po rekonstrukcję sekretu — musi zostać pomyślnie ukończony.
Opis modułów
System składa się z czterech kluczowych modułów — każdy odpowiada za odrębną warstwę działania. Razem tworzą kompletny przepływ: od logowania, przez weryfikację, po odszyfrowanie sekretu.
Strona logowania z wieloma warstwami ochrony. Sprawdza poprawność hasła, blokuje nadmierne próby i zabezpiecza przed fałszywymi żądaniami CSRF.
Drugi etap weryfikacji — jednorazowy kod SMS ważny 10 minut. Liczba prób ograniczona, możliwość zapamiętania urządzenia na 7 dni.
Panel dostępny po pełnej weryfikacji. Łączy udziały Shamira i odtwarza hasło lokalnie w przeglądarce — dane nie trafiają na serwer.
Narzędzie offline do konfiguracji i podziału sekretu. Bez połączenia z serwerem, bez instalacji — czysty HTML + JS uruchamiany lokalnie na komputerze właściciela.
Shamir Secret Sharing
Algorytm podziału sekretu na dowolną liczbę udziałów — do odtworzenia potrzeba minimalnej wymaganej ich liczby. Żaden pojedynczy udział nie ujawnia sekretu.
Sekret jest używany jako wyraz wolny wielomianu nad ciałem GF(2⁸). Każdy udział to punkt na tym wielomianie — znając wymaganą liczbę punktów można go jednoznacznie odtworzyć interpolacją Lagrange'a.
System używa biblioteki secrets.js (tej samej co iancoleman.io/shamir) — format udziałów jest w pełni kompatybilny. Szyfrowanie i deszyfrowanie odbywa się całkowicie po stronie klienta (JavaScript).
Posiadanie niewystarczającej liczby udziałów nie daje żadnej informacji o sekrecie (information-theoretic security). Dodany padding 1024 bitów uniemożliwia ataki na małe sekrety.
Warstwy ochrony
System łączy kilka niezależnych mechanizmów bezpieczeństwa — kompromitacja jednej warstwy nie daje dostępu do systemu. Każdy etap weryfikacji działa autonomicznie, tworząc ochronę przed różnymi wektorami ataku.
Hasła są przechowywane w postaci jednokierunkowych skrótów kryptograficznych — niemożliwych do odwrócenia. Nawet uzyskanie dostępu do pliku konfiguracyjnego systemu nie ujawnia oryginalnych haseł. Weryfikacja jest odporna na ataki czasowe.
Każda akcja przesyłania danych wymaga unikalnego tokenu bezpieczeństwa powiązanego z sesją użytkownika. Uniemożliwia to wykonanie nieautoryzowanych operacji przez osoby trzecie z innych stron internetowych.
Trójwarstwowa ochrona przed atakami słownikowymi: maksymalnie 3 próby logowania na adres IP, 3 próby na konto użytkownika w ciągu 15 minut oraz 3 błędne kody weryfikacyjne SMS w ciągu godziny. Każde zablokowanie jest rejestrowane.
System może zapamiętać zaufane urządzenie na 7 dni, eliminując konieczność każdorazowej weryfikacji SMS. Token identyfikujący urządzenie jest przechowywany poza katalogiem publicznym serwera i automatycznie wygasa po upływie terminu.
Sesja użytkownika wygasa automatycznie po 30 minutach nieaktywności. Po każdej udanej weryfikacji identyfikator sesji jest odnawiany, co zapobiega atakom polegającym na przechwyceniu sesji. Każde logowanie generuje powiadomienie e-mail do właściciela.
Jednorazowy kod 6-cyfrowy jest generowany kryptograficznie i wysyłany SMS-em. Kod jest ważny przez 10 minut, a między kolejnymi wysyłkami obowiązuje 60-sekundowy odstęp. Numer telefonu odbiorcy jest maskowany w interfejsie.
Często zadawane pytania
Odpowiedzi na najważniejsze pytania dotyczące systemu Secret Key.