2010-09-11 4 views
2

Мне нужен OID для добавления пользовательского расширения (уже ASN1.encoded) к цифровой подписи X.509v3/PKCS # 7. Меня не волнует, совместимо ли оно; это частное частное приложение (фактически, исследовательский проект). Прямо сейчас мне на самом деле все равно, если это OID, который используется в каком-то собственном приложении, хотя, очевидно, я не мог долго использовать этот OID.Как определить действительный OID для использования цифровой подписи X.509?

В настоящее время я использую 1.2.3.4.5, который находится в тестовом коде для библиотеки криптографии, которую я использую (cryptlib). Однако создание подписи рушится, и я не знаю, может ли это быть причиной. Я знаю, что при проверке ввода библиотека отклоняет хотя бы некоторые недопустимые OID.

+0

Заметьте, что мне действительно нужно, это то, что я могу использовать завтра. Я не представляю организацию, и у меня нет денег, чтобы выложить ANSI. Меня не волнует, является ли это тестовым OID, используемым для других целей; что на самом деле отлично работает с моей точки зрения. – Paul

+0

Мне известно о http://www.oid-info.com/faq.htm#10. Я просто ничего не вижу там, что могло бы помочь мне, хотя вещь UUID выглядит так, как будто она работает с достаточным количеством времени и работы. Честно говоря, это выглядит как запретное. – Paul

ответ

3

Я подозреваю, что проблема в том, что вы неправильно кодируете OID, который используете в качестве объекта объекта OBJECT ASN.1. Я знаю Cryptlib, но не использовал его, поэтому я не могу быть уверен, почему он сбой, но я подозреваю, что причина будет неправильной кодировкой, а не просто выбором недопустимого значения OID. Я сомневаюсь, что Cryptlib придает любое значение OID-значению, которое вы поставляете (если, возможно, вы не указали OID для известного расширения сертификата, такого как «основные ограничения» с неожиданным значением).

Я заметил от http://www.imc.org/ietf-pkix/pkix-oid.asn, что PKIX определяет диапазон OID для тестирования, и я ожидаю, что вы никого не смутите, если вы (ab) используете в этом диапазоне OID для собственного (внутреннего, неофициального) тестирования. Тестирование OID - это все, начиная с 1.3.6.1.5.5.7.13.

Меня немного беспокоит ваш разговор о «цифровой подписи X.509v3/PKCS № 7» ... X.509 и PKCS # 7 действительно совсем другие. Из ваших разговоров о пользовательском «Расширении», который вы создаете, это сертификат X.509v3, который вы пытаетесь создать, а не подпись PKCS # 7 ... это правильно?

+0

X.509 против PKCS # 7: что я на самом деле делаю? Отличный вопрос! Я изучил это еще немного, и я считаю, что это то, что происходит. cryptlib позволяет добавлять дополнительные поля в цифровую подпись, указывая их как часть сертификата атрибута X.509. (См. Http://www.tml.tkk.fi/Opinnot/Tik-110.501/2000/papers/nykanen.pdf и http://www.ietf.org/rfc/rfc3281.txt) Так что я могу добавьте пользовательские расширения в цифровую подпись, добавив пользовательские расширения в сертификат атрибута X.509, используемый для указания атрибутов подписи. – Paul

+0

Итак, у меня есть следующий вопрос. Cryptlib фактически принимает OID отдельно от ASN.1. I.e., я выполняю следующий вызов: cryptAddCertExtension (signatureAttributes, "1.2.3.4.5", CRYPT_UNUSED, extensionData, 6). Учитывая это, и тот факт, что код примера cryptlib указывает OID в вызове, а ASN.1 - это простая короткая OCTET STRING с 4 символами, вы думаете, что я прав, полагая, что мне нужно только указать OID в вызов функции? Считаете ли вы, что мой ASN.1 действительно содержит свое собственное поле с именем OID, может вызвать segfault? – Paul

+1

Я чувствую некоторую путаницу. Сертификаты атрибутов и сертификаты открытого ключа совершенно разные.PKC идентифицирует владельца открытого набора ключей, но не говорит вам об этом владетеле отдельно от имени. AC сообщает вам о сущности (роли, клиренсе и т. Д.) И связывает эту информацию с PKC (например, с указанием эмитента PKC и серийного номера). При аутентификации с помощью AC вам придется подписать запрос, чтобы подтвердить вашу личность, но при подписании нормальных данных AC не используется. Может быть, вы хотите добавить атрибут (а не AC) к создаваемому вами объекту SignedData PKCS # 7? – dajames

3

Вы можете запросить «официальный» частный OID here и быть в безопасности от столкновений в будущем.

+0

Как вы используете номер PEN в OID? Вы предисловие к нему 1.1.x? Или какой-нибудь другой префикс? – Kazriko

2

В дополнение к (правильным) ответам @dajames и @Ken Johnson, вы также можете использовать UUID based OID, если вы не хотите/не должны регистрировать PEN OID (хотя PEN, вероятно, лучше в долгосрочной перспективе) ,

+0

Это может сработать. Мне не ясно, что все заявки одобрены, и я подозреваю, что МСЭ мог бы использовать это, чтобы создать UUID исключительно с целью создания OID как оскорбительного. – Paul

Смежные вопросы