Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> RSA
gitbejbe
post
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


Tworze pewnego rodzaju API i chcę zastosować uwierzytelnianie na podstawie klucz prywatnych/publicznych. Przewiduje w przyszłości apke na androida i chce zapewnić bezpieczną komunikacje z serwerem. Jeszcze tego nie robiłem i czytam o tym od pewnego czasu i rodzą się dla mnie pytania na które nie mogę odnaleźć jednoznacznej odpowiedzi. Pozwolę sobie zadać każde pytanie które mnie nurtuje, nawet te które wydają mi się oczywiste. Chcę być po prostu pewny. Korzystam z : http://phpseclib.sourceforge.net/rsa/intro.html

1) Gdzie gromadzić klucze ? Każdy użytkownik będzie mieć swój klucz prywatny i publiczny. Baza danych - jak zresztą gdzieś wyczytałem, jest chyba najgłupszym do tego miejscem, choć dla mnie pod względem wygody byłoby to idelane. Jesli jednak baza nie jest zła, to jaki typ kolumny byłby najlepszy ?
2) wielkość kluczy publicznych. Wiem, ze jest to uzależnione od siły tworzenia klucza prywatnego. Ale nawet dla 128 bitów klucz prywatny zajmuje aż 64 znaki ! Nie wyobrażam sobie jako użytkownik takiej apki przepisywanie na androida tak długiego ciągu. Nie da rady tego skrócić nie obniżając siły klucza?
4) jest w necie sporo przykładów gdzie klucze tworzy się z linii komend i zapisuje do pliku... ale za cholerę tego nie rozumiem. wolałbym zostać przy samym php'ie...

albo może inaczej... to może ja źle rozumuje. Jak powinna wyglądać taka szyfrowana komuunikacja ? Chcę zrobić tak: uzytkownik zakłada sobie konto na mojej stronie, po rejestracji dostaje na maila/lub w panelu swojego konta, klucz publiczny. Klucz prywatny zas zapisywany jest gdzieś na serwerze( baza? ). Uzytkownik który wysyła jakieś żadanie z apki na androida do serwera , wysyła mi zakodowaną wiadomość kluczem publicznym - np przez jakąś implementacją RSA dla javy... Odbieram wiadomość, sprawdzam kluczem prywatnym, jeśli gitara to gitara. czy jednak wygląda to zupełnie inaczej w praktyce?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Klucze generuje użytkownik na swojej maszynie np. APK na andka lub na PC.
Zakłada sobie konto w Twoim serwisie dodając swój klucz publiczny.
Na mejla dostaje Twój klucz publiczny...

Zapisujesz sobie w postaci plików nazwanych jakimś hashem mp. sha1 lub coś w ten deseń. Nawet UUID wystarczy.
W bazie trzymasz tylko powiązanie plik-user.

Go to the top of the page
+Quote Post
gitbejbe
post
Post #3





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź.
Cytat
Klucze generuje użytkownik na swojej maszynie np. APK na andka lub na PC.
Zakłada sobie konto w Twoim serwisie dodając swój klucz publiczny.
Na mejla dostaje Twój klucz publiczny...

Nie czaje... i jak wygląda wtedy taka komunikacja ? skoro to użytkownik generuje sobie klucze , to jak serwer ma odszyfrować wiadomość ? Być może jest to prostrze niż myśle, ale chyba za szybko to napisałeś ; )

Cytat
Zapisujesz sobie w postaci plików nazwanych jakimś hashem mp. sha1 lub coś w ten deseń. Nawet UUID wystarczy.
W bazie trzymasz tylko powiązanie plik-user.

to jest dla mnie jasne ale w połączeniu z tym co napisałeś wcześniej coś mi nie gra... Cały czas wydaje mi się ze istotą szyfrowania RSA jest wygenerowanie 2 kluczy, publicznego i prywatnego, z czego prywatny zostaje na serwerze i nikt nie ma do niego dostępu, a publiczny wędruje dla użytkownika - a wszystko to odbywa się na serwerze docelowym. dlatego nie rozumiem jak użytkownik może generować te klucze na zewnętrznej aplikacji?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No to dam akademicki przykład

Alicja i Bob chcą sobie przesyłać wiadomości szyfrowane. Aby tego dokonać muszą wpierw wykonać kilka czynności:
1. Alicja i Bob generują u siebie klucze (pub i priv)
2. Wymieniają się kluczami pub.

Alicja wysyła wiadomość szyfrowaną kluczem pub Boba. Ten dostaje wiadomość i rozszyfrowuje ją swoim kluczem priv

W drugą stroną tak samo.

Edited.

Poprawiłem bo lekką głupotę napisałem ad. szyfrowania (IMG:style_emoticons/default/smile.gif)

Ten post edytował Pyton_000 17.02.2014, 13:55:30
Go to the top of the page
+Quote Post
ghost1511
post
Post #5





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

Ostrzeżenie: (0%)
-----


W dużym skrócie klucz publiczny służy do szyfrowania wiadomości i jak nazwa mówi jest on publiczny ( czyli lepiej, aby nikt go nie poznał, ale wielkiej tragedii nie ma jak wycieknie). Klucz prywatny należy do tego który wygenerował ten klucz. Ani użytkownik nie będzie znał Twojego klucza prywatnego, ani Ty jego. Swoje wiadomości szyfrujesz jego publicznym i on je deszyfruje swoim kluczem prywatnym i analogicznie w drugą stronę.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ghost publiczny właśnie udostępnia sie wszędzie. Nic ci po pubblicznym kluczu jak nie masz prywatnego. Nawet jak zaszyfrujesz wiadomość czyimś publicznym to i tak tylko osoba mająca doń prywatny klucz odczyta wiadomosc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gitbejbe
post
Post #7





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

Ostrzeżenie: (0%)
-----


super : ) już wszystko rozumiem : ) Jeszcze tylko jedno... co z tą długością klucza publicznego ? jest na to jakiś sposób?

EDIT:
dla 128 bitowego szyfrowania

-----BEGIN RSA PRIVATE KEY-----
MGMCAQACEQDWuOOFZ1u3BmYZuO9aKYOXAgMBAAECEA+eKW0McbHUAwnhpgDe2ukC CQDv51+E8Q2mnwIJAOUg/iIfmFgJAgh93KaJaaoewwIJAMYP1f4TR7JZAgkAg27c ng9pfzU=
-----END RSA PRIVATE KEY

-----BEGIN PUBLIC KEY-----
MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAKLGOmJyyaqxpeSGbhsfUSUCAwEAAQ==
-----END PUBLIC KEY-----

nie wspominajac ze raczej nikt nie używa szyfrowania ponizej 512 bitów (ba daje sie zazwyczaj 2k - 4k), to nie wyobrażam sobie abym miał przepisywać TAKI klucz publiczny do androida, czy może jednak tak musi być ? ;/

Ten post edytował gitbejbe 17.02.2014, 14:52:07
Go to the top of the page
+Quote Post
freemp3
post
Post #8





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Możesz ładować plik, w którym będzie podany klucz (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
ghost1511
post
Post #9





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 17.02.2014, 13:57:17 ) *
Ghost publiczny właśnie udostępnia sie wszędzie. Nic ci po pubblicznym kluczu jak nie masz prywatnego. Nawet jak zaszyfrujesz wiadomość czyimś publicznym to i tak tylko osoba mająca doń prywatny klucz odczyta wiadomosc (IMG:style_emoticons/default/smile.gif)

Nigdzie nie napisałem, że mając klucz publiczny możesz odczytać wiadomość.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A ja nigdzie nie negowałem Twojej wypowiedzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
com
post
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Jak już o tym mowa to to co chcesz uzyskać to przecież SSL http://muflon.photosite.pl/doc/progzesp/ssl.html Mieszacie koledze w głowie ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:40