[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