Пишем либу pkcs#11
От: hugo_bss  
Дата: 07.12.08 11:10
Оценка:
Добрый день.

На курсовую дали задание дали, реализовать pkcs#11 под токен.
Стандарт читал, но совершенно не пойму идеологию с объектами.
Как я понимаю объект — это массив аттрибутов. Тогда каким образом осуществляется поиск объектов (я пока дошёл до C_FindObjects).
Я отлаживаю сейчас библиотеку используя Mozzila Thunderbird, и вижу что в функцию C_FindObjectsInit передаётся один аттрибут:
CKA_CLASS TCSO
потом вызывается функция FindObjects, и за ней FindObjectsFinal...
И сразу же вызывается функция
C_FindObjectsInit с передачей атрибута:
CKA_TOKEN true. И снова же, FindObjects, FindObjectsFinal.

Совсем непонятно что собственно выполняют эти функции. Поиск объектов имеющие один из атрибутов?
pkcs#11 cryptoki
Re: Пишем либу pkcs#11
От: J.J.OK  
Дата: 08.12.08 09:05
Оценка:
Здравствуйте, hugo_bss, Вы писали:

_>Добрый день.


_>На курсовую дали задание дали, реализовать pkcs#11 под токен.

А можно озвучить постановку задачи более развернуто? — очень интересно, особенно в части "под токен".

_>Стандарт читал, но совершенно не пойму идеологию с объектами.

_>Как я понимаю объект — это массив аттрибутов.
Совершенно верно.
_> Тогда каким образом осуществляется поиск объектов (я пока дошёл до C_FindObjects).
P11, v2.20, Page 136, C_FindObjectsInit: The matching criterion is an exact byte-for-byte match with all attributes in the
template.
Т.е. в результате такого вызова будут найдены все объекты, у которых имеются атрибуты указанные в шаблоне (количиство атрибутов — последний параметр — ulCount) и значения этих атрибутов байт-в-байт совпадают.

_>Я отлаживаю сейчас библиотеку используя Mozzila Thunderbird, и вижу что в функцию C_FindObjectsInit передаётся один аттрибут:

_>CKA_CLASS TCSO
Никогда не видел такого класса объектов — ни в стандартном (от RSA) pkcs11t.h, ни в том что идет в исходниках мозиллы (по крайней мере в мозилле 1.5.х). Вы на какой версии мозиллы тестируете?

_>потом вызывается функция FindObjects, и за ней FindObjectsFinal...

_>И сразу же вызывается функция
_>C_FindObjectsInit с передачей атрибута:
_>CKA_TOKEN true. И снова же, FindObjects, FindObjectsFinal.

_>Совсем непонятно что собственно выполняют эти функции. Поиск объектов имеющие один из атрибутов?

Судя по всему — да: сначала нашли все объекты у которых CKA_CLASS = ?TCSO, а потом, совершенно отдельно, ищутся все "постоянно хранимые" объекты.
Чем безопаснеe — тем неудобнее ;-)
Re[2]: Пишем либу pkcs#11
От: hugo_bss  
Дата: 08.12.08 12:43
Оценка:
Здравствуйте, J.J.OK, Вы писали:
JJO> А можно озвучить постановку задачи более развернуто? — очень интересно, особенно в части "под токен".
Ознакомиться со стандартом pkcs#11 и реализовать базовые функции Cryptoki для виртуального токена (под токеном понимается, что библиотека является стандартным интерфейсом...вообщем, токена нет :D ) ... может припашут делать виртуальный токен.
Я так понимаю, достаточно будет реализовать чтобы с помощью своей библиотеки я мог подписывать сообщения и проверять подпись.

JJO>Т.е. в результате такого вызова будут найдены все объекты, у которых имеются атрибуты указанные в шаблоне (количиство атрибутов — последний параметр — ulCount) и значения этих атрибутов байт-в-байт совпадают.

ёлки-палки...совсем не внимательный...спасибо большое.

_>>Я отлаживаю сейчас библиотеку используя Mozzila Thunderbird, и вижу что в функцию C_FindObjectsInit передаётся один аттрибут:

_>>CKA_CLASS TCSO
JJO>Никогда не видел такого класса объектов — ни в стандартном (от RSA) pkcs11t.h, ни в том что идет в исходниках мозиллы (по крайней мере в мозилле 1.5.х). Вы на какой версии мозиллы тестируете?

Mozilla Thunderbird 2.0.0.18

сейчас отлаживаю (сказал приложению, что в виртуальном слоте находится токен, а из механизмы ), и в FindObjectsInit передаются следующие параметры:
ulCount = 1;
pTemplate[0].type = 0;
pTemplate[0].ulValueLen = 4;
pTemplate[0].pValue указывает на строку: "TCSO"

после FindObjectsFinal
снова происходит вызов FindObjectsInit

ulCount = 2;
pTemplate[0].type = 1;//CKA_TOKEN
pTemplate[0].ulValueLen = 1;
pTemplate[0].pValue указывает на 1

pTemplate[1].type = 0;//CKA_CLASS
pTemplate[1].ulValueLen = 4;
pTemplate[1].pValue указывает на 01 00 00 00 // по всей вероятности это CKO_CERTIFICATE ???


потом такие

ulCount = 2;
pTemplate[0].type = 1;/CKA_TOKEN
pTemplate[0].ulValueLen = 1;
pTemplate[0].pValue указывает на 1

pTemplate[1].type = 0;//CKA_CLASS
pTemplate[1].ulValueLen = 4;
pTemplate[1].pValue указывает на "SCSO"

и вот последняя парочка

ulCount = 2;
pTemplate[0].type = 0;//CKA_CLASS
pTemplate[0].ulValueLen = 4;
pTemplate[0].pValue указывает на "QCSO"

pTemplate[1].type = x101;//CKA_SUBJECT
pTemplate[1].ulValueLen = 50;
pTemplate[1].pValue указывает на строку... "0N10 UUS10U
Equifax1-0+U$Equifax Secure Certificate Authority"

Т.е. он пытается найти объекты у которых имеются переданный массив аттрибутов, так?
Я так понимаю "QCSO", "SCSO" — это какие-то vendor-specific классы объектов?

Брррр....чувств ую прийдется намучаться %) Думал за неделю справлюсь ... А ещё такой вопрос, есть ли специализированное ПО для тестирования библиотек pkcs#11 ?
pkcs#11 qcso tcso scso cryptoki
Re[3]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 08.12.08 16:16
Оценка:
Здравствуйте, hugo_bss, Вы писали:

_>Здравствуйте, J.J.OK, Вы писали:

JJO>> А можно озвучить постановку задачи более развернуто? — очень интересно, особенно в части "под токен".
_>Ознакомиться со стандартом pkcs#11 и реализовать базовые функции Cryptoki для виртуального токена (под токеном понимается, что библиотека является стандартным интерфейсом...вообщем, токена нет :D ) ... может припашут делать виртуальный токен.

Т.е. по сути нужно сделать всего-лишь "прокладку" с интерфейсом p11 и к приложению и к нижележащему токену?

_>Я так понимаю, достаточно будет реализовать чтобы с помощью своей библиотеки я мог подписывать сообщения и проверять подпись.

А это уже вопрос, т.к. в этом случае у тебя должен быть какой-нибудь токен, в котором реализована какая-нибудь криптография. Судя по постановке — это может быть и мозилловский softoken.. но если тебя попросят самому свой токен наваять...

[...]

JJO>>Никогда не видел такого класса объектов — ни в стандартном (от RSA) pkcs11t.h, ни в том что идет в исходниках мозиллы (по крайней мере в мозилле 1.5.х). Вы на какой версии мозиллы тестируете?


_>Mozilla Thunderbird 2.0.0.18


[...]
_>pTemplate[1].pValue указывает на 01 00 00 00 // по всей вероятности это CKO_CERTIFICATE ???

Да, с учетом интеловского порядка байт, CKO_CERTIFICATE (0x00000001) именно так и будет выглядеть в памяти.


_>Т.е. он пытается найти объекты у которых имеются переданный массив аттрибутов, так?

_>Я так понимаю "QCSO", "SCSO" — это какие-то vendor-specific классы объектов?

Очень похоже на то что в очередной версии мозиллы решили что во "внутренних интерфейсах" или "для внутреннего использования" можно лепить любую грязь ... даже если в стандарте и так прописан нормальный способ объявления vendor-specific значений. Ну или я чего-то очень не понимаю )

[...]

_> А ещё такой вопрос, есть ли специализированное ПО для тестирования библиотек pkcs#11 ?

Э... думаю у каких-нибудь разработчиков должно быть, а вот где взять "нахаляву" (если вопрос именно таков) — не знаю

А если писать самому — имей в виду что тесты для инфраструктурной части (которая у тебя и звучит в постановке задачи) и для механизмов — это несколько разные вещи.
Для инфраструктурной части тесты можно писать тупо "с листа" — глядя в стандарт, по каждому из пунктов описывающих порядок работы "правильного" токена с сессиями (открытие, авторизация, закрытие, ...), объектами (создание, видимость, удаление...) и собственно токеном (инициализация, .. ).
А по каждому из механизмов — нужно понимать как он используется и из других источников (не из тестируемой реализации) получать "эталонные данные" которые ты будешь расшифровывать, проверять и т.д.
Чем безопаснеe — тем неудобнее ;-)
Re[4]: Пишем либу pkcs#11
От: hugo_bss  
Дата: 10.12.08 15:42
Оценка:
Здравствуйте, J.J.OK, Вы писали:

JJO>Т.е. по сути нужно сделать всего-лишь "прокладку" с интерфейсом p11 и к приложению и к нижележащему токену?


JJO>А это уже вопрос, т.к. в этом случае у тебя должен быть какой-нибудь токен, в котором реализована какая-нибудь криптография. Судя по постановке — это может быть и мозилловский softoken.. но если тебя попросят самому свой токен наваять...


Это исключено !!! да и потом. какой толк? их и так сколько хочешь...хочешь — китайские, хочешь — тайваньские...а хочешь — отечественных валом.
Криптографию можно брать открытую, стандартную реализацию, да и потом на худой конец можно и самому наваять необходимые функции.

JJO>Э... думаю у каких-нибудь разработчиков должно быть, а вот где взять "нахаляву" (если вопрос именно таков) — не знаю


жаль ну что ж...прийдется пока ориентироваться на почтовых клиентов. за пару недель до сдачи самому ваять ещё и тестики....

А ещё такой момент. Почему при поиске объектов мозила не обращается не проверяет слоты на наличие там токена\смарткарты.
Т.е. объекты должны храниться в библиотеке? Глупость какая-то получается...
Не совсем понятно...или вот личний ключ может храниться где угодно...и как объяснить приложению где его искать?
тот же файл сертификата pfx хранит в зашифрованном виде ключ, и для доступа к нему нужен пароль.

А ещё, пересмотрел стандарты pkcs, и с ужасом думаю о том, что нужно ещё реализовывать pkcs#15 ?

Вообщем, могли бы вы объяснить на пальцах простую схему зашифрования почтового сообщения используя свою библиотеку pkcs#11 ?

Заранее спасибо
Re[5]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 11.12.08 09:25
Оценка: 4 (2)
JJO>>Т.е. по сути нужно сделать всего-лишь "прокладку" с интерфейсом p11 и к приложению и к нижележащему токену?

JJO>>А это уже вопрос, т.к. в этом случае у тебя должен быть какой-нибудь токен, в котором реализована какая-нибудь криптография. Судя по постановке — это может быть и мозилловский softoken.. но если тебя попросят самому свой токен наваять...


_>Это исключено !!! да и потом. какой толк? их и так сколько хочешь...хочешь — китайские, хочешь — тайваньские...а хочешь — отечественных валом.


Итого, все-таки получается своя "прокладка" + чужой токен + некоторый свой прикладной код, демонстрирующий пару полезных вариантов использования, так?
Кстати, насчет "отечественных валом" — из моего скромного личного опыта ничего подобного сказать не могу .. может просвятите — о каких именно "отечественных" токенах идет речь?

_>А ещё такой момент. Почему при поиске объектов мозила не обращается не проверяет слоты на наличие там токена\смарткарты.

Первый параметр в FindObjectsInit — сессия. Сессия открывается в слоте. Если в данном слоте отсутствует токен, то и сессию открыть не выйдет. Если за время с момента открытия сессии токен был извлечен, после чего произошла попытка что-то в этой сессии сделать — драйвера данного устройства должны корректно эту ситуацию отработать. А по хорошему — приложение должно (например периодически) вызывать WaitForSlotEvent и на лету отрабатывать подключение и отключение устройств.

_>Т.е. объекты должны храниться в библиотеке? Глупость какая-то получается...

Вот это уже я не понял .... пропустим.

_>Не совсем понятно...или вот личний ключ может храниться где угодно...и как объяснить приложению где его искать?

Вариантов как искать — масса. Все зависит от того что именно приложению нужно.
Например, можно просто искать последовательно во всех слотах (во всех соответствующих сессиях) первый попавшийся объект с CKA_CLASS = CKO_PRIVATE_KEY и потом, в зависимости от его CKA_KEY_TYPE выбирать необходимые механизмы для хэша и эцп.
А можно в конфигурационных данных приложения запомнить некоторые атрибуты выбранного сертификата (CKA_ID, CKA_LABEL, CKA_SUBJECT) и искать его (последовательно во всех слотах, либо в определенном токене, атрибуты которого тоже можно запомнить — vendor, model, serial) а потом — искать соответствующий ему приватный ключ...
То что объекты с CKA_PRIVATE = TRUE могут быть найдены только после авторизации в соответствующем токене — думаю пояснять не нужно...

_>тот же файл сертификата pfx хранит в зашифрованном виде ключ, и для доступа к нему нужен пароль.

pfx (он же PKCS#12) — это транспортный контейнер — внешний по отношению к токену файл, и непосредственно к работе PKCS#11-токена отношения не имеет.

_>А ещё, пересмотрел стандарты pkcs, и с ужасом думаю о том, что нужно ещё реализовывать pkcs#15 ?

Совершенно необязательно: pkcs#15 — это стандарт, демонстрирующий "правильную" внутреннюю реализацию некоторой части функций pkcs#11-токена. Но раз по постановке отсутствует необходимость реализовывать свой токен, то и pkcs#15 не нужен.

_>Вообщем, могли бы вы объяснить на пальцах простую схему зашифрования почтового сообщения используя свою библиотеку pkcs#11 ?


Лучше на этот вариант использования не замахиваться — он автоматически тянет за собой еще два больших "библиотечных" куска — CMS && ASN.1.
Для справки — защищенные почтовые сообщения в том ключе который видимо интересен описаны в стандарте S/MIME (http://www.ietf.org/rfc/rfc2633.txt), который в свою очередь основан на Cryptographic Message Syntax — CMS (http://www.ietf.org/rfc/rfc3852.txt), который в свою очередь основан на ASN.1 — ITU-T X.680-X.699 ...
Так что для того чтобы реализовать "схему зашифрования почтового сообщения используя свою библиотеку pkcs#11" тебе нужно будет либо реализовать вышеперечисленное самому (это как до луны пешком либо использовать сторонние средства. Из доступных — это мозилловский nss или openssl, что тоже потребует времени на хоть какое-то понимание инструмента, но уже более-менее реально.

А для понимания как именно устроены зашифрованные почтовые сообщения — посмотри описание EnvelopedData в CMS.
Тут вот еще обсуждали что-то около того: http://www.rsdn.ru/forum/message/2451320.aspx
Автор: J.J.OK
Дата: 18.04.07


Думаю в рамках курсовой вполне можно просто пошифровать ... и козырнуть знанием того как оно нужно делать на самом деле
Чем безопаснеe — тем неудобнее ;-)
Re[6]: Пишем либу pkcs#11
От: hugo_bss  
Дата: 12.12.08 08:37
Оценка:
Здравствуйте, J.J.OK, Вы писали:

JJO>>>Т.е. по сути нужно сделать всего-лишь "прокладку" с интерфейсом p11 и к приложению и к нижележащему токену?

JJO>Итого, все-таки получается своя "прокладка" + чужой токен + некоторый свой прикладной код, демонстрирующий пару полезных вариантов использования, так?

да, именно так.

JJO>Кстати, насчет "отечественных валом" — из моего скромного личного опыта ничего подобного сказать не могу .. может просвятите — о каких именно "отечественных" токенах идет речь?


Первое что пришло в голову: ruToken, trueToken, Кристал, Almaz, eToken, uaToken, Guardant, SenseLock

_>>Т.е. объекты должны храниться в библиотеке? Глупость какая-то получается...

JJO>Вот это уже я не понял .... пропустим.

я имею ввиду, должен быть примерно следующий алгоритм?
1. Инициализация библиотеки;
2. Нахождение слота, поддерживаемые механизмы библиотекой.
3. Если есть в нём токен:
а) инициализировать токен
б) инициализировать поддерживаемые им объекты (в зависимости от токена)

4. Поиск поддерживаемых объектов
5. Получение аттрибутов найденных.
6. Аутентификация на ключе
7. реализация криптопреобразований.
8. Закрытие сессий, уничтожение объектов.

так?

_>>Вообщем, могли бы вы объяснить на пальцах простую схему зашифрования почтового сообщения используя свою библиотеку pkcs#11 ?


JJO>Лучше на этот вариант использования не замахиваться — он автоматически тянет за собой еще два больших "библиотечных" куска — CMS && ASN.1.


Хм... я думал это будет выглядеть как-то попроще:
само приложение передаёт необходимый блок данных для криптопреобразования(КрП) с соответствующими параметрами библиотеке pkcs#11. Библиотека используя подключаемые крипто-средства выполняет соответствующее КрП и возвращает результат.

JJO>Думаю в рамках курсовой вполне можно просто пошифровать ... и козырнуть знанием того как оно нужно делать на самом деле

Интересно, а бакалаврская из этого может вырасти?
Re[7]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 12.12.08 12:58
Оценка:
[...]

JJO>>Кстати, насчет "отечественных валом" — из моего скромного личного опыта ничего подобного сказать не могу .. может просвятите — о каких именно "отечественных" токенах идет речь?


_>Первое что пришло в голову:

.. да .. паровозом возник вопрос а что-же понимать под "отечественным" — то что "тут" продается, то что "тут" изготовляется, или то что реально можно использовать через PKCS#11 c "отечественными" алгоритмами? Но это вопрос ответа в общем-то не требующий
По перечисленным:
— ruToken — есть "отечественные" алгоритмы, но неизвестно как ими пользоваться через PKCS#11 ..
— trueToken = SenseLock с пирогами, на их вебе — поддерживаются буржуйские, а из отечественного — только гост28147 — и тот "в планах"
— Кристал, Almaz — первый раз слышу, ничего не нашел
— eToken — вообще ни разу не отечественный, несмотря на наличие филиала(-ов) — см http://www.aladdin.com/, соответственно поддерживает только буржуйские алгоритмы
— uaToken — любопытно, но сходу не нашел инфы по поддерживаемым алгоритмам — может что-то "отечественное" и есть ... а может и нету.
— Guardant — а у них разве есть возможность работы с железкой через PKCS#11 ?

Итого: из всего перечисленного сходу только один более-менее реальный _претендент_ на звание "настоящего отечественного токена" в самом сильном смысле термина

_>>>Т.е. объекты должны храниться в библиотеке? Глупость какая-то получается...

JJO>>Вот это уже я не понял .... пропустим.

_>я имею ввиду, должен быть примерно следующий алгоритм?

_>1. Инициализация библиотеки;
_>2. Нахождение слота, поддерживаемые механизмы библиотекой.
_>3. Если есть в нём токен:
_> а) инициализировать токен
_> б) инициализировать поддерживаемые им объекты (в зависимости от токена)

_>4. Поиск поддерживаемых объектов
_>5. Получение аттрибутов найденных.
_>6. Аутентификация на ключе
_>7. реализация криптопреобразований.
_>8. Закрытие сессий, уничтожение объектов.

_>так?


Нет, не так
1. Инициализация библиотеки, автоматом означает подключение доступных устройств
2. Перебор слотов для понимания где установлены токены а где нет
2а. — optional — инициализация (если термин перекрыт смысловой нагрузкой из других предметных областей — поясню — здесь по деструктивности это что-то вроде "форматирования") токенов у которых отсутствует флаг TOKEN_INITIALIZED + возможно инициализация пользовательского PIN, если отсутствует флаг USER_PIN_INITIALIZED
3 — optional — отбор слотов (токенов) поддерживающих необходимый механизм
4 открытие сессий в нужных слотах (токенах)
5 — optional — авторизация в нужных сессиях, если предполагается что будет выполняться работа с ключами (которые на 99% будут CKA_PRIVATE=TRUE)
6 поиск нужных/модификация/создание/удаление ненужных/ объектов
7 разнообразное использование найденного/созданного: -в крипто-механизмах, -для "получения атрибутов" ...
8 ....
9 закрытие

Ну и, видимо необходимые тезисные пояснения:
Объекты хранятся в токене, а не в пользовательских библиотеках или приложениях — на этом уровне видны только хэндлы объектов.
Крипто-преобразования реализуются в токене (либо аппаратно, либо, "по бедности", в его драйверах, что есть аналог чисто программного токена, каковым является мозилловский софтокен), но никак не на на уровне пользовательских библиотек или приложений. И вообще, часто реализация токена такова, что может не быть возможности получить значение ключа — ни в каком виде — только использовать его в крипто-механизмах.

[...]

JJO>>Думаю в рамках курсовой вполне можно просто пошифровать ... и козырнуть знанием того как оно нужно делать на самом деле

_>Интересно, а бакалаврская из этого может вырасти?

Это уже Вам на месте решать
Чем безопаснеe — тем неудобнее ;-)
Re[8]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 12.12.08 13:05
Оценка:
JJO>Ну и, видимо необходимые тезисные пояснения:
JJO>Объекты хранятся в токене, а не в пользовательских библиотеках или приложениях — на этом уровне видны только хэндлы объектов.
А "видны" они становятся только после того как объект был найден или создан, а для этих действий самым сильным ограничением является наличие авторизации в токене (либо ее отсутствие) — PUBLIC, SO, USER.
Чем безопаснеe — тем неудобнее ;-)
Re[7]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 12.12.08 13:16
Оценка:
JJO>>Лучше на этот вариант использования не замахиваться — он автоматически тянет за собой еще два больших "библиотечных" куска — CMS && ASN.1.

_>Хм... я думал это будет выглядеть как-то попроще:

_>само приложение передаёт необходимый блок данных для криптопреобразования(КрП) с соответствующими параметрами библиотеке pkcs#11. Библиотека используя подключаемые крипто-средства выполняет соответствующее КрП и возвращает результат.

А кто будет смотреть указанные источники? хотя-бы по диагонали?
Криптографическое преобразование это "зашифровать", "подписать", "посчитать хэш" — при этом на входе и на выходе — "просто байтики" — посмотри на описание механизмов в уже прочитанном тобой PKCS#11...
А о том как уложить эти "просто байтики" в необходимый прикладной формат, коих на самом деле может быть много, у _криптографического_ устройства голова болеть не должна.
На самом деле, ввиду того что CMS, скажем так, очень популярен, какое-то время назад в PKCS#11 появился механизм CKM_CMS_SIG, с помощью которого можно получить CMS SignedData... но я не знаю ни одного токена, в котором этот мезанизм был-бы реализован. Может в каком-то из HSM-ов ..
Но и наличие этого механизма тебя "не спасает", т.к. тебе для зашифрованного письма нужно сочинить CMS EnvelopedData ..
Как-то так
Чем безопаснеe — тем неудобнее ;-)
Re[8]: Пишем либу pkcs#11
От: pva  
Дата: 13.12.08 21:43
Оценка:
Здравствуйте,

JJO> — trueToken = SenseLock с пирогами, на их вебе — поддерживаются буржуйские, а из отечественного — только гост28147 — и тот "в планах".

Посмотри здесь кой-какие доделки к нему в части работы с токенами.
Поскольку доступ реализован через DLL, то можешь подставить свою DLL вместо оригинальной и тестировать.

JJO> — Кристал, Almaz — первый раз слышу, ничего не нашел

Это украинские разработки — Харьков.
JJO> — uaToken — любопытно, но сходу не нашел инфы по поддерживаемым алгоритмам — может что-то "отечественное" и есть ... а может и нету.
Скорее всего ДСТУ + что-нибудь кастомное. Надо смотреть сертифицирован ли.
newbie
senselock token software
Re[9]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 15.12.08 09:39
Оценка:
Здравствуйте, pva, Вы писали:

pva>Здравствуйте,


JJO>> — trueToken = SenseLock с пирогами, на их вебе — поддерживаются буржуйские, а из отечественного — только гост28147 — и тот "в планах".

pva>Посмотри здесь кой-какие доделки к нему в части работы с токенами.
pva>Поскольку доступ реализован через DLL, то можешь подставить свою DLL вместо оригинальной и тестировать.
Однако это тот-же самый trueToken "вид сбоку" — на страничке даже ссылка есть
Как "кролик" для тестирования — вполне сойдет, но на "настоящий отечественный токен" — увы, не тянет.

JJO>> — Кристал, Almaz — первый раз слышу, ничего не нашел

pva>Это украинские разработки — Харьков.
Однако гугл молчит как партизан ... может не так спрашиваю?

JJO>> — uaToken — любопытно, но сходу не нашел инфы по поддерживаемым алгоритмам — может что-то "отечественное" и есть ... а может и нету.

pva>Скорее всего ДСТУ + что-нибудь кастомное. Надо смотреть сертифицирован ли.
Однако судя по тому что написано тут http://58480.ua.all-biz.info/cat.php?oid=56877 — в нем нет ничего "отечественного", и что странно, нет даже AES-а: Поддержка стандарта X.509 и алгоритмов RSA, DES (3DES), RC2, RC4, MD4, MD5, SHA-1
Чем безопаснеe — тем неудобнее ;-)
Re[10]: Пишем либу pkcs#11
От: pva  
Дата: 15.12.08 19:37
Оценка: 2 (1)
Здравствуйте, J.J.OK, Вы писали:

JO>>> — trueToken = SenseLock с пирогами, на их вебе — поддерживаются буржуйские, а из отечественного — только гост28147 — и тот "в планах".

pva>>Посмотри здесь кой-какие доделки к нему в части работы с токенами.
pva>>Поскольку доступ реализован через DLL, то можешь подставить свою DLL вместо оригинальной и тестировать.
JJO>Однако это тот-же самый trueToken "вид сбоку" — на страничке даже ссылка есть
JJO>Как "кролик" для тестирования — вполне сойдет, но на "настоящий отечественный токен" — увы, не тянет.
Может я не понял исходного вопроса, но вам шашечки или ехать? Утилиты, выложенные там дают возможность пошагово отладить свою dll, вместо использования mozilla blabla.

JJO>>> — Кристал, Almaz — первый раз слышу, ничего не нашел

pva>>Это украинские разработки — Харьков.
JJO>Однако гугл молчит как партизан ... может не так спрашиваю?
Может. здесь и здесь.

JJO>>> — uaToken — любопытно, но сходу не нашел инфы по поддерживаемым алгоритмам — может что-то "отечественное" и есть ... а может и нету.

pva>>Скорее всего ДСТУ + что-нибудь кастомное. Надо смотреть сертифицирован ли.
JJO>Однако судя по тому что написано тут http://58480.ua.all-biz.info/cat.php?oid=56877 — в нем нет ничего "отечественного", и что странно, нет даже AES-а: Поддержка стандарта X.509 и алгоритмов RSA, DES (3DES), RC2, RC4, MD4, MD5, SHA-1
Собственно, а чего вы уперлись в "отечественное"? Стандарт-то иностранный, а реализованные алгоритмы — это уже че захотите. Если есть коммерческий интерес — напишите мне в личку — поговорим о добавлении нужной крипты в SenseLock.
newbie
Re[11]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 16.12.08 09:51
Оценка:
Здравствуйте, pva, Вы писали:

[...]
pva>Может я не понял исходного вопроса, но вам шашечки или ехать? Утилиты, выложенные там дают возможность пошагово отладить свою dll, вместо использования mozilla blabla.

[...]

pva>Собственно, а чего вы уперлись в "отечественное"? Стандарт-то иностранный, а реализованные алгоритмы — это уже че захотите. Если есть коммерческий интерес — напишите мне в личку — поговорим о добавлении нужной крипты в SenseLock.


Спасибо за наводки — посмотрим что из этого может в жизни пригдиться
По сути — "отечественное" — это абсолютно боковой вопрос — чисто мое любопытство на предмет "расширить кругозор", и товарищу hugo_bss оно вообще не нужно.
А касательно коммерческого интереса — его, чисто теоретически, могут вызывать только сертифицированные конторой железки..
Кстати, на сколько я знаю, дополнение PKCS#11 для гост-ов, кстати "одобренное", заброшено в RSA и стоит в планах на включение в очередную версию стандарта, т.е. в PKCS#11 появятся описания соответствующих механизмов и объектов.
Чем безопаснеe — тем неудобнее ;-)
Re[11]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 16.12.08 09:58
Оценка:
[...]
pva>Собственно, а чего вы уперлись в "отечественное"? Стандарт-то иностранный, а реализованные алгоритмы — это уже че захотите.

Не совсем так. По хорошему должен быть нормативный документ, фиксирующий как именно должны выглядеть параметры для данного конкретного механизма, из чего состоят соответствующие объекты и проч. Иначе прикладники повесятся обеспечивать поддержку разных самопальных механизмов для одного и того-же алгоритма ...
Чем безопаснеe — тем неудобнее ;-)
Re[9]: Пишем либу pkcs#11
От: hugo_bss  
Дата: 23.12.08 23:23
Оценка:
Ёлки-палки....сессия приближается, а у меня ещё ничего не готово...пока всё остальное сдавал, времени не было сесть курсовой.

А сегодня присел, и реализовал поиск по объектов, добавление и удаление объектов...получение атрибутов объектов.
Но как-то непонятно...добавляю я объект (описанный в стандарте):
CK_OBJECT_CLASS ck_class = CKO_CERTIFICATE;
CK_CERTIFICATE_TYPE certType = CKC_X_509;
CK_UTF8CHAR label[] = "A certificate object";
CK_BYTE subject[] = {1};
CK_BYTE id[] = {123};
CK_BYTE certificate[] = {2};
CK_BBOOL ck_true = CK_TRUE;

а Thunderbird его находит, а потом запрашивает аттрибуты типа: CKA_ISSUER, CKA_SERIAL_NUMBER и 0xce534352 (ASCII: ОCSR) ... вот собственно откуда и взялись эти загадочные TCSO,QCSO...
в и-нете наткнулся на аналогичный вопрос
Но тогда непонятно....я не получил ни одного запроса от Thunderbird-а без Vendor Defined Attributes.

и ещё непонятно. для чего получать список механизмов открывать сессию и снова получать список механизмов?
Re[10]: Пишем либу pkcs#11
От: J.J.OK  
Дата: 24.12.08 09:09
Оценка: 2 (1)
Здравствуйте, hugo_bss, Вы писали:

_>Ёлки-палки....сессия приближается, а у меня ещё ничего не готово...пока всё остальное сдавал, времени не было сесть курсовой.


_>А сегодня присел, и реализовал поиск по объектов, добавление и удаление объектов...получение атрибутов объектов.

_>Но как-то непонятно...добавляю я объект (описанный в стандарте):
_> CK_OBJECT_CLASS ck_class = CKO_CERTIFICATE;
_> CK_CERTIFICATE_TYPE certType = CKC_X_509;
_> CK_UTF8CHAR label[] = "A certificate object";

_> CK_BYTE subject[] = {1};

Если это значение подразумевается использовать как pValue для атрибута типа CKA_SUBJECT, то это радикально неправильно — здесь должно быть DER-кодированное значение соответствующего поля из серитфиката

_> CK_BYTE id[] = {123};


_> CK_BYTE certificate[] = {2};

Аналогично — если это подразумевается как pValue для CKA_VALUE, то здесь должен быть сам сертификат.

_> CK_BBOOL ck_true = CK_TRUE;


_>а Thunderbird его находит, а потом запрашивает аттрибуты типа: CKA_ISSUER, CKA_SERIAL_NUMBER и 0xce534352 (ASCII: ОCSR) ... вот собственно откуда и взялись эти загадочные TCSO,QCSO...

_>в и-нете наткнулся на аналогичный вопрос
Там кстати товарищу все правильно ответили, и ссылку правильную дали — прямо с номером нужной строки (да и в прошлый раз — если бы было не лень читать — все стало бы понятно):

"база" от которой "растут" мозилла-специфик значения атрибутов:
CKA_NSS (CKA_VENDOR_DEFINED|NSSCK_VENDOR_NSS) = 0x80000000 | 0x4E534350 = 0xce534350
CKA_(0xce534352) = CKA_NSS + 2 = (смотрим в заголовочный файл по той ссылке) CKA_TRUST_NON_REPUDIATION

Что именно делать если ты не собираешься поддерживать данные типы атрибутов? — в найденном тобой "вопросе" вполне логичная рекомендация — возвращать CKR_ATTRIBUTE_TYPE_INVALID.

_>Но тогда непонятно....я не получил ни одного запроса от Thunderbird-а без Vendor Defined Attributes.



_>и ещё непонятно. для чего получать список механизмов открывать сессию и снова получать список механизмов?

А на такие вещи можно особого внимания не обращать — ты ведь наблюдаешь использование токена находясь на "самом нижнем уровне", а мозилла большая, и те действия которые на уровне токена могут показаться не очень понятным/целесообразным, вполне могут быть иницированы на три уровня абстракции выше, где в соответствующем апи все уже будет выглядеть просто и логично.
Чем безопаснеe — тем неудобнее ;-)
Re[11]: Пишем либу pkcs#11
От: hugo_bss  
Дата: 25.12.08 00:09
Оценка:
JJO>Если это значение подразумевается использовать как pValue для атрибута типа CKA_SUBJECT, то это радикально неправильно — здесь должно быть DER-кодированное значение соответствующего поля из серитфиката

Это я тестирую просто...мне щас важно увидеть, чтоб приложение обратилось нашло необходимым мой объект.
А если оно исчет только Vendor Defined объекты....я то возвращаю CKR_ATTRIBUTE_TYPE_INVALID...но толку? всё равно оно не исчет других объектов!!!
Вот что меня собственно и огорчает....хотя....может если я ему подсуну объект с правильными полями, он не будет запрашивать свои Invalid аттрибуты!? Надо попробовать

JJO>Там кстати товарищу все правильно ответили, и ссылку правильную дали — прямо с номером нужной строки (да и в прошлый раз — если бы было не лень читать — все стало бы понятно):


Да я то прочитал и понял как формируется! спасибо, конечно, что расписали Ссылку дал на всякий случай...вдруг кому понадобится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.