Является ли отказоустойчивым декодирование ключа PKCS8 из кодированной Base64 структуры ASN1? - PullRequest
0 голосов
/ 21 декабря 2018

Я использую библиотеку Spongy Castle для кодирования личного ключа моих пользователей (PKCS8) в сущность ASN1, а затем в виде строки в кодировке Base64 в QR-код.

Один из моих коллег обнаружил, что возможноизменить некоторые символы в строке Base64, не повреждая закрытый ключ.У формата ASN1 или PKCS8 / DER реализована отказоустойчивость?

//final String encoded = "MIGcAgEBB........lGEOPD2o+H59Qyl"; // original
final String encoded = "MIGcAgEBB........lGEOPD2oXXXXXXX"; // changed!

// decode Base64
final byte[] buffer = Base64.decode(encoded);

// decode ASN1
final ASN1Primitive primitive = ASN1Primitive.fromByteArray(buffer);
final ASN1Sequence asn1Sequence = ASN1Sequence.getInstance(primitive);
// read from ASN1
final BigInteger version = ASN1Integer.getInstance(asn1Sequence.getObjectAt(0)).getValue();
final byte[] keyBytes = DEROctetString.getInstance(asn1Sequence.getObjectAt(1)).getOctets();

// get private key from bytes
final PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(keyBytes);
final PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);

1 Ответ

0 голосов
/ 21 декабря 2018

PKCS # 8 - довольно общий контейнер для закрытых ключей.Некоторые из базовых структур закрытого ключа, которые он может переносить, могут содержать избыточные данные.В частности, PKCS # 1 RSAPrivateKey имеет несколько избыточных полей, которые при необходимости могут быть пересчитаны.Последние 3 поля совершенно лишние.Теперь то, что происходит, когда программное обеспечение потребителя получает структуру PKCS # 8 с неверными или измененными данными, относится к этой части программного обеспечения.

PKCS # 8 действительно имеет зашифрованную информацию о секретном ключе, которую можно использовать для предоставлениякриптография с защитой от взлома с правильным выбором алгоритмов защиты.Если ваша личная информация всегда находится в среде, где преднамеренная или случайная модификация является законной угрозой, тогда вы должны принять меры для уменьшения этой угрозы.

...