Задумался о том, что бы такое использовать для шифрования текстовых файлов на андроиде.
...
Задумался о том, что бы такое использовать для шифрования текстовых файлов на андроиде.
Чтобы по удобству не уступало keepass для паролей. А лучше превосходило.
То есть требования такие
1. Симметричное password-based шифрование с использованием стандартных алгоритмов и форматов. То есть чтобы не нужно было лезть в исходники чтобы понять что это там такое и насколько оно надежное.
2. Чтобы при расшифровании информация показывалась на экране. Меня устроит решение, которое не будет работать ни с с чем, кроме utf-8 текста, но clear text, зашифрованный на десктопе на SD-карту или внутреннюю энергонезависимую память телефона не должен попадать никогда. (это умела еще pgp 2.6.3 даже под однозадачной DOS, но почему-то не умеет APG).
3. Возможность работы с этими файлами в десктопном Linux-е без установки софта, не входящего в дистрибутив. В идеале, конечно, чтобы там CMS EncryptedData использовалось в качестве формата. Тогда его можно будет в vim читать openssl-ем.
4. Чтобы оно не смело по своей инициативе соваться в сеть. Ни рекламы, ни попыток работать с каким-нибудь облачным сервисом.
5. Было бы неплохо если бы андроидное приложение позволяло редактировать текст и сохранять, обратно зашифровав (без промежуточной записи в энергонезависимое хранилище открытого текста). Можно ли без промежуточного сохранения в незашифрованном виде на SD-карту редактировать это в Jota?
Вариации на тему GPG/OpenPGP я уже посмотрел. Пока две - AGP и GnuPG for Android,
Для решения моей задачи они совершенно не приспособлены.
APG прежде чем начать шифровать данные паролем требует сначала создать себе ключевую пару RSA (и энтропию для нее собирает непонятно откуда несколько минут). Ну и не умеет расшифровать файл на экран.
У GnuPG для андороида вообще после штатной установки средствами плеймаркета при запуске начинается невообразимо долгий процесс "Setting Up Gnu Privacy Guard". Правда, дождаться места где можно нажать кнопочку Skip в ответ на предложение создать ключи, мне удалось. При этом похоже, что если в процессе этой операции лочится экран, оно потом начинает заново.
И еще какой-то pinentry daemon запускает. Вообще GnuPG последнее время даже на десктопе онгомел до полной неюзабелности. Ну не имеет права хрень, работающая с ключами и паролями САМОСТОЯТЕНЛЬНО, БЕЗ ВЕДОМА ПОЛЬЗОВАТЕЛЯ, запускать долгоживущие процессы хранящие эти ключи и пароли в памяти. Key Agent штука полезная, но он должен запускаться только явным образом, как в ssh. И ключи в него грузиться выгружаться тоже явным образом, а если ключ явным образом туда грузить не просили (при запуске ssh введнеа пассфраза), он туда попадать и не должен.
В общем, на эти две программы вердикт такой - пользоваться APG -можно. Для выработки и проверки подписи, для шифрования данных пересылаемых по электоронной почте или мессенджерам каким, но не для защиты информации, хранящейся на устройстве. Поставленную мной задачу он не решает. GnuPG под андроид - просто неюзабелен.
Upd Пока лучшее решение из найденных - поставить на телефон полновесный vim и пользоваться его встроенной шифровалкой (:help encryption).
Надо только не полениться в .vimrc написать set cm=blowfish. Потому что cm=zip ломается на современных процессорах в секунды.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1042064.html. Please comment there using OpenID. Now there are comments
За выходные дописал туда модуль mac. Теперь если мне потребуется вдруг срочно реализовывать ...
За выходные дописал туда модуль mac. Теперь если мне потребуется вдруг срочно реализовывать гостовскую имитовставку, у меня есть где посмотреть правильную последовательность вызовов функций OpenSSL.
Кстати, надо бы еще написать тесты на PKey.derive. Заодно и вспомню куда там UKM кладут при VKO 34.10. А то вдруг VKO тоже срочно потребуется реализовывать.
И в общем с test coverage там все не так уж плохо:
Name Stmts Miss Cover
--------------------------------------------
ctypescrypto/__init__ 7 1 86%
ctypescrypto/bio 64 6 91%
ctypescrypto/cipher 121 15 88%
ctypescrypto/digest 100 5 95%
ctypescrypto/ec 63 16 75%
ctypescrypto/engine 24 8 67%
ctypescrypto/exception 24 0 100%
ctypescrypto/mac 58 5 91%
ctypescrypto/oid 55 4 93%
ctypescrypto/pbkdf2 13 1 92%
ctypescrypto/pkey 196 48 76%
ctypescrypto/rand 34 4 88%
ctypescrypto/x509 338 55 84%
--------------------------------------------
TOTAL 1097 168 85%
Ну это, правда, если не учитывать того что на модуль cms тестов вообще нет (это 152 оператора всего и 97 непротестированых).
Большая часть не покрытых тестами строк, правда, представляет собой обработку
возвращенных функциями OpenSSL ошибок. Как сделать, чтобы эти ошибки устойчиво в тестах воспроизводились, пожалуй. не скажет и Хэнсон. Конечно, есть здоровые куски в модулях pkey и x509, до тестирования которых просто не дошли руки. В заметном числе случаев там в конце соответствующего метода вместо вызова OpenSSL-ной функции стоит raise NotImplementedError. Проблема в том, что соотвествующая функциональность нифига не документирована ни в родных man-ах, ни в криптокомовском руководстве программиста, и выяснять как это использовать можно исключительно посредством RTFS.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1037691.html. Please comment there using OpenID. Now there are comments
Вчера вот приспичило доставать из сертификатов срок их действия. А в OpenSSL нет функций-аксессоров ...
Вчера вот приспичило доставать из сертификатов срок их действия. А в OpenSSL нет функций-аксессоров к этим полям - есть макросы. Поэтому пришлось разобраться как в python-овском ctypes делается доступ к полях сишных структур.
В результате сейчас ctypescrypto 0.2.4 знает про сертификаты почти все что нужно (кроме расширений). Это пока мне не приспичило. А то ведь и вокруг X509V3_EXT_print обертку нарисовать недолго.
Ну и CMS у меня тестами не покрыта. Теоретически поддерживаются SignedData, EnvelopedData и EncryptedData, практически убедился только в том, что подпись проверяется, и то это не в этом test suite.
А так по-моему оно скоро переплюнет m2crypto по функциональности (не считая SSL, куда я просто не лез). Впрочем m2crypto уже несколько лет как не развивается.
Вообще порекламировать что-ли его в openssl-users, Чтобы фидбек получить...
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1037378.html. Please comment there using OpenID. Now there are comments
Bitcoin очень удобен и надёжен для хранения денег, но как проводить в нём сделки? Традиционные ...
Bitcoin очень удобен и надёжен для хранения денег, но как проводить в нём сделки? Традиционные способы включают привлечение доверенной третьей стороны. Оказывается, bitcoin так могуч, что это вовсе не обязательно. Ниже я расскажу, как двум людям, не доверяющим друг другу, провернуть сделку в bitcoin без привлечения третьих сторон.
Читать дальше →
После того, как мир узнал, что специальные службы Соединенных Штатов Америки осуществляют …