Szyfrowanie i zarządzanie bazą danych w KeePass


(M4thy5) #1

Witam,

zainteresowałem sie ostatnio programem KeePass, mam kilka pytań.

źródło: viewtopic.php?f=7&t=287960

  1. Co oznacza "ilość powtórzeń szyfrowania"? w jakim celu zmienia sie to (jakie to ma działanie)?

  2. Dlaczego najpierw jest 6000? jeśli jest 6000 to znaczy że na początku nie szyfrujemy w AES lub Twofish? więc dlaczego jest standardowo wybrane AES?

  3. Po kliknięciu w przycisk za każdym razem jest generowana inna liczba, dlaczego tak sie dzieje?

  4. Odnośnie tego punktu (4) nie pytajcie po co takie hasło. Chcę po prostu wiedzieć. Widzę że można wygenerować hasło o długości do 30000 znaków, więc ponad 700 bitowe. Można więc takiej długości hasło ustawić dla dostępu do bazy haseł, zarówno dla AES jak i dla Twofish? Nie jest czasem tak że AES obsługuje hasła o długości do 256 bitów? bo czytałem że są tego typy szyfrowania np 128 bitowe lub 256, np tu:

http://www.searchengines.pl/index.php?showtopic=33659

Czy to jest tak że gdy np sobie stworze hasło ponad 700 bitowe to podczas szyfrowania te >700 bitowe hasło przekonwertuje sie na 128 lub 256 bitowe (bo tyle obsługuje program)?

  1. Da sie jeszcze więcej bitowe szyfrowanie ustawić? czyli do wygenerowanego hasła ponad 700 bitowego dopisałbym drugie tyle znaków.

  2. W programie można przechowywać hasła o nieograniczonej długości?


(Krzysztof C.) #2

Oznacza dokładnie to co pisze. Bardziej po polsku oznacza to, że nagłówek bazy, w którym zawarty jest klucz, jest szyfrowany (mieszany) 6000 razy w ciągu sekundy zanim nastąpi faktyczny zapis nagłówka. Zmienia się to po to, aby klucz do bazy był możliwie najlepiej zaszyfrowany. Im więcej tym lepiej.

6000 jest wartością wstępną, tak po prostu ustalił autor programu. To 6000 oznacza ilość cykli szyfrowania na sekundę a nie konkretny algorytm. Algorytm wybieramy osobno. Standardowo wybrany jest AES, gdyż jest to obecnie najczęściej stosowany algorytm szyfrowania (Twofish jest jeszcze lepszy [tylko nie proś o wzory matematyczne :-D], ale nieco wolniejszy. W praktyce KeePassa nie poczujesz wcale różnicy.) Dodatkowo powinien ucieszyć Cię fakt, iż żadnego z tych obu algorytmów nie złamano jeszcze - i w najbliższej kilkudziesięcioletniej przyszłości się nie złamie, gdyż nie ma takich komputerów (inną sprawą jest złamanie hasła i proszę nie mylić tych dwóch kwestii).

Dzieje się tak dlatego, że dla procesu pomiaru nie jest zawsze przydzielana taka sama ilość cykli procesora (działa system i inne programy na przykład). Nie ma się co tym martwić.

Nie pytamy! :smiley: Już odpowiadam. Mylisz pojęcia. Długość hasła to nie wprost jego siła. Można takie hasło ustawić, ale musiałbyś je “wpisywać” z KeePassa czyż nie? Musiałbyś więc mieć kolejną bazę z hasłem do kolejnej bazy - moim zdaniem to bez sensu. Oczywiście można ustawić to hasło dla AES jak i Twofish - Ty wybierasz jakim algorytmem szyfrujesz całą bazę i hasło do niej w nagłówku bazy. I teraz najważniejsze i mam nadzieję, że zrozumiesz - AES szyfruje Twoje hasło siłą 256 bitów. To jak mocne jest Twoje hasło ważne jest dla ataku bruteforce a nie dla AESa, on działa inaczej - tak, że obecnie, o czym wspominałem, nie da się go złamać bez znajomości hasła właśnie.

Nie jest więc tak bo mylisz ze sobą dwie różne rzeczy.

To pytanie wynika z pomylenia pojęć. Są algorytmy szyfrujące siłą np. 1024 bitów, ale moc szyfrowania nie przekłada się bezpośrednio na bezpieczeństwo. To, że powielisz ilość znaków niekoniecznie podwoi siłę !!

Możesz to sprawdzić samodzielnie. Sam tego nie robiłem bo i po co. Sądzę jednak, że ograniczeniem jest wspomniane 30000 znaków.

Mam nadzieję, że już wszystko jasne. Jeśli nie to proszę pytać śmiało.


(M4thy5) #3

Dziękuje za wyjaśnienie. Mam jednak jeszcze kilka pytań.

Czyli szyfruje pierwszy raz, później to zaszyfrowanie szyfruje jeszcze raz i tak powtarza to 6000 razy?

I później program otrzymujac hasło szyfruje ponownie i gdy wyjdzie taki sam wynik to otwiera bazę, ale skad wie jak długo szyfrować? bo może sie zapętlić w nieskończoność, gdyby zostało podane złe hasło. Skad wie jakim algorytmem było wcześniej zaszyfrowane by próbować szyfrować to hasło?

Ja myślałem że te hasło powoduje zaszyfrowanie bazy danych a nie że jest szyfrowane i umieszczanie w nagłówku a baza inaczej osobno szyfrowana ;/

Czyli hasło do bazy jest szyfrowane siłą 256 bitów a następnie baza tym hasłem ustalonym- czyli np 700 bitami?


(Krzysztof C.) #4

Miesza 6000 razy na sekundę losowo w celu bezpieczeństwa szyfrowania (zanim zaszyfruje).Deszyfrowanie nie odbywa się 6000 razy na sekundę tylko raz i właściwie (po podaniu właściwego hasła, które jest zaszyfrowane żeby nikt nie mógł go z tego pliku odczytać w celu jego otwarcia - masło maślane ale logiczne wbrew pozorom). Wie jakim algorytmem szyfrować bo to ustawiłeś, ta informacja jest zapisana w bazie haseł. Teraz zapytasz zapewne, że skoro znamy algorytm to możemy deszyfrować bo z algorytmu możemy wydzielić hasło (a właściwie wzór na nie - coś jak z drogą, czasem i prędkością w fizyce - masz dwie dane to wyliczysz trzecią znając wzór na choćby jedną)?? Ale AES jest napisany tak, że sama jego znajomość nie wystarczy bo jest wprowadzona pseudolosowość w jego wzór a co za tym idzie znajomość całego algorytmu na wylot nie daje nic bez znajomości hasła. Hasło nie powoduje szyfrowania tylko bezpieczeństwo deszyfrowania i na tym polega ochrona - zastanów się czy tak właśnie nie jest (co nam byłoby z miliardów operacji szyfrujących gdybyśmy je mogli łatwo odwrócić wyczytując hasło?). Hasło i baza są szyfrowane jednocześnie w jednym pliku podczas operacji szyfrowania bazy.

TAK

NIE - hasło ma moc 700 bitów. Znowu mylisz pojęcia tych nieszczęsnych bitów. Nie myśl, że 256 jest gorsze od 700 bo tego nie da się porównać, to działa na innej zasadzie.

I teraz pokrótce napiszę jak wygląda cały proces szyfrowania i deszyfrowania to może rozjaśni Ci umysł (czytać po 4 piwach):

SZYFROWANIE:

Utworzenie bazy haseł -> podanie hasła -> wybranie algorytmu -> mieszanie 6000 razy na sekundę (wprowadzenie zmiennych powodujących niemożliwość przeprowadzenia tej operacji wstecz bez znajomości hasła) -> zaszyfrowanie bazy (wewnątrz hasła oraz wszystkie instrukcje, które się wykonają po podaniu hasła) -> zapis na dysk.

DESZYFROWANIE:

Podanie hasła -> wykonanie instrukcji -> otwarcie bazy haseł (na dzień dzisiejszy niemożliwe bez podania hasła).


(M4thy5) #5

Zaszyfrowanie chyba rozumiem ale odszyfrowanie- by to zrozumieć przydałby sie schemat blokowy jakiegoś prostego deszyfrowania i szyfrowania z wykorzystaniem mieszania i hasła. Te szyfry kiedyś stosowane (opisy w wikipedii) inaczej działają bo tu hasło nie idzie do nagłówka tylko bezpośrednio koduje dane wg algorytmu.


(Krzysztof C.) #6

Nagłówek pliku jest częścią całości tego pliku. Nazwa jest myląca. Chodzi tylko o to, że nagłówek to początek pliku z odpowiednimi danymi.


(M4thy5) #7

Ok, dzięki za pomoc. Rozjaśniło mi sie nieco. W tajniki kryptografii trzeba by wejść by ogarnąć to głębiej, bez tego to tylko teoria, więc sobie raczej dam spokój.


(Krzysztof C.) #8

No nie jest to łatwa matematyka. Ważne, że program, o który pytasz działa i ułatwia nam wszystkim życie. Mam też nadzieję, że poradnik mego autorstwa przydał Ci się choć w części.

Pozdrawiam.


(M4thy5) #9

Witam.

Bardzo fajny poradnik. Został mi tylko jeszcze do przeczytania rozdział który ominąłem, dotyczący TrueCrypta za którego planuję sie zabrać niebawem.

I. Zauważyłem jednak pewien problem:

Nie wpisuje (nie wpisuje w pole pierwsze, pomija i przechodzi dalej wpisując już dalej) sie u mnie nazwa gdy jest {NAME} Musi być {TITLE} by działało.

II.

Zauważyłem że można oszukać program i zrobić tak:

Auto-Type-Window: tu wpisać cokolwiek

Auto-Type: {DELAY 1000}{WIN}{UP}{UP}{ENTER}{DELAY 1000}{URL}{DELAY 1000}{ENTER}{DELAY 6000}{PASSWORD}{ENTER}

Auto-Type-Window-1: tutaj nazwa okna programu gdzie użyjemy globalnego klawisza skrótu

Auto-Type-1: {PASSWORD}{ENTER}

Działa wtedy poprawnie wybranie Auto-Type z menu kontekstowego w KeePass i działa też globalny klawisz skrótu. III.

U mnie po wpisaniu nazwy użytkownika - {USERNAME} i przejściu dalej - {ENTER} system zawiesza sie (kursor myszy zostaje unieruchomiony i na klawiaturę też nie reaguje system- windows 2000 sp4) na te 8 sekund i nie mogę zaznaczyć kursorem w polu gdzie po tych ośmiu sekundach powinno wpisać sie hasło. Co może być powodem przywieszenia kursora? Przy Auto-Type wybieranym z menu kontekstowego w programie KeePass tak sie dzieje nie tylko w przypadku logowania na dwóch stronach ale też przy zwykłym logowaniu czyli --> zaznaczenie w polu login, wybranie w programie KeePass i PPM, Uruchom Auto-Type --> login, tab, hasło, enter. Po zmianie w opcjach na “Użyj alternatywnej metody auto-type (minimalizuje okno)” jest tak samo- problem nie ustępuje. Używając globalnego klawisza skrótu Auto-Type nie ma takiego problemu. IV. Zauważyłem w pliku konfiguracyjnym programu KeePass:

KeeGenProfileAuto=AgABTgAAABQDgAAAAABBTlIAAA==

[...]

KeeGenProfileLast=AihXeWJyYW55KQABTgAAABQDgAAAAABBTlIAAA==

Co to oznacza? Może to tak sobie siedzieć w pliku konfiguracyjnym czy nie powinien tego nikt widzieć jak ktoś tam zajrzy?

V. Czy mając otwarty program keepass, dane- hasła są możliwe do przechwycenia z pamięci? Czy jest więc ryzyko korzystania z bazy haseł tego programu na innym komputerze (uruchamiając program i bazę z pendrive’a)? Nie chodzi o przechwytywanie haseł z klawiatury tylko z pamięci- baza wczytywana jest do pamięci i jest ona jawnie wczytana- możemy sobie przecież podglądać hasła w programie po otwarciu bazy haseł… są więc pozostawiane ślady w pamięci, pomijając już pamięć wirtualną gdzie mogą być dane zapisane ;/

VI. Przy generowaniu hasła jest możliwość wzmocnienia hasła losując dane - poruszając myszką w zaśnieżonym polu. Poruszając w tym polu nic sie nie dzieje, tylko widać postęp ładowania pod tym polem, czy to normalne (czy powinien ten śnieg sie mieszać w tym polu?)?

VII. Narzędzia -> opcje -> zaawansowane -> auto-type -> sortuj elementy w oknie wyboru wpisów auto-type

Do czego służy ta opcja, o które okno wyboru wpisów auto-type chodzi?

VIII. Przy edycji wpisu, w “narzędzia” (lewy dolny róg) jest takie coś jak “wstaw odnośnik pola”, do czego to służy? Znalazłem że do linkowania pól ale dalej nie rozumiem o co chodzi, czemu miało by to służyć.

IX. Widząc tylko opcję zapisu (przy zmienianiu hasła lub tworzeniu) można pomyśleć że nie da sie wybrać pliku. “Zapisałem” wybrany plik i oczywiście działa, no ale mylące jest to bo już myślałem że sie tak nie da. Mam nadzieje że wybór pliku a nie klucza nie spowoduje kiedyś problemów czyli utraty bazy haseł. Zwykłe klucze sie zapisują chyba jako suma kontrolna w pliku i jeśli nie wskaże sie z listy *.key tylko zapisze to powstaje plik zwykły a nie *.key. Może program bierze po prostu sumę kontrolną z pliku *.key lub jeśli nie jest to plik *.key to sprawdza jaka jest suma kontrolna tego pliku wybranego.

X. Ale ogólnie program jest dosyć dobry, chyba najlepszy. Ale mogła by być w programie jeszcze możliwość ustawienia dodatkowego hasła dostępu dla wybranych kategorii.

–EDYCJA–

Jednak jest też ten problem. Nie zauważyłem wcześniej, jest to znacznie mniej denerwujące i mniej zauważalne ale jest ;/


(Krzysztof C.) #10

To normalne. Musi tak być bo gdyby tak nie było to mógłbyś kliknąć gdzieś i kolejny wpis poszedłby w próżnię.

Tak ma być.

Możliwe do odczytania po uprzednim rozszyfrowania czyli w praktyce niemożliwe. Wszystko w pamięci jest zaszyfrowane. Oczywiście w programie zamiast haseł i loginów mają być gwiazdki bo inaczej to kicha.

To normalne. Śnieg ma się nie ruszać hehe. To nie jest wzmocnienie hasła tylko losowości wybieranych znaków do hasła.

Kiedy masz dwa różne wpisy do jednego okna to wyświetli się okno wyboru i o segregację w tym polu chodzi. Sytuacja taka wystąpi jak masz 2 skrzynki pocztowe np. w onecie. Używasz dwóch różnych wpisów a okno to samo.

Możesz w danym polu utworzyć link do danego wpisu z bazy. Nie używam bo nie jest mi to potrzebne, ale jakby komuś było potrzebne to jest taka funkcja.

Aleś namieszał! Ty wybierasz co jest Twoim plikiem kluczem i tego się trzymaj. Plik klucz generowany przez program jest na tyle losowy że bezpieczny. Nie mieszaj do tego sum kontrolnych. W pliku kluczu ważne jest wszystko - wszystkie jego dane.

Moim zdaniem zbędne, ale może i taka opcja kiedyś powstanie.

Jestem debilem i nie zrozumiałem problemu. Opisz dokładnie krok po kroku co nie działa.


(M4thy5) #11

No ok, zaszyfrowane, ale po wklejeniu hasła w polu logowania, to hasło już nie jest chyba zaszyfrowane bo gdyby było to by nie zadziałało, więc przed wklejeniem musi sie odszyfrować w pamięci.

Heh… no myślałem że ja w tym polu mam ten śnieg wymieszać porządnie :wink:

W punkcie pierwszym chodzi mi o to że powinno być raczej {TITLE} zamiast {NAME}

Podam cytat z artykułu, do którego to co piszę sie odnosi:

Moja myśl z drugiego punktu odnosi sie do:


(Krzysztof C.) #12

Zapomniałeś na przykład o połączeniu szyfrowanym. Oczywiście do wielu portali hasło nie jest szyfrowane w locie i faktem jest, że hasło wpisane w przeglądarce nie jest zaszyfrowane, ale i tak ciężko go odczytać.

Istotnie masz rację. =D> =D> =D> =D> =D> =D> MÓJ BŁĄD. Poprawka naniesiona.

Faktycznie można w taki sposób “połowicznie oszukać” program i to działa. Proponuję zamieścić odpowiedni wpis pod artykułem głównym i dołożyć swój wkład w tę instrukcję. Proszę jednocześnie, aby było to w 100% zrozumiałe i czytelne.

Gratuluję spostrzegawczości!


(M4thy5) #13

Widzę że dodałeś instrukcję do artykułu, więc ja tylko nawiązując do instrukcji trochę dodałem dla zainteresowanych, wnikając jeszcze głębiej w szczegóły :wink: Jeszcze wpisu mojego nie ma gdyż musi zostać zaakceptowany przez moderatora.