lecture.md 6,1 КБ
Newer Older
lagutinakv's avatar
lagutinakv включено в состав коммита
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# KeyStore

Copyright © 2025 ООО «Открытая мобильная платформа».
Этот документ предоставляется в соответствии
с [Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная](../../LICENSE.CC-BY-4.0.ru.md).

## Aurora KeyStore

Aurora KeyStore предназначено для обеспечения следующих возможностей:

*	хранение в зашифрованном виде данных пользователя: открытый/закрытый ключ ЭП, ключи симметричного шифрования, сертификат открытого ключа ЭП;
*	доступ к данным на основе пароля (пин-кода);
*	механизмы подписи и проверки подписи;
*	механизм генерации асимметричных (открытый/закрытый ключ ЭП) и симметричных ключей;
*	механизмы шифрования и расшифрования данных;
*	механизмы формирования хэш-кода.

## Реализация KeyStore

Aurora KeyStore реализует криптографический токен, имеющей две возможные реализации:

*	TEE Keystore — программно-аппаратное средство, использующее аппаратную поддержку ARM TrustZone (для устройств, поддерживающих TEE);
*	SoftHSM Keystore – программное средство.

Ключевое отличие реализации TEE Keystore от SoftHSM заключается в том, что данные TEE хранятся в отдельной защищенной области памяти.

Aurora Keystore используется совместно с КриптоAPI (работает под управлением ОС Аврора), реализующим интерфейсные функции взаимодействия прикладного ПО с Keystore и СКЗИ.
КриптоAPI построено на основе библиотеки QCA.
Приложения (де)шифруют свои данные без прямого использования ключей (например, SoftPOS и браузер).

На устройствах, поддерживающих TEE, доступна только реализация TEE Keystore. Реализация SoftHSM Keystore используется на устройствах без поддержки TEE и в эмуляторе.

## UserApp Keystore

Хранилище типа UserApp Keystore (USERAPP токен) обеспечивает хранение данных конкретного пользователя, обрабатываемых одним определённым приложением.

UserApp Keystore ограничивает несанкционированный доступ к защищаемым данным как со стороны других пользователей мобильного устройства, так и со стороны прикладных приложений, не являющихся владельцем хранилища.
Примером приложения, требующего использования UserApp Keystore, может быть SoftPOS-терминал.

## Основные моменты при работе с KeyStore

В приложении должен быть реализован обработчик запросов.
Обработчик запросов должен работать в отдельном потоке.
Библиотека QCA должна быть инициализирована (QCA::Initializer) до выполнения любых операций.
Провайдер PKCS#11 должен быть инициализирован (QCA::KeyStoreManager).
Токен приложения должен быть однократно проинициализирован (создан).
В операциях с ключами из KeyStore необходимо явно задавать используемый провайдер Aurora KeyStore — qca—aurora—pkcs11.

## qca-aurora-pkcs11

Взаимодействие приложений с Aurora KeyStore (USERAPP токеном) осуществляется с использованием стандартного КриптоAPI ОС Аврора (QCA). 
Для доступа к Aurora KeyStore используется специальный криптопровайдер (плагин) QCA — qca-aurora-pkcs11.

Для того, чтобы использовались функции и объекты именно Aurora KeyStore, при любых операциях, позволяющих выбирать криптопровайдера, должен быть явно выбран плагин qca-aurora-pkcs11.
Это делается указанием строки "qca-aurora-pkcs11" в параметре provider при вызове конструктора требуемого объекта.

Токен Aurora KeyStore предназначен для долговременного защищенного хранения ключевых данных.
Непосредственно содержимое секретных ключей никогда не извлекается из токена.
Все криптооперации, требующие использования ключей, выполняются внутри токена.

Прежде чем приложение сможет работать с USERAPP токеном, токен должен быть инициализирован.
Инициализация токена может быть выполнена, например, при первом запуске приложения.
Для инициализации используется вызов initKeyStore() (QCA::KeyStoreManager).