Wpis z mikrobloga

  • 0
Mirki, zastanawia mnie taki problem, pokrewny do sprzętowych tokenów bankowych.

Powiedzmy, że mamy aplikację co do której zależy nam nie tylko na udostępnieniu kodu, ale także gwarancji, że nie został zmodyfikowany, czyli że to co obserwujemy jako jej działanie, powiedzmy w internecie (choć niekoniecznie, lokalnie też) wynika w 100% z pracy tej aplikacji w tej konkretnej wersji. Załóżmy jednak, że nie kontrolujemy lokalnej (dla działania aplikacji) maszyny. Chwilowo nie wnikajmy w kwestie debuggera, czy "powodów po co".


Myślę czy rozwiązaniem problemu byłoby, jako składowy komponent mieć funkcję wliczającą skrót z samej siebie (po skompilowaniu) oraz parametrów z którymi była uruchomiona, połączona w jakiś sposób, tak by osoba B mając do dyspozycji kod i parametry wejsciowe, w interwałach mogła zweryfikować generując z kodu i znanych parametrów skrót, i porównywać go z podawanym przez program zdalny. Czyli, jak mi się zdaje, analogicznie jak w tokenach bankowych. Czy widzicie jakieś potencjalne problemy? Jakieś lepsze rozwiązania, może to jest niepotrzebnie skomplikowane.

#pytanie #programowanie #security
  • 9
  • Odpowiedz
via Android
  • 0
@fishchip sporo roboty jeśli kiedykolwiek miałby być modyfikowany, choć oczywiście sporo aplikacji tak robi, wypuszcza się je z sumą kontrolną. Z resztą, mniej więcej to samo napisałem w opisie ;) interesuje mnie bardziej pomysł który nie byłby tak oczywisty - mając do dyspozycji kod i skróty wszystkich plików, można wyliczyć nową sumę kontrolną i "będzie się zgadzać".

Niech przykładem, kiepskim bo kiepskim, będzie aplikacja zaliczająca głosy w wyborach. Chcesz mieć pewność
  • Odpowiedz
via Android
  • 0
@atari_XE niby tak, ale pomiędzy aktualizacjami nie masz gwarancji. Oczywiście, calkowite zabezpieczenie na zdalnej maszynie to mrzonka, przy debuggerze i upartej osobie...ale tu też musiałbyś aktualizować się w trakcie działania.
  • Odpowiedz
via Android
  • 0
@Oo-oO w sumie jak się zastanowiłem to początkowo myślałem o czymś w stylu tokena, który mając sekret A, kod źródłowy B, oraz czas C (choć to wymaga bezpiecznego i pewnego źródła czasu) liczy jakieś A^B*C, i osoba znająca A może sobie to sprawdzić lokalnie. Z drugiej strony, to chyba jednak jest przekombinowane, zmienność w czasie. Wystarczy chyba para kluczy, publiczny umieszczamy w programie, wyliczony na podstawie skompilowanego kodu źródłowego "D", tak
  • Odpowiedz
via Android
  • 0
@fishchip owszem, pisałem o tym wyżej. Z uprawnieniami i lokalnym dostępem do maszyny mogę wstrzyknąć dowolną sumę kontrolną, ale nie rozważamy tego przypadku. Dlatego interesuje mnie zaszycie klucza publicznego razem z sumą kontrolną całości przykładowo w wersji; albo sie zgadza, albo nie i wiem, że zostało zmodyfikowane.
  • Odpowiedz