Portál AbcLinuxu, 6. května 2025 07:23

Dotaz: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?

19.8.2014 05:34 chin
Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Přečteno: 831×
Odpovědět | Admin
Dobré ráno. Mám webovou aplikaci a klienty napsané v javě, kteří s ní komunikují. Chci, aby se autentizovalo pomocí klíčů a ne hesel. Jak to udělat co nejbezpečněji? Napadá mě spousta alternativ jako:
  1. Vygenerovat klíč a prohlásit ho za heslo - nejjednodušší, nicméně nejbezpečnější???
  2. Vygenerovat klíč, server odešle náhodně vygenerovanou zprávu šifrovanou tímto klíčem, klient jí dešifruje a zpět zašle třeba její hash zašifrovaný tím samým klíčem. Server hash dešifruje, vytvoří hash z jím zaslané zprávy a porovná je. Složitější, ale neposílá se samotný klíč - bezpečnější???
  3. To samé jako druhý bod, jen použít asymetrickou kryptografii, kdy server má veřejný klíč a klient privátní (plus klidně i naopak, pokud chci ověřit obě strany a nedůvěřuji CA u https).
  4. ...
Klienti si s webovou aplikací vyměňují docela citlivé údaje a bude to celé komunikovat přes internet, takže by to mělo být podle toho bezpečné ...

Budu vděčný za jakýkoliv rozumný nápad, děkuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.8.2014 11:33 Sten
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Odpovědět | | Sbalit | Link | Blokovat | Admin
TLS (HTTPS) podporuje autentizaci pomocí klientského certifikátu, návod např. zde
19.8.2014 15:23 Filip Jirsák
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak píše Sten, použijte standardní HTTPS s přihlášením klienta privátním klíčem. Na obou stranách nastavte rozumnou množinu povolených protokolů, inspirovat se můžete např. u Qualsys SSL Labs. Na klientovi ověřujte přímo konkrétní serverový certifikát (nebo jednu konkrétní autoritu, pokud jí důvěřujete a chcete to mít pohodlnější), na serveru ověřujte konkrétní certifikáty (nebo opět zvolte jednu nebo pár autorit, kterým budete důvěřovat).
20.8.2014 22:08 chin
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
To mi přijde trochu moc komplikované - na straně klienta pracovat s keystore, na straně serveru přidávat do databáze informace o certifikátu, aby se jím šlo autentizovat i autorizovat a to celé cca jednou ročně (nebo mít vlastní CA) absolvovat pro větší množství klientů.
20.8.2014 22:11 Sten
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Přesně to odpovídá bodu 3. Pokud je klientů víc, jde ty certifikáty jednoduše ověřovat přes vlastní CA.
21.8.2014 10:35 Filip Jirsák
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Musíte si vybrat, buď jednoduchost, nebo bezpečnost. Stejně ta data předpokládám posíláte přes HTTPS, takže musíte řešit keystore na serveru a trustore na klientovi. Přidat k tomu autentizaci klienta certifikátem je pak relativně snadné.
21.8.2014 10:44 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nevím jestli je to rozumné, ale řešil jsem to páry klíčů, každý klient má svůj pár veřejný dá na server a veřejný serveru dostane.

Klient pošle požadavek, dostane „náhodnou zprávu“ šifrovanou svým veřejným klíčem, dešifruje ji a pošle zpět zašifrovanou veřejným server klíčem zpět a obdrží stejně šifrovaný ticket, který šifrovaný posílá s požadavky dokud server nevynutí změnu ticketu.

Všechna komunikace byla navíc podepisovaná „druhým klíčem“ (a doplněná o náhodná data) a umožňovala navíc zadání hesla, kde se navíc vyměňovala 2nd sůl, takže heslo běželo po síti zašifrované a navíc jen jako hash.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.8.2014 13:58 Sten
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
U té autorizace jste v podstatě implementoval to, co dělá TLS.
21.8.2014 15:15 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
No vida :-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
2.5.2018 23:47 Lieselotte
Rozbalit Rozbalit vše Re: Autentizace klíčem pro aplikaci klient - server (http) - jak na to?
Problém imho je, že ten klient je potom ochoten rozšifrovat a zpětně zašifrovat veřejným klíčem serveru prakticky cokoliv, což není problém, pokud se privátní klíč používá _POUZE_ na tuto autorizaci. Pokud se ale používá i na něco jiného, alternativně jde klienta donutit, aby použil k dešifrování libovolný odpovídající privátní klíč, pak je to skutečně velký průšvih.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.