Discussion:
iv
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Piotr J. Kolanok
2009-12-03 09:17:49 UTC
Permalink
Jak się generuje iv z hasła?
$echo -n "0123456789abcdef" | openssl enc -aes-256-cbc -nosalt -P
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605
iv =4FA92C5873672E20FB163A0BCB2BB4A4

hasło 'a'
przy 128 bitach to jest chyba md5
$echo -n 'a' | openssl md5
0cc175b9c0f1b6a831c399e269772661

-K ale dalej?
Może jakis inny tryb uzyć? A jak wygenerować iv? Szukałem w źródłach, ale
nie znalazłem. To jest inne dla każdego trybu?

A salt jak sie generuje? to po prostu losowe? czy jednak zależne od czasu
albo jakas funkcja unikalna?
--
^^
Bartosz Ma³kowski
2009-12-04 08:21:18 UTC
Permalink
Post by Piotr J. Kolanok
Jak się generuje iv z hasła?
Na przykład tak: http://juliusdavies.ca/commons-ssl/src/java/org/apache/commons/ssl/OpenSSL.java
szukaj metody deriveKey()
Post by Piotr J. Kolanok
A salt jak sie generuje? to po prostu losowe? czy jednak zależne od czasu
albo jakas funkcja unikalna?
Po prostu losowe wartości. Oczywiście możesz użyć jakiegoś hashowanego
licznika to już zależy od implementacji. Jaka jest dokładnie
implementacja w openssl - nie wiem.
Piotr J. Kolanok
2009-12-04 11:34:25 UTC
Permalink
Post by Bartosz Ma³kowski
Post by Piotr J. Kolanok
Jak się generuje iv z hasła?
http://juliusdavies.ca/commons-
ssl/src/java/org/apache/commons/ssl/OpenSSL.java
Post by Bartosz Ma³kowski
szukaj metody deriveKey()
Bardzo dziekuje. Znalazłem funkcję EVP_BytesToKey( ale niestety nie ma opisu
jak to jest liczone. Nie ma też nigdzie opisu jak długi jest key i iv.
Tu kod http://code.google.com/p/przyklad-open-ssl/source/browse/trunk/trzy.c
Jesli znajdziesz tam jakąś nieścisłość ew. wiesz czy cos mozna zrobic lepiej
prosze napisz. Wydaje mi sie, ze nie uzywam nieaktualnych wywolan od
0.97-1.0... ale mogę się mylić.
Post by Bartosz Ma³kowski
Post by Piotr J. Kolanok
A salt jak sie generuje? to po prostu losowe? czy jednak zależne od czasu
albo jakas funkcja unikalna?
Po prostu losowe wartości. Oczywiście możesz użyć jakiegoś hashowanego
licznika to już zależy od implementacji. Jaka jest dokładnie
implementacja w openssl - nie wiem.
Moze inaczej. czy losowosc musi byc bardzo losowa. Czy musze mieć pewność,
że nie będzie dwóch komunikatów z takim samym salt/ziarenkiem w obrębie
jednego hasła?


Przy okazji szukałem jakiejś ksiązki na polskim rynku o kryptografii dla
praktyków z gotowymi kodami i nie znalazlem. jest bezpieczne programowanie,
ale czesc kodu nie dziala, czesc to tylko kawałki bez wywołań. Bardziej jak
czesc wiekszej calości, której nie ma.
--
^^
Bartosz Ma³kowski
2009-12-05 08:24:45 UTC
Permalink
Post by Piotr J. Kolanok
Post by Piotr J. Kolanok
A salt jak sie generuje? to po prostu losowe? czy jednak zależne od czasu
albo jakas funkcja unikalna?
Zgodnie z zasadami, przy wielokrotnym użyciu tego samego klucza
szyfrującego, należy zagwarantować unikalność IV, a przynajmniej
bardzo się postarać ;). W praktyce chyba zwykła "kryptograficzna"
losowość powinna wystarczyć. W końcu nie tak łatwo wylosować dwa
identyczne 128 bitowe ciągi ;) Ale to już Ty musisz oszacować, biorąc
pod uwagę ilość przesyłanych komunikatów szyfrowanych tym samym
kluczem.
Tutaj salt + passphrase jest używany do wygenerowania key oraz iv:
(key, iv) = keyDerive(salt, passphrase)

Więc zasady dotyczące salta są identyczne jak w przypadku IV. Różnica
polega na tym, że w przypadku stałego passphrase i zmieniającego się
salta, zmieniać się będzie zarówno IV jak i key.
Post by Piotr J. Kolanok
Przy okazji szukałem jakiejś ksiązki na polskim rynku o kryptografii dla
praktyków z gotowymi kodami i nie znalazlem. jest bezpieczne programowanie,
ale czesc kodu nie dziala, czesc to tylko kawałki bez wywołań. Bardziej jak
czesc wiekszej calości, której nie ma.
Jak bardzo "z gotowymi kodami"? Schneier to za mało ("Kryptografia dla
praktyków" i "Kryptografia w praktyce")?
Kryptografia to dziwna dziedzina wiedzy: algorytmy są względnie
proste, zasady logiczne i wielokrotnie opisane. Jednak złożenie tego
wszystkiego do kupy może wcale nie być łatwe a rezultat składania może
dawać złudne bezpieczeństwo.
Jak nie czujesz się "mocny w temacie" to lepiej bardzo uważaj, bo o
błąd naprawdę nietrudno.
Piotr J. Kolanok
2009-12-05 12:50:56 UTC
Permalink
Post by Bartosz Ma³kowski
Post by Piotr J. Kolanok
Post by Piotr J. Kolanok
A salt jak sie generuje? to po prostu losowe? czy jednak zależne od
czasu albo jakas funkcja unikalna?
Zgodnie z zasadami
dziekuje
Post by Bartosz Ma³kowski
Post by Piotr J. Kolanok
Przy okazji szukałem jakiejś ksiązki na polskim rynku o kryptografii dla
praktyków z gotowymi kodami i nie znalazlem. jest bezpieczne
programowanie, ale czesc kodu nie dziala, czesc to tylko kawałki bez
wywołań. Bardziej jak czesc wiekszej calości, której nie ma.
Jak bardzo "z gotowymi kodami"? Schneier to za mało ("Kryptografia dla
praktyków" i "Kryptografia w praktyce")?
Z fragmentow dostepnych w sieci wynika, ze jest tam tylko ogolnie opisana
metoda. Nie ma gotowych kodow. Jak zaszyfrowac, jak zakodowac np. base64
(ktore mi nie dziala i nie wiem nawet gdzie tkwi blad) itd...

A chodzi o to by takie przykłady były na tyle proste by dało sie to prosto
uzyc. Ot ktos ma gotowy program i szuka sposobu na dodanie szyfrowania np.
plikow na dysku, albo w jakis sposob przeslanie hasla przez sieć.
Post by Bartosz Ma³kowski
Kryptografia to dziwna dziedzina wiedzy: algorytmy są względnie
proste, zasady logiczne i wielokrotnie opisane. Jednak złożenie tego
wszystkiego do kupy może wcale nie być łatwe a rezultat składania może
dawać złudne bezpieczeństwo.
Tu sie zgadzam, ale chce uzyc po prostu gotowej biblioteki. Nie chce łaczyc
jakis roznych rzeczy, ani robic specyficznych spraw. Po prostu chce zrobić
kopie tego co jest pod konsola openssl na windows z ładnym gui itp. Nic
wiecej. A przy okazji sie czegos nauczyć.
Post by Bartosz Ma³kowski
Jak nie czujesz się "mocny w temacie" to lepiej bardzo uważaj, bo o
błąd naprawdę nietrudno.
No dlatego staram sie pisać jawnie licząc na to, ze jesli jest to złe to po
prostu ktoś poprawi. Nie czuje sie dobrze w temacie choc teoretycznie cos
tam czytalem, ale praktycznie jestem pewninie na poziomie pierwszaka
znajacego podstawy C ;(
--
^^
Stachu 'Dozzie' K.
2009-12-05 15:06:39 UTC
Permalink
Post by Piotr J. Kolanok
Post by Bartosz Ma³kowski
Post by Piotr J. Kolanok
Przy okazji szukałem jakiejś ksiązki na polskim rynku o kryptografii dla
praktyków z gotowymi kodami i nie znalazlem. jest bezpieczne
programowanie, ale czesc kodu nie dziala, czesc to tylko kawałki bez
wywołań. Bardziej jak czesc wiekszej calości, której nie ma.
Jak bardzo "z gotowymi kodami"? Schneier to za mało ("Kryptografia dla
praktyków" i "Kryptografia w praktyce")?
Z fragmentow dostepnych w sieci wynika, ze jest tam tylko ogolnie opisana
metoda. Nie ma gotowych kodow. Jak zaszyfrowac, jak zakodowac np. base64
(ktore mi nie dziala i nie wiem nawet gdzie tkwi blad) itd...
A chodzi o to by takie przykłady były na tyle proste by dało sie to prosto
uzyc. Ot ktos ma gotowy program i szuka sposobu na dodanie szyfrowania np.
plikow na dysku, albo w jakis sposob przeslanie hasla przez sieć.
Jeśli ktoś ma gotowy program i szuka sposobu na zaszyfrowanie plików na
dysku, to prawie na pewno to z**bie. Bo brak mu przygotowania
kryptograficznego i nie będzie zdawał sobie sprawy z możliwych ataków.
Post by Piotr J. Kolanok
Post by Bartosz Ma³kowski
Kryptografia to dziwna dziedzina wiedzy: algorytmy są względnie
proste, zasady logiczne i wielokrotnie opisane. Jednak złożenie tego
wszystkiego do kupy może wcale nie być łatwe a rezultat składania może
dawać złudne bezpieczeństwo.
Tu sie zgadzam, ale chce uzyc po prostu gotowej biblioteki. Nie chce łaczyc
jakis roznych rzeczy, ani robic specyficznych spraw.
Tylko ty właśnie chcesz to zrobić: łączyć różne rzeczy i robić
specyficzne sprawy (mimo że ktoś już dawno takie coś wykonał). Dla
ciebie klockiem nie jest szyfr, tylko cały protokół SSL/TLS albo cała
operacja szyfrowania do formatu GnuPG/OpenPGP.
Post by Piotr J. Kolanok
Po prostu chce zrobić
kopie tego co jest pod konsola openssl na windows z ładnym gui itp. Nic
wiecej. A przy okazji sie czegos nauczyć.
Ale ty się nic nie nauczysz w ten sposób. Co najwyżej jak używać takiej
czy owakiej biblioteki i nijak nie będziesz umiał przenieść tej wiedzy
na, przykładowo, biblioteki javowe. Dlaczego? Bo nie znasz podstaw na
których zbudowano takiego OpenSSL-a.
--
Stanislaw Klekot
Bartosz Ma³kowski
2009-12-06 09:02:58 UTC
Permalink
On 5 Gru, 16:06, "Stachu 'Dozzie' K."
Post by Stachu 'Dozzie' K.
Ale ty się nic nie nauczysz w ten sposób. Co najwyżej jak używać takiej
czy owakiej biblioteki i nijak nie będziesz umiał przenieść tej wiedzy
na, przykładowo, biblioteki javowe. Dlaczego? Bo nie znasz podstaw na
których zbudowano takiego OpenSSL-a.
Sprecyzuję: podstaw teoretycznych, które są częściowo zawarte w
literaturze, a częściowo w głowach specjalistów ;)
Dla przykładu: jakie będą konsekwencje powtórzenia IV dla tego samego
klucza? Jakie w trybie CBC a jakie w CTR?

Dopóki tego nie będziesz widział, lepiej używaj wysokopoziomowych
bibliotek udostępniających API do "przesłania hasła przez sieć".
A jeśli chcesz się czegoś nauczyć, to czytaj, czytaj, czytaj, czytaj i
jeszcze dwa razy: czytaj! I wtedy dopiero zamieniaj zdobytą wiedzą w
wykonywalny kod.

Kontynuuj czytanie narkive:
Loading...