Valentínska akcia je tu! Získaj až 80 % extra kreditov ZADARMO na náš interaktívny e-learning. ZISTIŤ VIAC:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:13.5.2018 20:21

Ahoj, jsem si vědom, že název vlákna není moc dobrý, ale nevím, jak to nazvat. Zajímalo by mě, jak může být bezpečné / autentikované něco, co ovlivní data na vzdáleném serveru, ale server může od klienta dostat jen něco typu "dude, trust me".
To není moc dobré na představu, proto uvedu příklady:

  1. Highscore u her - hra vlastně musí udělat něco jako že pošle serveru "jsem uživatel X, můj token pro tento počítač je Y a dosáhl jsem skóre Z". Jak ale může server vědět, že jsem si jako uživatel skóre nevymyslel - mohl jsem poslouchat síťový provoz a na základě toho vytvořit nový request, kde jen vyměním číslo, nebo jsem mohl hru dekompilovat a poskládat request tak, aby vypadal věrohodně.
  2. Potvrzení čtečkou prstu - pokud si koupím od ČD jízdenku do vlaku, musím buď použít zabezpečenou platební bránu, nebo použít nějaké jejich řešení, kde ale stejně musím vždy zadat PIN (ne ten od kary) ...nebo můžu použít Android appku a potvrdit to celé jen otiskem prstu bez jakékoliv jiné kontroly - takže tomu serveru nikdy nepošlu žádné tajemství, kromě úvodního přihlášení.

Existuje pro tento typ problému nějaké rozumné řešení, nebo to funguje tak, že třeba prostě existuje způsob, jak si koupit jízdenku bez zadání pinu nebo zfalšovat mé skóre a jen se to tváří jako bezpečné, ačkoliv tam je vestavěné porušení bezpečnostní vrstvy?

Odpovedať
13.5.2018 20:21
the cake is a lie
Avatar
Odpovedá na Petr Čech
Marian Benčat:13.5.2018 20:37
  1. Nikdy nevěř klientovi
  2. Nikdy nevěř klientovi
  3. Nikdy nevěř klientovi

Na 1) jednoduché řešení není, ostatně, server zkouší počítat jestli je to možné, ale i tak tomu ve většině případů zamezit nemůže, tedy přichází na řadu ochrana na klientovi..

Možná proto věci jako Denuvo dostávají takové šílené prachy pro to, aby nikdo ty informace na klientech falšovat nemohl?

  1. Eh, ty ČD si pak kontrolují, jestli ta platba opravdu dorazila,,.. nebo si nejsem jistý, co máš přesně na mysli..
Hore Odpovedať
13.5.2018 20:37
Totalitní admini..
Avatar
Petr Čech
Tvůrce
Avatar
Odpovedá na Marian Benčat
Petr Čech:13.5.2018 20:42

1.-3. já vím, proto se ptám

U ČD si můžeš jednorázově dobít jejich ČD kredit a z toho můžeš ukousávat přes PIN ... nebo otisk prstu. Takže platbě se samozřejmě nevyhneš. Ale teoreticky by potom měl jít zfalšovat můj požadavek bez znalosti PINu.

Editované
Hore Odpovedať
13.5.2018 20:42
the cake is a lie
Avatar
Odpovedá na Petr Čech
Marian Benčat:13.5.2018 20:46

No.. já opravdu upřímně nevím jak to tam funguje (vlakem jezdím jen pokud není k dispozici žádný jiný rozumný dopravní prostředek, ani osel,..)

Každopádně, celé se to snad děje online ne? Ten PIN / Otisk se někomu posílá, tam se kontorluje a ten někdo (Google , nebo přímo ČD) stanovuje, jeslti je ten PIN / OTISK ok? Tj. předpokládám, že na zařízení není uložený ten otisk. ?

Hore Odpovedať
13.5.2018 20:46
Totalitní admini..
Avatar
Petr Čech
Tvůrce
Avatar
Odpovedá na Marian Benčat
Petr Čech:13.5.2018 20:57

Děje se to online, ale normálně musíš vždy zadat PIN, abys mohl nějaký kredit utratit.
Android právě ukládá data pouze lokálně a aplikace samotná neví, jaký ten otisk je, jen se dozví, zda proběhlo ověření úspěšně.

Hore Odpovedať
13.5.2018 20:57
the cake is a lie
Avatar
Odpovedá na Petr Čech
Marian Benčat:13.5.2018 21:18

No tak že jo,... já bych předpokládal, že to funguje nějak takto (+- je to vždycky stejně):

ČD SERVER -> 3rd party: " Hele potřebuji tady ověřit identitu pomocí tvoji služby - otisku"
3rd party -> ČD SERVER: "Ok, tady máš public 12345 a private key, zobraz si ho v aplikaci.

ČD APP -> 3rd party server: "Tady máš otisk prstu a jde o public 12345
3rd party server -> ČD APP: "Jo jsi to fakt ty"
ČD APP -> ČD server : "Už jsem se ověřil pod tím 12345"
ČD Server -> 3rd party server: "Hele, fakt se ověřil pod 12345? Nebo kdo to tedy je? private key je ten a ten.."
3rd party server -> ČD server: "hele fakt je to Petr Čech"
ČD Server -> ČD App: "Ok, platba byla provedena"..

Ve složitější / jednodušší mutaci.. jde rpostě o 3legged komunikaci.. prostě tu validaci máš na serveru, ne na klientovi. Ten server pak poví "fakt je to on", ne klient.

Editované
Hore Odpovedať
13.5.2018 21:18
Totalitní admini..
Avatar
Luboš Běhounek Satik:14.5.2018 15:52

Asi nejbezpečnější řešení je pokud je hra plně deterministická, tak ukládat třeba záznam a pak ho nechat ověřit na serveru, jestli to sedí, případně třeba během hraní na klíčových místech ověřovat nějaký dílčí části dat - to už není tak stoprocentní, ale pořád lepší než nic :)

Ale i proto některý hry dneska už jedou jenom online, třeba Diablo3 - tam pak máš jistotu, že uživatel nic zfalšovat nemůže (pokud tam nemáš nějakou chybu, jako že na tuším xbox verzi Diabla3 šlo duplikovat předměty :) )

Akceptované riešenie
+20 Skúseností
+2,50 kreditov
Riešenie problému
Hore Odpovedať
14.5.2018 15:52
https://www.facebook.com/peasantsandcastles/
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.5.2018 15:47

Viz Marian Benčat, nikdy never klientovi.

Jsou online hry, kde, jak popisujes, je mozne podvrhnout vysledek. Obvykle jde o jednoduche piskvorky. Je to 99% vsech her! :)

Pak jsou hry, kde tohle osefuji tim, ze veskera data hry jsou na serveru. Kliknes piskvorku, neco kliknes, posila se to na server. Takze skore pocita server a muzes zkusit podvadet, jak chces. Dokonce si pohlida, abys nehral 2x po sobe. Samozrejme, to je slozite naprogramovat, takze vetsinou se jde do te levne 99% varianty :)

Resi se to pres RTC, Websockety a pod. Propoji tebe a server samostatnou jakoby session. A pak jenom vami posilate data. Posila se kratke id cislo sesny a hash pro sifrovani. kdyz se nekdo ozve se stejnym id, posle spravne zasifrovana data, bude se to povazovat za ok a dal uz zalezi na serverove kontrolu.
Problem je, ze tu kontrolu nemuzes resit prilis dukladne, kvuli rychlosti. Napr u online her. Muzes maxilane zaznamenat veskere udalosti a vyhodnotit je pozdeji. To dela ted Lol, kdyz hraci kliknout po hre, ze nekdo cheatuje nebo mluvi sproste. Nebo bys musel mit spesl stroj, ktery ma treba 3d pameti a risc procesory a muze to zpracovavat online.

klient - chci se pripojit
server - vytvarim ti peer, posilam svuj server-hash a pridelene id
klient - potvrzuji, vracim svuj klient-hash (hash(server-hash+heslo))
server - nastavi u peeru klient-hash
A od teto chvile bez spravneho hashe do toho kanalu nelze posilat.
Zprava se xoruje klient-hash a server-hashem. Soucasne si server muze ulozit ip a ruzne dalsi informace, co mu klient pri vytvareni pripojeni posle. U RTC byvaji ty hash dost kratke, asi by to slo padelat.

Ano, ve hrach podvadet je. Je to problem. A nejde mnoho udelat za male penize pro ochranu.

 
Hore Odpovedať
15.5.2018 15:47
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:15.5.2018 16:01

Děkuji za reakce, myslím, že vše už bylo řečeno - za rozumnou snahu to zkrátka nejde.

Hore Odpovedať
15.5.2018 16:01
the cake is a lie
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 9 správy z 9.