Wpis z mikrobloga

Chciałbym dodać dodatkowe zabezpieczenie w API restowym korzystającym z tokena. Sygnaturę dodawaną w nagłówku do każdego requestu.

Sygnaturą byłby skrót md5 timestampa + klucza prywatnego. Prawidłowa byłaby nie starsza niż 15 sekund.

Dzięki temu nawet gdyby ktoś podsłuchał komunikację i przejął token, nie mógłby wygenerować prawidłowego podpisu. A gdybym wykrył błędny podpis, wiedziałbym, że ktoś coś kombinuje i mógłbym zdezaktywować token.

Dobry pomysł?

#programowanie #kryptografia
  • 10
@Jojne_Zimmerman: jeśli będzie gdzieś apka-klient która będzie potrafiła taki podpis wygenerować, to w zasadzie nie ma większego znaczenia jaką metodą będzie on generowany - jak komuś będzie zależało to podejrzy tę metodę. Apki androidowe bardzo łatwo się dekompilują do w miarę czytelnej postaci, JS to w ogóle w zasadzie open-source jest :) Jaki problem chcesz rozwiązać tym zabezpieczeniem?
@kao3991:
Pracujemy nad apką i część zespołu chce zaimplementować refresh token. Czyli specjalny token do uzyskiwania nowych, zwykłych tokenów. Ja nie chce refresh tokena bo widzę jak ktoś go przejmuje i generuje sobie bezkarnie nowe tokeny.

Jestem za tokenem ważnym np. tydzień ale właśnie z dodatkowym zabezpieczeniem w rodzaju sygnatury generowanej w kliencie.

Oba rozwiązania są do dupy bo gdy przejmiesz kontrolę nad javascriptem czy androidem to tak samo masz refresh
@Jojne_Zimmerman: ogranicza straty przy MITM - tak, o ile atakujący nie odrobił pracy domowej. Trochę to dla mnie security through obscurity, ale szczerze mówiąc nie uważam tego za jakąś super wadę jeśli ma się świadomość słabych stron. Nie ma jakiegoś sprawdzonego rozwiązania tego problemu przypadkiem? :)
A wymyślając swoje: apka przy pierwszym logowaniu dostawałaby secret, token i refresh_token, serwer znałby secret który wygenerował razem z parą tokenów. I teraz,
@Jojne_Zimmerman: chce pomoc, ale chyba nie rozumiem. Robicie tls na pewno, gdzie ten mitm ma się odbyć? I kto robi ten skrót? Klient? Ma klucz prywatny? Mtls zatem?
Możesz dokładniej napisać jaka funkcjonalność chcecie osiągnąć/co zoptymalizować tym regresu tokenem i przed czym się bronić?
Dobry pomysł?


@Jojne_Zimmerman: Brzmi jak jakaś zupełna głupota. Zaczynając od tego, że md5 się do niczego nie używa, bo jest złamany od ponad dekady, a jak wyślesz etherem md5(timestamp + secret) to ten secret jest w stanie odworzyć nawet dziecko z kalkulatorem.
@Jojne_Zimmerman: Jak chcesz sygnatury to użyj normalnej kryptografii klucza prywatnego. Weź jakieś libsodium czy coś, wygeneruj klucze publiczne i podpisuj komunikację jak trzeba, a nie odkrywasz jakieś cuda.

Chociaż to i tak bez sensu, jak dobrze nie przymyślałeś przed czym ty w ogóle chesz się bronić i po co.