id: Гость   вход   регистрация
текущее время 01:48 29/03/2024
Автор темы: Гость, тема открыта 06/04/2014 15:43 Печать
Категории: хард
создать
просмотр
ссылки

OpenPGP crypto key


Привет.
Я думаю над проектом устройства, реализующего необходимые для конфиденциальной переписки криптографические функции. Мотив в том, чтобы предотвратить доступ к хранилищу ключей с потенциально скомпрометированного компьютера. Вопрос – как организовать интерфейс взаимодействия устройства с хостом. В конечном счёте, хотелось бы получить решение, полностью совместимое с протоколом openpgp: формат ключей, сообщений, подписей и прочее. Чтобы мне не изобретать велосипеды, может быть, вы подскажете какие стандартные решения в этой области применимы? Читал, что есть стандарт PKCS #11, но пока не ознакомился с документацией. Он будет пригоден для моей задачи?
Спасибо!


 
На страницу: 1, 2, 3 След.
Комментарии
— SATtva (19/01/2015 20:09)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Здесь. Финальную версию скорее всего выложу на bitbucket.
— SATtva (23/01/2015 11:29)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Бета-версия вот:

filefile:gpgremote-0.9b1.tar.bz2
filefile:gpgremote-0.9b1.tar.bz2.sig
— SATtva (23/01/2015 12:53, исправлен 23/01/2015 13:20)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Тут же обнаружил небольшую ошибку: в конструкциях типа "--output -" одиночный дефис воспринимается как опция. Уже исправлено (пока только у меня). Ох уж эти спэшл-кейсы. :\

— Гость (23/01/2015 14:30)   <#>

Впечатляет. И не подумал бы, что в, казалось бы, такой простой задаче требуется так много кода.

Английский в README:

for various of reasons

→ variety of reasons? Я сам не знаю.

Finally, gpg is called, and its output (comprised of that includes STDERR, STDOUT, exit code, as well as newly generates files) is sent back to client.

Я бы так сделал.

Make sure you have Python 3.2.x or later installed on all systems you intend to use for client and server operation.

Вместо intend лучше plan или want. Это более формально. Intend — это ближе к «намереваться, замышлять», слишком художественный смысл (хотя тоже используется в тех. текстах).

Both client and server modules are self-contained

Не уверен, что это называется self-contained, хотя я понял, что вы хотите сказать. Обычно пишут что-то типа stand-alone.

Running GPG Remote Client as a drop-in replacement for system-wide gpg requires that gpgremote_client.py script to be placed moved to or symlinked from with the file in /usr/bin/gpg

Вот как-то так я бы написал. Оборот to be to там напрашивается сам собой, и, как нас учили, надо писать не "о", а "что". Не описательно, а конкретно.

which can be overridden with

Мне кажется, в этих случаях все пишут overwritten (параметр переписывается новым конфигом, а не "отменяется", да ещё и в юридическом смысле поди).

However, specific path

However лучше всегда ставить в начало. По правилам, после него всегда запятая. Вроде так.

which gpg processes it contextually

Иначе рунглиш.

Please bear in mind that

Слишком нефорамльно и художественно. Техницизмы: remind, recall, take into account, note, notice.

Additional Another potential risk

У "additional" есть слишком "additional" смысл, и если вы не о нём, то лучше сказать another.

This however requires correct

However, this requires... Я не уверен про this vs it, но чаще пишут именно it.

in respect to

А не with respect to?

placeholder

Кажется, нетехническое и неуместное слово — раз, смысл я с первых прочтений не понял — два.

which they may contain sensitive cleartext data

Рунглиш. Which — это наше всё, нельзя им злоупотреблять. Это только мы его в каждое предложение суём по поводу и без.

where S is the package size limit, and T is the threads count.

По-моему, запятая не нужна: "а и b", хотя "а, b, и c". Кажется, так.

the server can only operate with unprotected private keys.

Жаль.

Язык очень хороший (поделитесь с unknown'ом и gegel'ем, им явно не хватает), но много где, на мой вкус, слишком неформальный и гуманитарный. К математическим объектам у вас применяются слова, которые обычно используются для описания вещей.

Надо бы ещё сам код потестить, и можно ждать бету гамму с дельтой. :)
— Гость (23/01/2015 14:32)   <#>

+remember
— SATtva (23/01/2015 15:39)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Непосредственно логики там не так уж много. Если выкинуть комментарии (aka docstrings), дублированный кусок кода сетевого интерфейса и весь обвес с логами и обработкой ошибок, объём сократится раза в два.


Правильно, как есть.


Разница между "состоящий из" и "включающий" в том, что второе — implicitly открытый перечень ("включает это и, возможно, что-то ещё"). Первоначально написал тут именно "includes", но позднее при правке заменил ради большей однозначности.


Тут речь о том, что не имеют зависимостей в виде внешних модулей (аналог статической линковки в C/C++), это общепринятый термин.


Тут неточность в моей формулировке привела к тому, что Вы неправильно поняли весь пассаж — "overridden" относится не к конфигу, а к пути, где программа будет его искать (т.е. как в предыдущем абзаце). Исправил.


Это одно и то же. Например.


В данном конкретном случае употребление оправдано.


Обращал внимание, что англоязычные ставит запятую даже в перечислениях из двух элементов. Вероятно, это распространённая ошибка — глянул сейчас правила, и, формально, там то же, что и в русском: серия из трёх и более либо сложное предложение.

С остальным согласен, спасибо за замечания.


Это относится к случаю, когда клиент и сервер находятся на разных машинах. В противном случае, если настроен gpg-agent с графическим pinentry, вылетит птичка окошко для ввода пароля. А по поводу удалённого вызова см. один из пунктов TODO. У gpg-agent вроде бы есть какой-то IPC-интерфейс, но в деталях не разбирался. Меня больше смущает тот факт, что парольная фраза пойдёт через питонокод, а у него безопасность данных в памяти отсутствует как класс (как у всех интерпретируемых языков, собственно), т.е. "забыть" пароль не удастся, он там и будет торчать в памяти сервера, пока ОС не сольёт всё в своп. Так что пока не уверен, стоит ли вообще связываться с передачей паролей.
— SATtva (23/01/2015 19:26)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Запостил в репозиторий: https://bitbucket.org/sattva/gpg-remote
— Гость (24/01/2015 00:17)   <#>

Имхо, как раз includes — включение без конкретизации, всё ли это. В иных случаях используется formed by или consists of. Правда, опять же, это больше для вещей (как и comprize), а не объектов. Для последних используется что-то уместное для конкретного случая (to be или др. глагол). Наверно, я бы в вашем случае написал consists of, хотя не исключено, что есть более удачные варианты.
— SATtva (24/01/2015 11:09)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Так я ровно об этом и пишу. :) Касаемо замечания относительно comprized, это уже по большей части вкусовщина, чем конструктив. Доки уже совершенно понятны, и они меня на самом деле меньше всего волнуют — куча функций совсем не покрыта тестами.
— Гость (25/01/2015 01:34)   <#>

Да, упустил я. :) В общем, больше пока замечаний нет.
— SATtva (27/01/2015 17:56)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Сделал специальную страничку, дальнейшее обсуждение можно вести там. Также зафиксировал вторую бету с несколькими незначительными изменениями.
На страницу: 1, 2, 3 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3