Wpis z mikrobloga

#kryptografia #szyfrowanie #programowanie #programista15k

witam
szukam silnej metody szyfrowania jednokierunkowego

zasada działania:
- mamy dany ciąg znaków (nazwijmy go ciąg1)
- szyfrujemy ciąg1 jednokierunkowo jakimś algorytmem z jakimś tajnym kluczem i otrzymujemy ciąg2

załóżmy, że osoba atakująca zna ciąg1 i ciąg2 (odczyta je sobie),
i chcemy żeby nie była w stanie złamać metody szyfrowania
to znaczy żeby nie była w stanie odkryć metody i zaszyfrować
w ten sam sposób swojego ciagu3 i uzyskać ciąg4 (czyli podszyć się pod nas)

Jest to możliwe? Czy coś polecicie?
  • 15
  • Odpowiedz
@aksnet: mały hint z dobrych praktyk dot. Bezpieczeństwa. Zawsze zakładaj że algorytm szyfrowania jest jawny. Cała siła algorytmu deszyfrowania ma wynikać z jego matematycznej złożoności przy nie znajomosci parametrów klucza.
  • Odpowiedz
@ponton: czyli w tym przypadku trzeba użyć tajnego (własnego) algorytmu szyfrowania, bo inaczej nic z tego?

załóżmy że chcemy zabezpieczyć oprogramowanie przed podmianą klucza (np. generowaniem pasujących kluczy przez crackera)
  • Odpowiedz
@ponton: @UberRam: może nie opisałem dobrze problemu, więc doprecyzuję

nie chodzi tu o wymianę zaszyfrowanych informacji

mam program który chcę zabezpieczyć, program ten posiada jakiś klucz licencyjny np. o długości 18 znaków
klucz jest wpisywany z klawiatury i po zaszyfrowaniu jest zapisywany gdzieś na dysku

zakładam, że ktoś kto będzie chciał zrobić generator kluczy, będzie miał dostęp do jakiegoś klucza licencyjnego i jego zaszyfrowanej postaci (gdzieś na dysku)

teraz chciałbym
  • Odpowiedz
@aksnet: to możesz np wyliczać funkcje skrótu (sha jakieś) z pliku licencji i na tej podstawie weryfikować jej poprawność w jakimś serwisie. Typu serwis aktywacji licencji który ma rejestr wydanych licencji i ich skrótów.
Jest na pęczki sprawdzonych pomysłów jak zarządzać licencjami na swój soft.
  • Odpowiedz
@aksnet: a takie inne pytanie, co tak właściwe ten klucz robi? do czego daje ci dostęp?
Bo jak pierniczysz się z utrudnieniem zgadnięcia klucza tylko po to by utrudnić komuś łamanie licencji, to marnujesz czas, bo szybciej i wygodniej komuś będzie po prostu usunąć sprawdzenie licencji niż się pierniczyć z łamaniem klucza.
  • Odpowiedz
mam program który chcę zabezpieczyć,


@aksnet: Ale wiesz, że jak już zrobisz zabezpieczenie kryptograficzne "nie do złamania" to zostanie ono "złamane" przez najzwyklejsze wycięcie? Zamiast generatorów kluczy, będzie najzwyklejszy, znany od dawna, crack który np. zmieni wskaźnik funkcji sprawdzającej klucz na funkcję własną zawsze zwracającą "true" i po zabawie. Nie myśl, że jak kod jest skompilowany, to już się nic nie da zrobić.

Jak zrobisz weryfikację online, to powstaną fake'owe serwery
  • Odpowiedz
@zakopiak: reverse engineering nie jest tani, i niesie ze sobą ryzyko (omijanie zabezpieczeń przez dużą firmę to potencjalnie katastrofa PR i duże koszty rozpraw sądowych - tego się raczej nie robi).

Jeśli robisz aplikację której będą używać w korpo, i będzie miała kilka tysięcy użytkowników lub mniej, to nikt nie będzie tego hackował.
  • Odpowiedz
@aksnet:
ciąg2 := SHA1( ciąg1 + tajnyciąg ) i już. (gdzie + to operacja konkatenacji)

Zamiast SHA1 możesz oczywiście dać coś mocniejszego, np. SHA256 albo SHA512 no i tajnyciąg musi być odpowiednio długi.
  • Odpowiedz