[Python] Criptazione dei file sorgenti per evitare la manomissione
Manlio Perillo
manlio.perillo a gmail.com
Sab 13 Nov 2010 22:49:58 CET
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 13/11/2010 20:01, Manlio Perillo ha scritto:
> [...]
>
> La parte tecnicamente più complessa è verificare l'hash.
> Una idea è farlo al momento in cui avviene l'import di un modulo; per
> questo prova a dare una occhiata al modulo ihooks (non documentato, devi
> leggere il codice).
>
> Oppure dai una occhiata a
> http://www.python.org/dev/peps/pep-0302/
>
Ecco un proof of concept, basato sul PEP 302:
http://paste.pocoo.org/show/290997/
Vantaggi
========
può essere implementato in C senza problemi; ti basta, dopo aver
inizializzato l'interprete, aggiungere il tuo importer in sys.meta_path.
L'importer lo puoi anche scrivere in C.
Svantaggi
=========
Per disabilitare la verifica delle firme, all'utente basta (a scelta):
* modificare la funzione __import__
* rimuovere l'importer da sys.meta_path
Ovviamente questo è un problema solo se permetti di importare moduli
"untrusted"; ma il caricamento di un modulo untrusted fallirà comunque,
con la politica di default (permetti solo l'import di moduli "noti" ed
integri).
L'unica precauzione è *disabilitare* gli hook eseguiti all'avvio
dell'interprete, ad esempio il caricamento di site.py; questo perchè gli
hook permettono di eseguire codice utente arbitrario *prima* che
l'importer hook sia stato registrato (XXX check me).
> [...]
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkzfCAYACgkQscQJ24LbaUTGzwCfTgjnKrlpunVPmqNI+j8tFAY4
cMYAmwS+dJ+uLr+/Zgs+FnYzkd33vKdo
=kXzb
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python