Ověření kódu přes webovou stránku

Ověření kódu přes webovou stránku
« kdy: 17. 02. 2019, 15:53:29 »
Ahoj.
Mám jeden program, který musí ověřit určitý kód aby se ověřil to, že organizace/člověk má program na pracovní stanici zaregistrovaný.
Zatím to funguje takto:
Mám PHP kód který mi zjistí proměnnou a poté porovná údaje.
Na klientovi se spustí curl https://example.com/?t=code a pokud je ?t spráně, vrátí to jedničku.
Ale vím že se přes /etc/hosts dá padělat připojení aby to VŽDY vracelo jedničku. Skenovat /etc/hosts se mi nezdá jako moc dobrý nápad, protože se tam dá udělat připojení přes jiný počítač...
Jak mám zajistit aby to nebylo padělatelné? Aby se mi odesláním kódu (a je mi jedno monitoring trafficu) vrátilo to tak, abych tam jednoduše dal podmínku?
Děkuji


Re:Ověření kódu přes webovou stránku
« Odpověď #1 kdy: 17. 02. 2019, 16:14:43 »
to neudelas. snazi se o to firmy s miliardovymi vydaji a stejne to nedokazou. proc myslis, ze to dokazes ty?
Děkuji za možnost editace příspěvku.

Re:Ověření kódu přes webovou stránku
« Odpověď #2 kdy: 17. 02. 2019, 17:25:36 »
Můžeš pro ověření použít hardwarový klíč.
Ale abych si za xxx peněz koupil program a ten se snažil s někým na síti komunikovat bez mého vědomí...
Navíc existuje něco jako NAT, firewall, IPV6, IPV4 a interní bezpečnost.
Nestojím o to, aby mnou nainstalovaný program bez mého vědomí komunikoval s někým na síti, ba co hůř, abych zajištoval, aby daný program nainstalovaný na x PC měl přístup na určitou IP adresu.
Kde jsem to jen viděl, jo, placený přístup k normám.  ;D

Re:Ověření kódu přes webovou stránku
« Odpověď #3 kdy: 17. 02. 2019, 17:26:57 »
Pokud chcete neprůstřelně ověřit, že odpověď je opravdu od vašeho serveru, je potřeba jí elektronicky podepsat. Váš server ji podepíše svým privátním klíčem, aplikace pak bude mít odpovídající veřejný klíč a pomocí něj ověří, že podpis sedí. Samozřejmě tím nezabráníte tomu, aby někdo vaši aplikaci u uživatele neupravil a příslušný test třeba nepřeskočil.

Pokud by vám stačilo ověřování na úrovni „uživatel může manipulovat s konfigurací sítě, ale nebude manipulovat se samotnou aplikací“, pak stačí provozovat ověřovací web na HTTPS a v aplikaci kontrolovat certifikát. Ale samozřejmě to musí dělat ta aplikace sama, pokud bude volat externí curl, není nic jednoduššího než podstrčit místo něj vlastní skript, který jenom vrátí jedničku.

Re:Ověření kódu přes webovou stránku
« Odpověď #4 kdy: 17. 02. 2019, 18:56:54 »
Aktualizace:
Každý má svůj klíč, bude tam mechanizmus a navíc ten program bude používat místo CURL funkci v jazyku Vala


Re:Ověření kódu přes webovou stránku
« Odpověď #5 kdy: 17. 02. 2019, 19:02:40 »
...
Pokud by vám stačilo ověřování na úrovni „uživatel může manipulovat s konfigurací sítě, ale nebude manipulovat se samotnou aplikací“, pak stačí provozovat ověřovací web na HTTPS a v aplikaci kontrolovat certifikát.
....
To není dobrý nápad, protože firma může provádět inspekci HTTPS provozu a pak klienti vidí jiný certifikát, na toto spoléhat nelze.

Re:Ověření kódu přes webovou stránku
« Odpověď #6 kdy: 17. 02. 2019, 19:29:06 »
To není dobrý nápad, protože firma může provádět inspekci HTTPS provozu a pak klienti vidí jiný certifikát, na toto spoléhat nelze.
Ano, na HTTPS je možné dělat MitM útok a právě kontrolou certifikátů se ten útok odhalí. To je účel certifikátů. Chyba je ovšem na straně toho, kdo dělá ten MitM útok. Pokud ta aplikace bude používat ověřování licence přes web, musí mít v požadavcích uvedené, že musí správně fungovat HTTPS komunikace s příslušným serverem a provozovatel si pak může rozmyslet, zda chce v těch svých útocích udělat výjimku nebo zda tu aplikaci nebude používat.

Re:Ověření kódu přes webovou stránku
« Odpověď #7 kdy: 17. 02. 2019, 20:09:16 »
Je jedno v akom jazyku to napíšeš. Systém ktorý si predstavuješ, poslanie kódu na nejaký server a obdržanie odpovede, bude vždy pomerne ľahko prelomiteľný. Jedinú istotu tak môžeš mať len s kvalitnejším hardvérovým kľúčom. Moderný hw kľúč nie je možné skopírovať, ani obísť - pretože hw kľúč vie byť doslova súčasťou programu, je na ňom časť kódu potrebná pre štart programu.

Re:Ověření kódu přes webovou stránku
« Odpověď #8 kdy: 18. 02. 2019, 07:48:15 »
Je tu několik věcí:

1. Ověření – podpis nestačí, pokud se budou pokaždé podepisovat stejná data. Pak stačí pokaždé odpovědět stejným podpisem. Mělo by to být challenge-response – podepíšu (možná ještě nějak zfotmátovaná) unikátní data od klienta. Ten klíč pokud možno nepoužívat na nic jiného, jinak je to zdroj bezpečnostních problémů (zvlášť pokud tím budeme podepisovat cokoliv bez formátování).
2. Odposlech klíče – na to by mělo být good enough HTTPS. Jde vymýšlet i nějaké schéma podepisování, ale IMHO to je zbytečná komplikace.
3. Side channels – pozor na timing attack na serveru.
4. Použití téhož klíče na více strojích – tomu se bohužel těžko brání. V případě HW klíče lze (byť to není už tak snadné) použít třeba USBIP. Můžeme kontrolovat latenci, ale pak riskujeme, že odřízneme i legitimní uživatele, kteří mají třeba pomalejší stroj nebo jejichž virtualizace prodlužuje latenci na USB.
5. Úprava aplikace – můžeme mít super kontroly, ale je to k ničemu, pokud útočník třeba zneguje podmínku nebo nahradí klíč vlastním. Ideálně to chce inlineovat všechny relevantní knihovny, které použijeme pro kontrolu.
6. Ekonomie: Kolik se uživateli vyplatí investovat úsilí do překonaní ochran? Kolik se nám vyplatí investovat do (v rámci možností) do nepřekonatelnosti? Pár pirátů může vyjít levněji než ochrana silná tak, že nikdo nevěnuje dostatečné úsilí k jejímu překonání.

Re:Ověření kódu přes webovou stránku
« Odpověď #9 kdy: 18. 02. 2019, 16:55:23 »
Pak jedine se prizpusobit trhu a monetizovat to jako SaaS nebo kvalitnim supportem/aktualizacema.
Děkuji za možnost editace příspěvku.