#encryption #cryptography #pkcs#11 #pkcs11interop
#шифрование #криптография #pkcs # 11 #pkcs11interop
Вопрос:
Я использую библиотеку Pkcs11Interop и пытаюсь протестировать шифрование и дешифрование с помощью механизма RSA_PKCS_OAEP.
CK_RSA_PKCS_OAEP_PARAMS p = new CK_RSA_PKCS_OAEP_PARAMS();
p.HashAlg = (uint)CKM.CKM_SHA_1;
p.Mgf = (uint)CKG.CKG_MGF1_SHA1;
p.Source = (uint)CKZ.CKZ_DATA_SPECIFIED;
p.SourceData = IntPtr.Zero;
p.SourceDataLen = 0;
CK_MECHANISM mech = CkmUtils.CreateMechanism(CKM.CKM_RSA_PKCS_OAEP, p);
С вышеупомянутым механизмом все в порядке, но если я изменю алгоритм хэширования на SHA-256, как показано ниже:
CK_RSA_PKCS_OAEP_PARAMS p = new CK_RSA_PKCS_OAEP_PARAMS();
p.HashAlg = (uint)CKM.CKM_SHA256;
p.Mgf = (uint)CKG.CKG_MGF1_SHA256;
p.Source = (uint)CKZ.CKZ_DATA_SPECIFIED;
p.SourceData = IntPtr.Zero;
p.SourceDataLen = 0;
CK_MECHANISM mech = CkmUtils.CreateMechanism(CKM.CKM_RSA_PKCS_OAEP, p);
Затем я получаю CKR_ARGUMENTS_BAD
исключение. Я некоторое время искал и отлаживал, но ничего не нашел.
Комментарии:
1. Вы действительно должны включить языковой тег.
2. Пытались ли вы сохранить SHA-1 для MGF1 и изменить алгоритм хэширования только на SHA-256, поскольку это не оказывает неблагоприятного воздействия на безопасность?
Ответ №1:
У меня была такая же проблема с Luna HSM (но была дана CKR_MECHANISM_PARAM_INVALID
).
Эта версия HSM просто не поддерживала OAEP с SHA-256, и потребовалось обновление прошивки. После обновления прошивки он работал без каких-либо проблем. Проверьте, поддерживает ли ваше устройство этот вариант.
Ваш код кажется нормальным, я использовал (на Java):
CK_RSA_PKCS_OAEP_PARAMS mechanismParams = new CK_RSA_PKCS_OAEP_PARAMS(
CKM.SHA_1,
CKG.MGF1_SHA1,
new CK_RSA_PKCS_OAEP_SOURCE_TYPE(CKZ.DATA_SPECIFIED.longValue())
, null, 0
);
и
CK_RSA_PKCS_OAEP_PARAMS mechanismParams = new CK_RSA_PKCS_OAEP_PARAMS(
CKM.SHA256,
CKG.MGF1_SHA256,
new CK_RSA_PKCS_OAEP_SOURCE_TYPE(CKZ.DATA_SPECIFIED.longValue())
, null, 0
);
Удачи!
Комментарии:
1. Я сам узнал об этом, прежде чем увидеть это, но вы правы, поэтому я принимаю это. Мой HSM не поддерживал OAEP с SHA256.
2. не могли бы вы сообщить нам, какая версия прошивки поддерживает это, пожалуйста
3. @menakshisundaram Мы обновили версию с 6.10.2 до 6.27.0 (это было в 2019 году).