DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Korzystając z internetu i komputerów, mamy coraz więcej haseł. Są to hasła i loginy do skrzynki pocztowej, do Skype'a, do witryn, na których się zarejestrowaliśmy (VKontakte, koledzy z klasy itp.), A bardziej zaawansowani użytkownicy również używają haseł do różnych programów, haseł do FTP, kluczy licencyjnych i to lista może być kontynuowana przez długi czas. Im więcej mamy haseł (oczywiście również logowań do nich), tym bardziej oczywiste jest, że potrzebujemy dla nich pewnego rodzaju niezawodnego przechowywania. Oczywiście możemy stworzyć dokument .txt i wszystko tam zapisywać i przechowywać. Może czytając te wersety, myślisz: „Po prostu to robię, dlaczego jest źle?” Może nieźle, ale nie jest to wygodne, a istnieje lepszy sposób przechowywania haseł. Jestem pewien, że ci się spodoba. Tak jest za pomocą menedżera haseł o nazwie KeePass... Jakie są jego zalety?

1) Wszystkie Twoje hasła znajdują się w programie, który jest niezawodnie chroniony hasłem przed włamaniem, a jednocześnie są szyfrowane algorytmem AES (128-bitowy szyfr blokowy z użyciem 256-bitowego klucza). Wchodząc do programu, musisz podać hasło, w przeciwnym razie nie uzyskasz dostępu. Zaleca się, aby hasło miało co najmniej 20 znaków, jeśli osoba atakująca chce odgadnąć takie hasło, będzie potrzebować dziesięcioleci; mało kto będzie zainteresowany odgadywaniem tak długiego hasła;
2) Wygodny interfejs programów, możesz łączyć grupy w hasła (na przykład grupa „ Portale społecznościowe", Grupa" Poczta ");
3) Funkcja automatycznego wybierania numeru - program może automatycznie wprowadzić nazwę użytkownika i hasło;
4) Przenośna wersja KeePass umożliwia wygodne przenoszenie wszystkich haseł przy sobie na dysku flash USB;
5) KeePass ma generator haseł, więc teraz nie musisz ich samodzielnie wymyślać. Generator haseł zawiera również dodatkowe ustawienia, umożliwiając określenie, które znaki mają być używane, a których nie, i ile razy mają się pojawiać w jednym haśle.

To są główne korzyści. Przyjrzyjmy się teraz, jak pracować z programem KeePass. Zacznijmy od zainstalowania i zrusyfikowania KeePass. (Pobierz KeePass na końcu tego artykułu)... Instalacja jest intuicyjna, więc nie będziemy się nad nią rozwodzić. Po instalacji program należy zrusyfikować. Aby to zrobić, w pobranym archiwum znajdź plik „Russian” i skopiuj go do folderu z zainstalowany program... Zwykle ścieżka to „C / Programm Files / KeePass Password Safe”. Ale może istnieć inny sposób, w zależności od ustawień.

Następnie uruchamiamy program. Przy pierwszym uruchomieniu pojawi się takie okno:

Jesteśmy pytani, czy włączyć automatyczna aktualizacja... Oczywiście trzeba to zrobić, dlatego wybieramy pierwszą opcję: „Włącz (zalecane)”. Zobaczymy główne okno programu:

KeePass jest nadal w języku angielskim i musisz ukończyć rusyfikację. Aby go zakończyć, przejdź do: Wyświetl / Zmień język. Zrzut ekranu:

Tutaj wybieramy rosyjski

W ten sposób KeePass jest zrusyfikowany.

Teraz zacznijmy tworzyć naszą bazę haseł. Aby to zrobić, naciśnij: Plik / Nowy lub po prostu Ctrl + N.

Podaj nazwę naszej bazy danych i kliknij „Zapisz”. Zwróć uwagę na to, gdzie zapisujesz bazę haseł, ponieważ od teraz wszystkie Twoje hasła będą tutaj przechowywane. Na przykład, jeśli chcesz przenieść Bazę haseł na inny komputer, będziesz musiał skopiować ten plik. Mogą zaistnieć inne sytuacje, w których będziesz potrzebować pliku bazy danych haseł. Dlatego przechowuj go w łatwo dostępnym miejscu. Weź to ważny punkt niezwykle ostrożnie.

Tutaj musimy wymyślić główne hasło, które będzie używane podczas wchodzenia do programu. Musi mieć co najmniej 20 znaków, jak wspomniano na początku artykułu. Nie należy używać hasła zawierającego mniej niż 20 znaków; nie oszczędzaj na liczbie znaków w haśle. Teraz będzie to jedyne hasło, które musisz zapamiętać, inne zostaną zapisane w programie. Zaznacz także pole obok "Plik klucza", bez niego nawet znając hasło nie będziesz mógł wejść do programu. Ten krok utrudni złamanie bazy danych haseł, jeśli ktoś spróbuje to zrobić. W ten sposób KeePass go chroni. Kliknij „Nowy”.

Tutaj ustawiamy nazwę pliku klucza i zapisujemy go. Pamiętaj, gdzie go zapisujesz. Plik bazy danych haseł i plik klucza - są to dwa główne pliki wymagane do wejścia do bazy haseł. Nie możesz ich zgubić, w przeciwnym razie nie będziesz mógł odzyskać dostępu do haseł zapisanych w KeePass.

W tym oknie musisz wygenerować liczby losowe. Chociaż brzmi to skomplikowanie, jest to bardzo proste. Przesuń kursor myszy na szary obszar, aby wygenerować liczby losowe. „Ile czasu zajmuje przesuwanie myszy nad szarym obszarem?” - ty pytasz. Zwróć uwagę, że na dole znajduje się pusty obszar (druga strzałka wskazuje na to). Poruszaj myszą w losowej kolejności, aż ten obszar zostanie zapełniony.

Jaki powinien być wynik? Zobacz zrzut ekranu:

Widzimy, że liczba bitów wynosi 256, co oznacza, że \u200b\u200bzrobiliśmy wszystko dobrze i teraz klikamy „OK”. Nasz klucz jest gotowy!

Teraz również tutaj wszystko jest gotowe. Kliknij OK".

W oknie „Utwórz nową bazę haseł” kliknij „OK”.

Wszystko jest gotowe, a na zrzucie ekranu możemy zobaczyć, jak wygląda KeePass.

Jak wspomniano na początku artykułu, w tym programie hasła można sortować w grupy. W nim domyślnie utworzono już grupy do przechowywania haseł i rekordów haseł testowych. Grupy po lewej i hasła po prawej. Oczywiście nie potrzebujemy zapisów z testów. Usuwamy je.

Usuwamy również grupy. Jeśli grupy, które już istnieją, Ci odpowiadają, możesz zostawić je w spokoju. Usuniemy istniejące grupy i utworzymy inne, nowe. Aby usunąć grupę, kliknij ją prawym przyciskiem myszy i wybierz element „Usuń grupę”.

Tak więc grupy zostały usunięte, a teraz tworzymy nowe. Aby to zrobić, przejdź do Edytuj / Dodaj grupę

Wprowadź nazwę grupy. Niech w tej grupie będziemy przechowywać hasła do naszych skrzynek pocztowych. Nazwijmy tę grupę haseł - „Poczta”. Zrzut ekranu:

Jak widać, utworzyliśmy grupę haseł o nazwie „Poczta”. Dobrze dobrana nazwa ułatwia zrozumienie, do czego odnoszą się przechowywane tam hasła. Wniosek: podaj jasne nazwy, a znajdziesz wymagany wpis łatwiej i szybciej.

Następnym zadaniem jest dokonanie wpisu w grupie. Jak można się domyślić, rekord będzie zawierał login i hasło do poczty, a także kilka innych przydatnych rzeczy. Porozmawiajmy o nich trochę dalej. Na razie zobaczmy, jak dodać wpis do grupy. Aby to zrobić, przejdź do „Edytuj / Dodaj rekord ...”

Otworzyliśmy okno „Dodaj rekord”

Wypełniamy formularz, 1) wymyślamy nazwę dla wpisu, 2) nazwa jest loginem, 3) kasujemy hasło, które już istnieje i wpisujemy to, którego używamy do poczty, możesz również ustawić link do strony, na której będziesz musiał podać swój login i hasło oraz napisz więcej i komentarze. W komentarzach możemy wskazać odpowiedź pytanie bezpieczeństwa lub inne dane, które podaliśmy podczas rejestracji, ogólnie wszystko, czego potrzebujemy. Oto przykład:

Tak wygląda utworzony post.

Nawiasem mówiąc, login (w KeePass nazywa się to Nazwa) można ukryć gwiazdkami, tak jak ukryte jest hasło. Aby to zrobić, przejdź do zakładki Widok i wybierz odpowiednią pozycję.

Podsumujmy wykonaną pracę. Dodaliśmy jeden wpis i to wystarczy, aby zrozumieć, jak przebiega ten proces. Teraz w podobny sposób prześlesz wszystkie swoje hasła do tego programu. W ten sposób stworzysz swoją bazę danych i będziesz mógł wygodnie i szybko znaleźć kombinacje nazw użytkowników i haseł, których potrzebujesz.

Jak mogę teraz „wyciągnąć” login i hasło z rekordu? Kliknij wpis prawym przyciskiem myszy. Zobacz zrzut ekranu:

Pojawiło się menu. Po dokładnym zapoznaniu się z nim widać, że można skopiować nazwę, skopiować hasło, zmienić i usunąć wpis. To są najbardziej podstawowe funkcje. Ale jest jeszcze jeden bardzo przydatna funkcjao nazwie „Rozpocznij automatyczne wybieranie”. Jak tego użyć? Najpierw umieść kursor w polu logowania w formularzu na stronie, a następnie przejdź do rekordu i wybierz „Rozpocznij pisanie automatyczne”. Program automatycznie wprowadzi Twoją nazwę użytkownika i hasło.

Kolejną przydatną rzeczą, którą ma KeePass, jest generator haseł. Co to jest i dlaczego jest potrzebne, mam nadzieję, że wszyscy to rozumieją. Jest na karcie narzędzi. Wszystko jest tam intuicyjnie jasne, myślę, że łatwo będzie to zrozumieć.

To może być skończone. Najlepsze życzenia dla Ciebie.

Czy można w jakiś sposób zhakować KeePass i scalić hasła?

Jeśli ktoś nie wie, czym jest KeePass, to w skrócie jest to program do zarządzania hasłami, który umożliwia zapamiętanie jednego hasła głównego. Możesz przeczytać więcej o menedżerach haseł na naszej stronie internetowej.

Do niedawna zhakowanie KeePass było niemożliwe, ale kilka dni temu pewien Denis Andzakovic zamieścił w sieci darmowe narzędzie KeeFarce, który umożliwia napastnikowi kradzież haseł z popularnego menedżera haseł.

Możesz pobrać KeeFarce bezpłatnie pod tym bezpośrednim linkiem.

Hakowanie KeePass za pomocą KeeFarce

Aby złamać menedżera haseł KeePass i połączyć hasła, musi być otwarty, tj. aby użytkownik zalogowany hasłem głównym nie zamykał programu przez jakiś czas.

KeeFarce jest bardzo łatwy w użyciu. Po prostu skopiuj pliki do folderu KeePass:

  • BootstrapDLL.dll
  • KeeFarceDLL.dll
  • Microsoft.Diagnostic.Runtime.dll

I uruchom plik wykonywalny KeeFarce.exe


Po uruchomieniu program wstrzykuje do uruchomiony proces KeePass. Następnie narzędzie wyeksportuje wszystkie hasła do csv do folderu danych aplikacji.

Jak chronić się przed włamaniami do KeePass

Przede wszystkim sprawdź swój komputer pod kątem trojanów (), ponieważ ten schemat można zaimplementować, jeśli atakujący ma zdalny dostęp do komputera lub uzyskaj fizyczny dostęp, pozostawiając otwartego menedżera haseł na krótką chwilę z dala od komputera.

Po drugie, i co najważniejsze, nie zostawiaj menedżera haseł otwartego przez dłuższy czas. Weszliśmy do programu, wyciągnęliśmy wymaganą nazwę użytkownika i hasło, zalogowaliśmy się do serwisu i natychmiast zamknęliśmy menedżera. Możesz przeczytać więcej o prawidłowej konfiguracji KeePass w artykule „“. Nawiasem mówiąc, mówiłem tam o tym zagrożeniu i radziłem skrócić czas automatycznego zamykania programu w czasie bezczynności, jeszcze zanim pojawiło się to narzędzie.

A co z innymi menedżerami haseł?

Ta luka (nie to konkretne narzędzie) może również służyć do kradzieży haseł z innych programów do przechowywania haseł. Myślę, że wkrótce pojawi się duża liczba takich narzędzi, zarówno osobnych, jak i wbudowanych w różne złośliwe programy.

Czy powinieneś przestać używać menedżerów haseł?

Ty decydujesz. Osobiście uważam, że przy właściwym użytkowaniu KeePass i odpowiedniej higienie komputera nie powinno być problemu.

W jednym z poprzednich filmów mówiłem już o programie do bezpiecznego przechowywania haseł. Ale w wyniku pewnych eksperymentów okazało się, że przechowywanie w nim haseł nie jest tak bezpieczne, ale dotyczy to klasycznej wersji programu. Dlatego w tym filmie rozważymy profesjonalną wersję KeePass. Co więcej, jest tak samo darmowy, jak wersja klasyczna. Jeśli po raz pierwszy słyszysz o tym programie, radzę najpierw przyjrzeć się mojej recenzji klasycznej wersji, aby nie mieć niepotrzebnych pytań.

A więc, co zrobimy w tej lekcji:

Zacznijmy łamać klasyczną wersję KeePass Password Safe za pomocą Key loggera;

Bazę importujemy z wersji klasycznej do profesjonalnej;

Rozważmy główne różnice i innowacje;

Spróbujemy włamać się do profesjonalnej wersji Key loggera.

Przede wszystkim przejdźmy do strony twórców programu www.keepass.info \\ download. Obie wersje pobieramy w formacie przenośnym, ponieważ bazę danych z hasłami noszę na pendrive, program do ich przeglądania należy również uruchomić z pendrive'a, bez instalowania go w systemie operacyjnym.

Zrobiłem to już, a także stworzyłem testową bazę danych dla wersji klasycznej. Na ten moment, W moim systemie działa oprogramowanie szpiegujące LanAgent. Ten program należy do Key loggers, tj. programy, które rejestrują wszystkie działania użytkownika na komputerze. Więc teraz dowiemy się, jak niezawodny ten program chroni nasze hasła!

Uruchamiamy wersję klasyczną i otwieramy w niej utworzoną bazę danych, wpisujemy hasło do bazy i logujemy się do serwisu Rutracker.org.

Zobaczmy teraz, co LanAgent był w stanie przechwycić, zaktualizuj dzienniki i zobaczmy, że program przechwycił zarówno klucz główny, jak i login i hasło do witryny Rutracker. Nawet jeśli spróbujemy wprowadzić dane przez schowek, program przechwyci również zawartość schowka. Z drugiej strony hasło do bazy danych jest bezużyteczne, jeśli atakujący nie ma do czego go zastosować, tj. podstawa znajduje się na naszym pendrive. Ale w tej sytuacji programy mogą tło skopiuj zawartość pendrive'a lub plików, do których uzyskano dostęp, a zatem niezauważona przez nas baza danych może zostać skopiowana, a wszystkie hasła otwarte za pomocą klucza głównego!

Ogólnie możemy wyciągnąć następujący wniosek, wersja klasyczna jest odpowiednia, aby nie przechowywać haseł w postaci zwykłego tekstu, ale w przypadku korzystania z oprogramowania szpiegującego nie pomoże. Aby pozbyć się tej luki, pomoże nam wersja profesjonalna!

1) Rusyfikuj program w celu wygodniejszej pracy ( www. keepass. info \ Tłumaczenia \ Rosyjski \\ 2.28 \\ rozpakuj go do folderu z programem \\Widok \ Zmiana Język \ Rosyjski)

2) Utwórz nowa baza (Plik \\ Nowy \\ Określ ścieżkę i nazwę \\ Określ główne hasło)

3) Przeniesiemy dane ze starej bazy danych, aby nie sterować wszystkim ręcznie ( Plik \\ Importuj \\KeePass 1. x \\ Określ ścieżkę do starej bazy danych \\ OK \\ Wprowadź hasło do bazy danych \\ Nowe identyfikatory)

Przyjrzyjmy się teraz, co nowego i interesującego w tej wersji. Nie będę rozważał wszystkich nowości, zajmie to dużo czasu, ale skupię się na najbardziej, moim zdaniem, ciekawych:

1) Wprowadzenie hasła głównego w trybie chronionym, co pozwala na zablokowanie działania Loggera kluczy podczas wpisywania hasła głównego ( Serwis \\ Ustawienia \\ Bezpieczeństwo \\ Wprowadź hasło główne w trybie chronionym)

2) Generator haseł generuje 30 haseł naraz, zgodnie z wybraną złożonością. Z którego możesz wybrać Twoim zdaniem najtrudniejszy.

3) Język automatycznego pisania jest łatwiejszy w użyciu niż wersja klasyczna. Nie mówiłem o tym w recenzji klasycznej wersji, więc zobaczmy, jak to może pomóc!

Domyślnie podczas automatycznego wprowadzania wyzwalana jest następująca sekwencja poleceń. Login, TAB, hasło i ENTER są wpisywane w aktywnym polu. Tę sekwencję można zobaczyć, jeśli otwórz wpis \\ Automatyczne wybieranie \\ Użyj następującej sekwencji... I ta opcja pasuje w większości przypadków, jak zbliża się do wejścia do rutrackera.

Jednak nie nadaje się do logowania się do poczty za pośrednictwem strony internetowej www.mail.ru. Ponieważ moje pudełko testowe nie znajduje się na mail.ru, ale bk.ru, to dla tej witryny możesz wprowadzić indywidualny algorytm wejściowy (NAZWA UŻYTKOWNIKA) (TAB) (HASŁO) (TAB) (DÓŁ) (DÓŁ) (DÓŁ) (TAB) (ENTER).

Lista poleceń jest podana tutaj, jest też pomoc, chociaż jest w języku angielskim, ale jeśli chcesz, możesz to rozgryźć. Z własnej praktyki radziłbym czasami użyć polecenia (OPÓŹNIENIE 1000), to jest opóźnienie między poleceniami. Po prostu zdarza się, że przy wolnym Internecie przeglądarka nie ma czasu na zaakceptowanie sekwencji poleceń, dlatego potrzebuje czasu na zastanowienie się, w tej sytuacji to polecenie pomoże (5000-5 sekund opóźnienia).

4) Podwójna komplikacja zestawu - kiedy ta metodaprogram nie wprowadza jawnie danych, pobiera część loginu i hasła ze schowka i wpisuje ich część w postaci symboli.

Teraz sprawdźmy, czy LanAgent może złamać nasze hasła!? Jak widać, nic nie zostało uzyskane, dlatego program działał idealnie, a teraz Twoje hasła są chronione w jak największym stopniu!

  • Instruktaż

Pewnego dnia musiałem zaimplementować odszyfrowanie bazy danych KeePass. Byłem zdumiony, że nie ma ani jednego dokumentu ani jednego artykułu zawierającego wyczerpujące informacje na temat algorytmu deszyfrowania plików .kdb i .kdbx, biorąc pod uwagę wszystkie niuanse. To skłoniło mnie do napisania tego artykułu.


Obecnie istnieją 2 wersje KeePass:

  • KeePass 1.x (generuje pliki .kdb);
  • KeePass 2.x (generuje pliki .kdbx).

Struktura pliku bazy danych KeePass (.kdb, .kdbx) składa się z 3 części:

  • Podpis (niezaszyfrowany);
  • Tytuł (niezaszyfrowany);
  • Dane (zaszyfrowane).

Odszyfrowywanie bazy danych KeePass

Sekwencjonowanie:
  1. Czytamy podpis bazy danych.
  2. Czytamy nagłówek bazy danych.
  3. Generujemy klucz główny.
  4. Odszyfrowujemy bazę danych.
  5. Sprawdzamy integralność danych.
  6. Jeśli plik został skompresowany, rozpakuj go.
  7. Odszyfrowujemy hasła.

Pozycje 5, 6 i 7 dotyczą tylko plików .kdbx!

Podpis
BaseSignature (4 bajty)

Pierwsza sygnatura jest taka sama dla plików .kdb i .kdbx. Ona to mówi ten plik to baza danych KeePass:

  • 0x9AA2D903
VersionSignature (4 bajty)

Drugi podpis wskazuje wersję KeePass i dlatego jest inny dla plików .kdb i .kdbx:

  • 0xB54BFB65 - KeePass 1.x (plik .kdb).
  • 0xB54BFB66 - wersja wstępna KeePass 2.x (plik .kdbx).
  • 0xB54BFB67 - Post-release KeePass 2.x (plik .kdbx).
FileVersion (4 bajty)

Tylko pliki .kdbx mają trzeci podpis i zawierają wersję pliku. W przypadku plików .kdb ta informacja zawarte w nagłówku bazy danych.


Tak więc w KeePass 1.x podpis ma 8 bajtów, aw KeePass 2.x 12 bajtów..

Nagłówek

Po podpisaniu bazy danych rozpoczyna się nagłówek.

Nagłówek KeePass 1.x.

Nagłówek pliku .kdb składa się z następujących pól:

  1. Flagi (4 bajty): to pole informuje, jakie typy szyfrowania zostały użyte podczas tworzenia pliku:
    • 0x01 - SHA256;
    • 0x02 - AES256;
    • 0x04 - ARC4;
    • 0x08 - Twofish.
  2. Wersja (4 bajty): wersja pliku.
  3. Master Seed (16 bajtów): używany do tworzenia klucza głównego.
  4. Szyfrowanie IV (16 bajtów): Służy do odszyfrowywania danych.
  5. Liczba grup (4 bajty): Całkowita liczba grup w bazie danych.
  6. Liczba wpisów (4 bajty): Całkowita liczba wpisów w bazie danych.
  7. Skrót zawartości (32 bajty): skrót odszyfrowanych danych.
  8. Transform Seed (32 bajty): służy do tworzenia klucza głównego.
  9. Transform Rounds (4 bajty): używane do tworzenia klucza głównego.
Nagłówek KeePass 2.x.

W plikach kdbx każde pole nagłówka składa się z 3 części:

  1. Identyfikator pola (1 bajt): możliwe wartości od 0 do 10.
  2. Długość danych (2 bajty).
  3. Dane ([długość danych] bajtów)

Nagłówek pliku .kdbx składa się z następujących pól:

  • ID \u003d 0x01 Komentarz: To pole może znajdować się w nagłówku, ale nie było go w mojej bazie danych.
  • ID \u003d 0x02 Cipher ID: UUID wskazujący zastosowaną metodę szyfrowania (na przykład dla AES 256 UUID \u003d).
  • ID \u003d 0x03 Flagi kompresji: ID algorytmu używanego do kompresji bazy danych:
    • 0x00: brak;
    • 0x01: GZip.
  • ID \u003d 0x04 Master Seed: służy do tworzenia klucza głównego.
  • ID \u003d 0x05 Transform Seed: służy do tworzenia klucza głównego.
  • ID \u003d 0x06 Transform Rounds: służy do tworzenia klucza głównego.
  • ID \u003d 0x07 Szyfrowanie IV: używane do odszyfrowania danych.
  • ID \u003d 0x08 Klucz chronionego strumienia: używany do odszyfrowania haseł.
  • ID \u003d 0x09 Bajty początkowe strumienia: pierwsze 32 bajty odszyfrowanej bazy danych. Służą do sprawdzania integralności odszyfrowanych danych i poprawności klucza głównego. Te 32 bajty są generowane losowo za każdym razem, gdy zmiany są zapisywane w pliku.
  • ID \u003d 0x0A Inner Random Stream ID: identyfikator algorytmu używanego do odszyfrowania haseł:
    • 0x00: brak;
    • 0x01: ARC4;
    • 0x02: Salsa20.
  • ID \u003d 0x00 End of Header: ostatnie pole nagłówka bazy danych, po którym następuje sama baza danych.
Generowanie klucza głównego

Klucz główny jest generowany w 2 etapach:

  1. Generowanie klucza złożonego;
  2. Generowanie klucza głównego na podstawie klucza złożonego.
1. Generowanie klucza złożonego

Algorytm wyznaczania wartości skrótu SHA256 służy do generowania klucza złożonego. Poniższe tabele zawierają pseudokod do generowania klucza złożonego w oparciu o używaną wersję KeePass i dane wejściowe wymagane do odszyfrowania bazy danych (tylko hasło, tylko plik klucza lub oba):


KeePass 1.x



KeePass 2.x



Zwracam uwagę na fakt, że jeśli do odszyfrowania bazy danych potrzebnych jest kilka encji (na przykład hasło i plik klucza), to najpierw trzeba pobrać hash z każdej encji, a następnie połączyć je razem (concat) i pobrać hash z połączonej sekwencji.

2. Generowanie klucza głównego na podstawie klucza złożonego
  1. Potrzebować zaszyfrować klucz złożony uzyskany powyżej przy użyciu algorytmu AES-256-ECB.
    • Użyj Transform Seed z nagłówka jako klucza.
    • To szyfrowanie musi być wykonane razy Transform Rounds (z nagłówka).
  2. Używając SHA256, otrzymujemy hash z zaszyfrowanego klucza złożonego.
  3. Łączymy Master Seed z nagłówka z wynikowym hashem.
  4. Używając SHA256 otrzymujemy hash z połączonej sekwencji - to jest nasz główny klucz!

Pseudo kod

void GenerateMasterKey () (// zaszyfruj klucz złożony TransformRounds times for (int i \u003d 0; i< TransformRounds; i++) { result = encrypt_AES_ECB(TransformSeed, composite_key); composite_key = result; }

// pobierz hash z zaszyfrowanego klucza złożonego hash \u003d sha256 (composite_key); // połącz wynikowy hash z polem MasterSeed z nagłówka key \u003d concat (MasterSeed, hash); // pobierz hash z sekwencji połączonej powyżej master_key \u003d sha256 (klucz);

Odszyfrowywanie danych KeePass 1.x.

Zaszyfrowana baza danych zaczyna się natychmiast po nagłówku. Algorytm deszyfrowania jest następujący:

  1. Cała pozostała część pliku odszyfrować
  2. Używając SHA256, otrzymujemy hash z odszyfrowanych danych ( bajty z poprzedniego akapitu nie są brane pod uwagę).
  3. Sprawdzamy, czy otrzymany hash pasuje do pola Content Hash z nagłówka:
    • jeśli hash się zgadza, to pomyślnie odszyfrowaliśmy naszą bazę danych! Możesz zapisać odszyfrowane dane jako plik .xml i upewnić się, że wszystkie loginy z hasłami są poprawnie odszyfrowane,
    • jeśli skrót się nie zgadza, oznacza to, że podano nieprawidłowe hasło lub plik klucza albo dane zostały uszkodzone.

Pseudo kod

bool DecryptKeePass1x () (// określ długość zaszyfrowanej bazy danych // (rozmiar pliku - rozmiar podpisu - rozmiar nagłówka) db_len \u003d file_size - signature_size - header_size;

// odszyfruj dane decrypted_data \u003d decrypt_AES_256_CBC (master_key, EncryptionIV, encrypted_data); // sprawdź liczbę „dodatkowych” bajtów extra \u003d decrypted_data; // pobierz hash z danych (bez dodatkowych bajtów!) content_hash \u003d sha256 (decrypted_data [:( db_len - extra)]); // sprawdź, czy otrzymany hash pasuje do pola СontentHash z nagłówka if (СontentHash \u003d\u003d content_hash) return true; else zwraca false;

Odszyfrowywanie danych KeePass 2.x.

Natychmiast po polu nagłówka End of Header rozpoczyna się sama zaszyfrowana baza danych. Algorytm deszyfrowania jest następujący:

  1. Cała pozostała część pliku odszyfrować przy użyciu algorytmu AES-256-CBC.
    • Używamy klucza głównego wygenerowanego powyżej jako klucza.
    • Używamy Encryption IV z nagłówka jako wektora inicjalizacji.
  2. Ostatnie kilka bajtów odszyfrowanej bazy danych jest zbędnych - to kilka identycznych bajtów na końcu pliku (wypełnienie). Aby wyeliminować ich wpływ, należy odczytać ostatni bajt odszyfrowanej bazy danych - jest to ilość „dodatkowych” bajtów, których nie należy brać pod uwagę w przyszłości.
  3. Sprawdź, czy pierwsze 32 bajty odszyfrowanej bazy danych są zgodne z polem nagłówka Stream Start Bytes:
    • jeśli dane się zgadzają, to wygenerowaliśmy prawidłowy klucz główny,
    • jeśli dane nie są zgodne, oznacza to, że podano nieprawidłowe hasło, plik klucza lub WUA albo dane zostały uszkodzone.
  4. Jeśli poprzedni krok się powiedzie, odrzucamy pierwsze 32 bajty. Sprawdzanie nagłówka Flagi kompresji. Jeśli użyto kompresji pliku GZip, rozpakuj dane.
  5. Zacznijmy od sprawdzenia integralności danych. Dane są podzielone na bloki, maksymalny rozmiar bloku to 1024 * 1024. Każdy blok danych zaczyna się od nagłówka. Struktura nagłówka jest następująca:
    • ID bloku (4 bajty): numer bloku zaczynający się od 0;
    • Skrót danych bloku (32 bajty);
    • Rozmiar bloku (4 bajty).
  6. Dlatego procedura wygląda następująco:
    • Czytamy nagłówek bloku.
    • Czytamy dane bloku.
    • Używając SHA256, otrzymujemy hash z danych bloku.
    • Sprawdzamy, czy hash jest zgodny z hashem z nagłówka.
  7. Wykonujemy sekwencję działań z poprzedniego akapitu dla każdego bloku danych. Jeśli dane we wszystkich blokach są zapisane, wycinamy wszystkie nagłówki bloków, a wynikowa sekwencja jest odszyfrowaną bazą danych.
  8. UWAGA: nawet w odszyfrowanym pliku .kdbx hasła mogą być szyfrowane.
  9. Zapisz odszyfrowane i zdekapitowane dane jako plik .xml.
  10. Znajdziemy w nim wszystkie węzły o nazwie „Wartość”, atrybut „Chroniony”, wartość tego atrybutu to „True” i przyjmujemy wartości tych węzłów. To nadal są zaszyfrowane hasła.
  11. Odszyfrowujemy wszystkie zaszyfrowane hasła za pomocą algorytmu base64decode.
  12. W polu Inner Random Stream ID nagłówka zobaczmy, jaki algorytm został użyty do szyfrowania haseł. W moim przypadku była to Salsa20.
  13. Generujemy pseudolosową 64-bajtową sekwencję za pomocą algorytmu Salsa20:
    • Jako klucz używamy skrótu pola nagłówka Protected Stream Key uzyskanego przy użyciu SHA256.
    • Jako wektora inicjalizacyjnego używamy stałej 8-bajtowej sekwencji 0xE830094B97205D2A.
  14. WAŻNY: Dzięki tej 64-bajtowej sekwencji możesz dokładnie odszyfrować 64 znaki w kolejności połączonych ze sobą dekodowanych haseł... Jeśli to nie wystarczy do odszyfrowania wszystkich haseł, musisz wygenerować następną pseudolosową sekwencję i kontynuować odszyfrowywanie haseł itp. do końca.
  15. Aby uzyskać ostateczne hasło, musisz XORować hasło zdekodowane w base64decode za pomocą pseudolosowej sekwencji uzyskanej w poprzednim akapicie (kolejność działań jest wyraźniej przedstawiona w pseudokodzie poniżej).
  16. BARDZO WAŻNE: hasła muszą zostać odszyfrowane w kolejności! Dokładnie w kolejności, w jakiej są prezentowane xml plik.
  17. W pliku xml znajdujemy wszystkie węzły o nazwie „Value”, atrybut „Protected”, wartość tego atrybutu to „True”:
    • Zastąp wartość atrybutu wartością „False”.
    • Zastępujemy wartość węzła odszyfrowanym hasłem.
  18. I dopiero teraz mamy całkowicie odszyfrowaną bazę danych KeePass 2.x! Hurra! \u003d)

Pseudo kod

bool DecryptKeePass2x () (// określ długość zaszyfrowanej bazy danych // (rozmiar pliku - rozmiar sygnatury - rozmiar nagłówka) db_len \u003d file_size - signature_size - header_size;

// odszyfruj dane decrypted_data \u003d decrypt_AES_256_CBC (master_key, EncryptionIV, encrypted_data); // sprawdź liczbę „dodatkowych” bajtów extra \u003d decrypted_data; db_len - \u003d extra; // sprawdź, czy pierwsze 32 bajty odszyfrowanej bazy danych // pasują do pola nagłówka StreamStartBytes if (StreamStartBytes! \u003d decrypted_data) return false; // odrzuć te 32 bajty db_len - \u003d 32; decrypted_data + \u003d 32; // sprawdź pole nagłówka CompressionFlag // jeśli plik został skompresowany, rozpakuj go if (CompressionFlag \u003d\u003d 1) unzip (decrypted_data); // sprawdź integralność danych while (db_len\u003e (BlockHeaderSize)) (// przeczytaj nagłówek bazy danych block_data \u003d decrypted_data; decrypted_data + \u003d BlockHeaderSize; db_len - \u003d BlockHeaderSize; if (block_data.blockDataSize \u003d\u003d 0) (break;) // get hash danych bloku hash \u003d sha256 (decrypted_data); // sprawdź, czy otrzymany hash pasuje do hash z nagłówka if (block_data.blockDataHash \u003d\u003d hash) (pure_data + \u003d decrypted_data; decrypted_data + \u003d block_data.blockDataSize; db_data.len - \u003d blockData.len - \u003d ;) else (return false;)) // zapisz odszyfrowane i odszyfrowane dane jako plik xml xml \u003d pure_data.ToXml (); // pobierz hash z pola nagłówka ProtectedStreamKey key \u003d sha256 (ProtectedStreamKey); // zainicjuj algorytm Salsa20 IV_SALSA \u003d 0xE830094B97205D2A; salsa.setKey (klucz); salsa.setIv (IV_SALSA); stream_pointer \u003d 0; key_stream \u003d salsa.generateKeyStream (); // odszyfruj hasła while (true) (// znajdź następny węzeł w kolejności z nazwą „Value”, // z atrybutem „Protected”, wartością atrybutu „True” node \u003d xml.FindNextElement („Value”, „Protected”, „True” ); if (node \u200b\u200b\u003d\u003d NULL) (break;) // pobierz wartość węzła i zdekoduj ją za pomocą algorytmu base64 decoded_pass \u003d base64decode (node.value); // dekoduj hasło używając pseudolosowej sekwencji key_stream for (int i \u003d 0; i< len(decoded_pass); i++) { decoded_pass[i] = decoded_pass[i] ^ key_stream; stream_pointer++; //если 64 байтной псевдослучайной последовательности не хватило, //генерируем еще одну последовательность if (stream_pointer >\u003d 64) (key_stream \u003d salsa.generateKeyStream (); stream_pointer \u003d 0;)) // zamień wartość atrybutu „Protected” na „False” node.attribute.value \u003d "(! LANG: False"; //заменяем зашифрованный пароль дешифрованным node.value = decoded_pass; } return true; !}


W zasadzie to wszystko, co chciałem ci powiedzieć. Mam nadzieję, że ten przewodnik uratuje kogoś przed niepotrzebnymi bólami głowy i będzie poznawczy i pouczający \u003d)

Tagi:

  • kryptografia
  • keepass
  • aes-256
  • sha256
Dodaj tagi

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu