Portál AbcLinuxu, 13. května 2025 00:11

Dotaz: Python3: doveryhodna aplikacia, doveryhodny vystup

21.10.2020 12:58 kokoloko
Python3: doveryhodna aplikacia, doveryhodny vystup
Přečteno: 736×
Odpovědět | Admin
Dobry den,

mam malu aplikaciu v Python3 (300 LOC + 500 LOC v externych knizniciach). Potreboval by som zaistit jej integritu (bez obfuskacie ak to bude mozne). Tj ak by doslo k poruseniu jej integrity napr. akejkolvek zmeny v kode, aby sa aplikacia nedala spustit, popripade aby vypisala nejaku hlasku. Da sa toho nejako dosiahnut?

Tato aplikacia analyzuje a robi prepocty z jedneho zdrojovecho subora, potkytuje vystupy vo forme niekolkych suborov. Da sa dosiahnut aby tieto vystupy boli doveryhodne (napr. nejakym digitalnym podpisom/odtlackom)? Tj. aby som vedel s istotou povedat, ze naozaj vystupy boli produkovane prave touto aplikaciu, ktora nebola nijakym sposobom zmenena (zmenene vzorce pre vypocty a analyzu).

Dakujem.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.10.2020 15:55 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano - nedaj nikomu kod (pristupne bude iba API, napr. web API) a vystup digitalne podpisat. Aspon tak pre beznych ludi (neratam hackerov s mega rozpoctom, kt. miesto AP-ky mozu zautocit na napr. OS alebo pouzit prvky socialneho inzinierstva).
debian.plus@protonmail.com
22.10.2020 13:01 kokoloko
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
na vypocty a analyzu je potrebny silny procesor a vela ram. Momentalne na 16 threadoch a 64GB RAM spracovava 4GB subor 4 hodiny. Mam prilis vela dat na spracovanie (cca 6TB). Preto uvazujem ze aplikaciu zverejnim a ponuknem nejaku odmenu za spracovanie popripade za optimaliziu aplikacie. No potrebujem si byt 100% isty, ze vystupne data budu validne, maju 100% integritu a data su spracovane len pomocou tejto aplikacie.

ano to ma napadlo, proste Pyton zabalit alebo skompilovat do binarneho balicku a spustat to s parametrami, len to by sa stratilo caro open source a slobodneho softwaru :)

Zial taketo spracovanie cez web API asi nebude mozne.

Este ma napadlo vyuzit nieco take ako Java Web Start ale to by som musel aplikaciu prepisat do Java (pain in the ass). Nie som si isty ci JWS by zarucilo integritu aplikacie, a navyse JWS uz nie je podporovane.

Existuje taketo nieco vo svete Python-u?
Jendа avatar 22.10.2020 17:17 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
ano to ma napadlo, proste Pyton zabalit alebo skompilovat do binarneho balicku a spustat to s parametrami
To jenom udělá větší či menší opruz. Se podívej jak složité je držet tajný Dropbox, který vznikl přesně takhle.
Nie som si isty ci JWS by zarucilo integritu aplikacie
Nezaručilo.

Mimochodem pokud to zpracování souboru probíhá skutečně v Pythonu a ne v nějakém nativním modulu (Numpy, Tensorflow, pyFFTW), tak máš problém v tom a než řešit distribuci bude mnohem jednodušší to přepsat do něčeho 100x rychlejšího a spočítat to lokálně.
23.10.2020 19:10 kokoloko
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Ano, trafil si sa. Pouzivam Numpy a Pandas. Python som si avolil hlavne koli strmej uciacej krivke a jednoduchosti. Nasiel som nieco o Cython, JIT a Numba, hadam by sa to dalo pouzit, musim sa s tym pohrat pretestovat. No prepisovat to do C/C++ bude pain in the ass. Este to musim zvazit ci mi to stoji zato.

Ale zjavne cesta doveryhodnej aplikacie s doveryhodnym vystupom je este zlozitejsia.
Jendа avatar 23.10.2020 20:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Ano, trafil si sa. Pouzivam Numpy a Pandas. Python som si avolil hlavne koli strmej uciacej krivke a jednoduchosti. Nasiel som nieco o Cython, JIT a Numba, hadam by sa to dalo pouzit, musim sa s tym pohrat pretestovat. No prepisovat to do C/C++ bude pain in the ass. Este to musim zvazit ci mi to stoji zato.
No především je potřeba použít profiler a zjistit, kde to vázne.
23.10.2020 21:37 Wex | skóre: 7
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Nevěřím, že bez předchozích zkušeností bude C/C++ kód rychlejší než zpracování v numpy a pandas. To se spíš někde poptat na fórech, jestli jsou ty knihovny dobře použité, jestli byla vybrána optimální verze implementace.
Jendа avatar 23.10.2020 23:51 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
To záleží, co za operace s tím dělá - a jestli jsou tyto operace v numpy přímo implementované, nebo je musí nějak skládat a kvůli tomu se nějaká práce dělá zbytečně.
Jendа avatar 23.10.2020 23:55 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Mimochodem už třeba jenom výměna té defaultní příšerně pomalé FFT za FFTW může pomoct pokud člověk počítá větší fourierky.
Jendа avatar 21.10.2020 18:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tj ak by doslo k poruseniu jej integrity napr. akejkolvek zmeny v kode, aby sa aplikacia nedala spustit, popripade aby vypisala nejaku hlasku.
Přímo ten program bez patchování Pythonu asi obtížně, ale můžeš kolem aplikace postavit shellový wrapper, který ověří podpis aplikace třeba přes GPG a pouze pokud sedí, tak ho spustí.
Tj. aby som vedel s istotou povedat, ze naozaj vystupy boli produkovane prave touto aplikaciu, ktora nebola nijakym sposobom zmenena (zmenene vzorce pre vypocty a analyzu).
Ne. Můžeš zkusit „trusted virtualizaci“ Intel SGX a AMD SEV/SME, ale nevím, jestli už to je v použitelném stavu a funguje to jen na některých procesorech. A na procesory se neustále nacházejí nové a nové útoky, takže to nejspíš nebude úplně bezpečné. Dále by to _možná_ šlo zařídit nějakou kryptografií, ale to velmi záleží na tom, co konkrétně ten program dělá -- hledej termíny white-box cryptography a homomorphic encryption.
22.10.2020 13:15 kokoloko
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Shellovy wrapper by len rozbalil/overil/spustil samotny subor .py, to iste moze by spravil uzivatel no pred spustenim moze modifikovat zdrojovy kod.

Ale super napad je s PGP nieco ako pri podpisovani mailov. Len si to dobre neviem predstavit. Do aplikacie by som pridal verejny kluc, ktorym by podpisovala vypocitane data. Ja by som mal privatny kluc, ktorym by som overoval ze data su naozaj podpisane z aplikacie. Dalo by sa to takto? Ale teraz ako zaistit, ze v aplikacii neboli urobene zmeny (napr. vo vzrococh).

Dakujem za SGX a AMD SEV/SME, tato tehnologie nie su bezne dostupne v beznych consumer CPU a navyse je to mierene na big enterprise segment, nie na consumer. Dakujem aj za whitebox cryptography, homomorphic encryption no nasiel som iba akademicke clanky bez realnej implementacie.
Jendа avatar 22.10.2020 17:21 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Len si to dobre neviem predstavit.
Ano, to si nedokážeš představit správně. Tento problém je neřešitelný -- stačí se podívat, kolik výrobců komerčního software, videa (ochrany proti kopírování) a multiplayer her (ochrany proti cheatování) do toho lije doslova miliardy dolarů a přitom se skoro všechno stále dá nelegálně stáhnout a cracknout.

Ještě se můžeš inspirovat projekty jako je SETI. Tam se to řeší tak, že občas některé věci dají vypočítat třeba 3 lidem, porovnají výsledky, a tak se zjistí, jestli někdo nepodváděl.

Pro zajímavost co to je za výpočet? Má to jasně definovaný hotspot, který nejde zrychlit? Nejde to dát na GPU?
23.10.2020 21:33 Wex | skóre: 7
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak velká je ochota za ten výkon zaplatit? Na AWS by to hodně zhruba stálo čtyřicet tisíc korun (asi bez daně) plus úložiště, ale to už asi moc nebude.
26.10.2020 10:13 kokoloko
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
je omno lacnejsie prenajat si fyzicky server napriklad https://www.ovhcloud.com/en/bare-metal/advance/adv-4/ len ako dostat 5TB surovych dat na server a potom spat ku mne do PC spocitane data behom jedneho mesiaca.
26.10.2020 19:21 Wex | skóre: 7
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Přehled v této oblasti nemám, tak mě nenapadl pronájem fyzického serveru. Ale v tomto případě by možná bylo dobré si pronajmout server v lokálním data centru a využít "kabelový přenos" - hodit disky s daty do kabele a zajít s tím fyzicky k serveru.

Pak mě ještě napadlo z kódu vytvořit docker kontejner, ale tam si nejsem jistý, jestli jde zajistit, aby nešel ten kód změnit.
10.11.2020 15:52 kokoloko
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Odpovědět | | Sbalit | Link | Blokovat | Admin
nasiel som presne to co som hladal.

http://jamercee.github.io/signet/
11.11.2020 14:20 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: Python3: doveryhodna aplikacia, doveryhodny vystup
Jsi si jistý, že to splňuje tvoje požadavky? Pokud ten tvůj kód upravím a spustím normálním pythoním intepreterem, budu z něj moci vracet výsledky, jaké chci.

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.