Как написать оболочку PKCS#11 для моего устройства?

Я сделал очень простой Soft-HSM - только для личного обучения. Я хочу добавить к нему интерфейс PKCS#11. Где я могу узнать об этом, или, возможно, найти что-то уже написанное с открытым исходным кодом для изучения?

Я понимаю, что за это можно было бы проголосовать только за то, что подняли этот вопрос (плохая безопасность и т. д.), Но я хотел убедиться, что это строго для учебных целей.

SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
1
0
467
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вам нужно ознакомиться со спецификацией PKCS#11. Я создал git-репозиторий PKCS11-SPECS со всеми его версиями в одном месте. Я лично считаю PKCS#11 v2.20 последней «пригодной для использования» версией, потому что в более поздних версиях авторы удалили важные части, которые имеют решающее значение для понимания всеми, кто разрабатывает интероперабельные библиотеки PKCS#11 (время жизни сеанса и т. д.). Я предупредил их об удалении этой части, но, похоже, им было все равно. Так что IMO PKCS # 11 v2.20 - ваш лучший выбор, если вам не нужно использовать какие-то другие блестящие причудливые новые алгоритмы, которых нет в v2.20.

Еще один мой проект, который может быть вам полезен, это EMPTY-PKCS11. Это минималистичная библиотека C, которая максимально просто реализует API PKCS#11 v2.20 — все функции PKCS#11, кроме C_GetFunctionList функции, возвращают CKR_FUNCTION_NOT_SUPPORTED возвращаемое значение. Он был протестирован на нескольких настольных и мобильных платформах и поэтому может использоваться в качестве облегченного каркаса для разработки переносимых библиотек PKCS#11.

После этого вы также можете взглянуть на PKCS11-MOCK, еще одну минималистическую библиотеку PKCS#11 v2.20. Это не настоящий криптографический модуль, а просто фиктивный объект, разработанный специально для модульного тестирования некоторых других моих проектов.

Я надеюсь, что эти проекты могут стать надежной отправной точкой в ​​вашем процессе обучения.

Другие вопросы по теме