Zabezpieczenie programu przez deszyfrowanie kluczem z serwera

0

Cześć, moja koncepcja jest taka, że lwia część aplikacji znajduje się w zaszyfrowanym assembly, szyfrowanie kluczem innym dla każdego użytkownika. Program się loguje do serwera podając parę nazwa użytkownika/hasło, a przez HTTPS dostaje klucz deszyfrujący przypisany dla danego użytkownika/hasła. Assembly jest deszyfrowane w pamięci do tablicy bajtów i stamtąd ładowane przez Assembly.Load(byte[]). Łączność z internetem oczywiście jest wymagana przy każdym uruchomieniu programu.

Powiedzcie, czy ta koncepcja ma jakikolwiek sens w obronie przed niezbyt zdeterminowanym atakującym?

Bo na tych minimalnie bardziej zdeterminowanych to ja rozumiem, że potrzebny jest MITM (?) żeby zdeszyfrować ruch HTTPS, a potem już analiza tylko jak robi się deszyfrację biblioteki i odpowiednia podmiana kodu IL, żeby nie łączył się z serwerem, ale deszyfrował wyciągniętym wcześniej kluczem. Żeby zabezpieczyć się przez podsłuchaniem HTTPS muszę zrobić sprawdzanie certyfikatu serwera, ale to też jedna linijka do zmiany w kodzie IL i sprawa z głowy, mam rację?

Oczywiście żeby już dostać klucz deszyfrujący wymagane jest przynajmniej jedno uruchomienie aplikacji i podsłuchanie komunikacji, czyli musi być kupiona choć raz, aby ktoś ją zdeszyfrował, ale to słaba pociecha :-)

No i gorsza kwestia, czyli co to zrobić, jeżeli chcemy zrezygnować z wymogu dostępu do Internetu? Zapisywać tymczasowo klucz gdzieś? Toż to od razu ktoś znajdzie...

0

może ja jedynie w odniesieniu do zapytania w ostatnim zdaniu... partycje na dysku mają serialID tak się to chyba poprawnie nazywa... dynamiczny który w takim wypadku można skutecznie wykorzystać w celu przypisania programu tej konkretnej maszynie. w międzyczasie odnalazłem na półce książkę: Bezpieczne programowanie - aplikacje hakeroodporne (chyba jest jeszcze w ofercie helion.pl ) autorstwa Jacek Ross. Helion 2009

1 użytkowników online, w tym zalogowanych: 0, gości: 1