Я бы хотел (PGP/GPG) подписать код питона. Да, я прочитал this и многие другие сайты, которые говорят о , защищающие и obfuscating код python - это все не что я хочу. Я НЕ хочу обфускать код. Я хочу, чтобы клиенты и пользователи могли видеть код, они могли изменять код, копировать его и выполнять производные работы, я хотел бы иметь программное обеспечение под GPLv3. Но я хочу иметь плагины, которые «подписаны», поэтому они могут быть от доверенными во время исполнения.PGP/GPG Подписан код Python
Возможно ли это в Python? Можно ли импортировать библиотеку после проверки ее подписи? Что было бы просто: проверьте подпись gpg файла, а затем загрузите его с помощью импорта, иначе создайте исключение. Но это возможно только для файлов с одним файлом, а не с файлами python.
Понятно, что если клиент изменяет ключ GPG в программе или удаляет некоторые строки в алгоритме проверки, все исчезло - но это не проблема. Он мог делать все, что захочет, но это было бы глупо. То, что он хочет, - это достоверность. Я хочу, чтобы он добавил плагин для сторонних разработчиков, скопировав его в каталог «plugins», и попросите программу проверить плагин на «достоверность», а затем импортировать его. (Так он мог запускать плагины, которые не подписал, но со своим собственным риском.)
Я считаю, что вы должны тщательно проверить систему 'import' (http://docs.python.org/3/reference/import.html) на python, поскольку она позволяет вам писать пользовательские [импортные крючки] (http : //www.python.org/dev/peps/pep-0302/). Что бы я сделал: предоставить плагины как 'zip' файлы, содержащие модули/пакеты * и * подпись. Затем импорт сначала проверит подпись, и если это будет правильно, он может распаковать архив во временный каталог и импортировать модули оттуда ([или непосредственно из 'zip'] (http://docs.python.org/ 2/библиотека/zipimport.html)). Пользователи могут распаковать архив и изменить его. – Bakuriu
@Bakuriu отличный комментарий, и это должен быть ответ. –
Это то, что я думал и раньше, используя zip-файл. Это была бы одна из моих функций: загрузить подписанный файл zip/other «plugin package» с выделенного сервера, проверить gpg, распаковать его. Итак, «установка» в выделенный «плагины» должна выполняться программным обеспечением, тогда проблема будет решена, если я правильно понял. Администратор в системе обходит это, изменяя код как root. И я не знал об импортных крючках, спасибо очень. – nerdoc