...
Объекты в Рутокен с точки зрения стандарта PKCS#11 выглядят следующим образом (подробно).
Уровни доступа к объектам в памяти Рутокен
Гостевой уровень позволяет просматривать, создавать, модифицировать и удалять только публичные (несекретные) объекты.
...
Администратор имеет доступ только к публичным объектам. Кроме того, Администратор обладает возможностью очистить память Рутокен, полностью включая приватные (секретные) объекты.
Типы объектов в хранилище данных Рутокен
Публичные (несекретные) объекты - объекты, видимые и доступные для чтения и записи с любым уровнем доступа.
Приватные (секретные) объекты - объекты, видимые и доступные для чтения и записи только с уровнем доступа "пользователь".
Двухфакторный доступ к секретной информации
Первый фактор - физическое наличие устройства.
Второй фактор - знание пользовательского пин-кода.
Пример записи файла через интерфейс PKCS#11
Code Block |
---|
CK_BBOOL ckTrue = CK_TRUE; CK_BBOOL ckFalse = CK_FALSE; CK_OBJECT_CLASS ocData = CKO_DATA; CK_BYTE ckLabel[] = {'f','i','l','e','n','a','m','e','.','t','x','t'}; CK_BYTE ckValue[] = {'t','o','p','s','e','c','r','e','t','i','n','f','o'}; CK_UTF8CHAR ckUserPIN[] = {'1','2','3','4','5','6','7','8'}; CK_ATTRIBUTE DataObject[] = { {CKA_CLASS, &ocData, sizeof(CK_OBJECT_CLASS) }, // признак объекта данных {CKA_TOKEN, &ckTrue, sizeof(CK_BBOOL) }, // объект будет создан на токене {CKA_PRIVATE, &ckTrue, sizeof(CK_BBOOL) }, // объект будет доступен по PIN-коду {CKA_LABEL, ckLabel, sizeof(ckLabel) }, // метка объекта {CKA_VALUE, ckValue, sizeof(ckValue) }, // тело объекта }; CK_RV rv; CK_SESSION_HANDLE hSession; CK_OBJECT_HANDLE ckHandle; . . rv = functionList->C_Login(hSession, CKU_USER, ckUserPIN, sizeof(ckUserPIN)); . . rv = functionList->C_CreateObject(hSession, &DataObject, sizeof(DataObject)/sizeof(CK_ATTRIBUTE), &ckHandle); . . |
Пример чтения файла через интерфейс PKCS#11
Expand | ||
---|---|---|
| ||
|
...