Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [RSA] Zabezpieczenie strony w PHP licencją
Forum PHP.pl > Forum > PHP
ZaqU
Cześć,

Mam dosyć nietypowy i na pewno trudny temat, który od kilku miesięcy mnie intryguje. Dużo czytałem o RSA i ogólnie o szyfrowaniu, jednak nie potrafię odwrócić całej tej procedury i dostosować jej do moich potrzeb.

Ale po kolei! Załóżmy, że mamy stronę który chcielibyśmy zabezpieczyć za pomocą licencji - pliku tekstowego zawierającego zaszyfrowaną informację o:
- dacie ważności licencji,
- osobie której została przydzielona,
- domenie pod którą będzie działać.

W logice biznesowej zaszywamy ukrytą funkcję która sprawdza licencję i jeśli wszystko się zgadza, to strona się wyświetla, w przeciwnym razie zwraca exit(), wyjątek czy inną wymyślną rzecz. Kwestię tego jak utajnić logikę biznesową aby ktoś jednym komentarzem nie wyłączył tego sprawdzania pomijamy - jest na to wiele sposobów, a i nie to jest tematem tego wątku.

Na czym polega haczyk? A no na tym, że ma to być odwrócenie RSA. O ile w RSA mamy dostępny dla każdego klucz publiczny (szyfrowanie) i zastrzeżony tylko dla właściciela klucz prywatny (deszyfrowanie), o tyle tutaj chciałbym uzyskać w 180 stopniach odmienny efekt:

Każdy może odszyfrować ukrytą treść licencji (a przynajmniej wystarczy, że w kodzie aplikacji będzie zaszyta odpowiednia funkcja która to zrobi), jednak tylko ja chcę mieć możliwość jej zaszyfrowania, a więc udzielania licencji. Ważne jest to, aby można było bez przeszkód zweryfikować autentyczność zaszyfrowanej licencji, tak aby nie można jej było wygenerować ręcznie.

Czy macie pomysł na to, jak taki problem rozwiązać w praktyce? Może ktoś słyszał o podobnych technikach szyfrowania i zechce podzielić się jakimś ciekawym artykułem? smile.gif

Edit: Czy przy wykorzystaniu RSA posiadając szyfr, oryginalną wiadomość i klucz prywatny można odtworzyć klucz publiczny?
Crozin
1. Jeżeli nie masz doświadczenia z szerokopojęta kryptografią nie próbuj robić niczego samemu - nie skończysz na tym za dobrze.
2. https://stackoverflow.com/questions/1820311...ers-have-the-sy
3. W praktyce jeżeli chcesz mieć pewność (czy właściwie większe prawdopodobieństwo), że nikt nie uzyska dostępu do Twojego oprgoramowania nie udostępniaj go. Udostępnij je jako całą usługę, tj. samodzielnie zajmuj się jej utrzymaniem dla poszczególnych klientów.
Pyton_000
Możesz użyć JWT. Wiem że to nie RSA ale:

- Tylko ty masz sól
- Każdy może zdekodować zawartość bo znana jest metoda hash.
- każdy może to zmodyfikować ale ty podczas sprawdzania mając sól weryfikujesz czy dane+sól => hash == sumą kontrolną.

Bardzo prosty mechanizm ale może dać to czego chesz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.