Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-01-02 17:37:34

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Witam.

Przypadek jest następujący:

Mamy serwis A który kontaktuje się z serwisem B - kontakt polega na przesłaniu zapytania w formie HTML, w każdym zapytaniu potrzeba przekazać mail oraz hasło, tak aby serwis B wiedział na czyje konto idą wykonywane usługi. No i teraz problem - jak w serwisie A przechowywać hasło do serwisu B, aby było ono bezpieczne? Hasło samo w sobie musi być w formie jawnej, tak aby serwis A mógł je wysłać do B - tak więc zwykłe haszowanie + salt raczej odpadają.

Z góry dzięki za informacje.

Offline

 

#2  2013-01-02 18:01:39

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Ja bym zrobił hashe w bazie, i przesyłał hash z bazy przez sieć, na B też trzymał hashe nie hasła.
Taki hash wtedy działa tak, jakby był hasłem plaintext, ale przynajmniej nikt Ci nie zarzuci, że nieszyfrowane hasła w bazie trzymasz :D
I nie stosował Saltu, ale SHA256 lub SHA512.
A generowanie odpowiedniego hasha wtedy, gdy pacjent wpisuje hasło w przeglądarce.
Można nawet w javascripcie.

Oczywiście o połączeniu SSL między A i B pisać chyba nie muszę ;)

Ostatnio edytowany przez Jacekalex (2013-01-02 18:03:24)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-01-02 18:04:46

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

tudzież opcja banalna base64 + rot :))


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#4  2013-01-02 18:09:15

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

winnetou napisał(-a):

tudzież opcja banalna base64 + rot :))

To nie jest żadno szyfrowanie, każdy skrypciarz może to odkodować.
Takim base64+rot to można załapać się na niebezpiecznika, i trochę ludzi ubawić serdecznie. :D

Względnie mcrypt - i klucz symetryczny trzymany na obu maszynach, a hasło pomiędzy A i B szyfrowane Blowfishem albo AESem.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2013-01-02 18:16:00

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Dlaczego serwis B potrzebuje hasła użytkownika do określenia „na czyje konto idą wykonywane usługi”?
W zupełności wystarczyłoby uwierzytelnienie użytkownika po stronie serwisu A i generowanie jakiegoś unikatowego klucza transakcji podczas komunikacji między serwisem A i B.

Offline

 

#6  2013-01-02 18:31:57

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Dzięki za info ale raczej tak nie da rady. Serwis B (w sumie mogłem to od razu podać - sorry że tak nie zrobiłem) to strona z paczkomatami InPost (paczkomaty.pl). Integruję to z poziomu .NET'u więc nie mam dostępnego API, a jedynie zapytania html'owe w stylu:

Kod:

https://api.paczkomaty.pl/?do=getsticker&email=tutaj_mail&password=to_nieszczęsne_hasło&inne parametry...

Generalnie już to obkodowałem i działa problem w tym że CMS z którym to integruje jakoś musi umożliwiać wpisywanie tego hasła z poziomu panelu administracyjnego, jak i jego późniejsze odczytywanie do formy jawnej, tak aby można je było wysłać do strony InPostu. Pytanie jak to zrobić żeby było jak najbezpieczniej.

Offline

 

#7  2013-01-02 18:49:58

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Na pewno nie zapisuj hasła jawnie.

Jeśli już musisz je zapisać w bazie, to zaszyfruj je dwustronnie — tak aby znanym tylko tobie algorytmem (jakiś skrót zasolonego skrótu?) dało się je rozkodować. Nadal jest to niebezpieczne (hasło można odczytać), ale odrobinę mniej (po zdobyciu dostępu do bazy trzeba jeszcze wiedzieć jak odczytać).


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#8  2013-01-02 18:56:39

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

@azhag:

Są do tego dostępne jakieś gotowe algorytmy z których mógłbym skorzystać?

Generalnie jak to miało by wyglądać bo trochę nie mogę sobie tego wyobrazić - jeżeli zakoduję hasło to gdzieś w bazie będę musiał trzymać klucz dekodujący (bo jak inaczej CMS je dla siebie zdekoduje?), a to w zasadzie sprawia że w przypadku włamania równie dobrze można tego kodowania nie mieć bo i tak włamywacz sobie je odczyta (OK może będzie się musiał ciutkę bardziej wysilić, ale...). Tak na pierwszy rzut oka wydaje się że nie ma tutaj dobrego rozwiązania...

Offline

 

#9  2013-01-02 19:07:30

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Huk napisał(-a):

@azhag:

Są do tego dostępne jakieś gotowe algorytmy z których mógłbym skorzystać?

Jakieś są. Nie tylko możesz, ale musisz — jedna z ważniejszych zasad mówi „nie twórz własnych algorytmów szyfrowania, bo spartolisz”. Ale sam konkretnie nic nie poradzę, bo jestem laik — pozwolę się wypowedzieć komuś z większym (jakimkolwiek) doświadczeniem.


Huk napisał(-a):

Tak na pierwszy rzut oka wydaje się że nie ma tutaj dobrego rozwiązania...

Słusznie. ;)

Jak napisałem zaszyfrowanie dwustronne jest tylko odrobinę lepsze — jak już osoba niepowołana zdobędzie dostęp na całego, to i tak odczyta (choć zajmie jej to więcej czasu). Ale w sytuacji gdy tylko zdobędzie dostęp do bazy danych (np. przez SQL injection) to hasło — wydaje mi się — będzie względnie bezpieczne. W każdym razie na pewno jest to lepsze niż podanie na talerzu PASSWORD=admin1.


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#10  2013-01-02 23:33:40

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

MySQL oferuje szyfrowanie symetryczne. Przy zapytaniu do bazy (zapisującym/odczytującym) dany rekord podajesz klucz jaki ma być używany przy odkodowaniu. Można też się pobawić i zrobić taki trick:
Robisz sobie zamiast bazy robisz sobie plik który potem szyfrujesz przez gpg2 (np z taką strukturą: mail:haslo:komentarz). A w php żeby się dobrać do danego maila musisz go sobie zdekodować przez gpg2 -d plik (przy czym passphrase niestety musi być jawnie w skryptach podane) także tak czy siak jesteś w czarnej d* ;)
Bo jak się dobiorą do bazy to mogą prędzej czy później wpaść na to jak jest to szyfrowane, jak się dobiorą do plików to znajdą passphrase.


A co do base i rot to był przykład z przymrużeniem oka


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#11  2013-01-03 01:02:14

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

winnetou napisał(-a):

MySQL oferuje szyfrowanie symetryczne. Przy zapytaniu do bazy (zapisującym/odczytującym) dany rekord podajesz klucz jaki ma być używany przy odkodowaniu.....

Masz pod ręką jakiś przykład w tym zakresie?

Bo przyda się do Dovecota....


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#12  2013-01-03 16:45:16

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#13  2013-01-10 05:12:40

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Przechowywanie hasła jawnego w bazie - jak to ugryźć?

Huk napisał(-a):

Dzięki za info ale raczej tak nie da rady. Serwis B (w sumie mogłem to od razu podać - sorry że tak nie zrobiłem) to strona z paczkomatami InPost (paczkomaty.pl). Integruję to z poziomu .NET'u więc nie mam dostępnego API, a jedynie zapytania html'owe w stylu:

Kod:

https://api.paczkomaty.pl/?do=getsticker&email=tutaj_mail&password=to_nieszczęsne_hasło&inne parametry...

Generalnie już to obkodowałem i działa problem w tym że CMS z którym to integruje jakoś musi umożliwiać wpisywanie tego hasła z poziomu panelu administracyjnego, jak i jego późniejsze odczytywanie do formy jawnej, tak aby można je było wysłać do strony InPostu. Pytanie jak to zrobić żeby było jak najbezpieczniej.

Rozumiem, że to w .NET napisane.
Ja do zabezpieczania konfiguracji połączenia z bazą używam DPAPI.
Przykład zastosowania:
http://msdn.microsoft.com/en-us/library/system.conf … vs.80%29.aspx
Parę uwag odnośnie konfiguracji i bezpieczeństwa tej technologii:
http://www.passcape.com/index.php?section=docsys&am … &id=28#14


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)