Интегрированные сети ISDN

         

Некоторые объектные идентификаторы и их значения



Таблица 4.4.13.2.4. Некоторые объектные идентификаторы и их значения



Величина объектного идентификатора Назначение
{ 1 2 } Члены ISO
{ 1 2 840 } US (ANSI)
{ 1 2 840 113549} RSA Data Security, Inc.
{ 1 2 840 113549 } RSA Data Security, Inc. PKCS (Public Key Cryptography Standard)
{ 2 5 } Служба каталогов (X.500)
{ 2 5 8 } Служба каталогов - алгоритмы

BER-кодирование OBJECT IDENTIFIER является всегда примитивным. Октеты содержимого представляют собой объединение n-1 строки октетов, где n число компонент объектного идентификатора. Каждая октетная строка несет в себе целое число по модулю 128 (старшая часть первая). 8-ой бит каждого октета, кроме последнего, равен 1. Пусть value1, …, valuen целые значения компонентов объектного идентификатора. Тогда n-1 субидентификаторов, из которых формируется октетная строка, будут иметь следующий вид.

  • Первый субидентификатор равен 40value1

    + value2. (значение value1 лежит в пределах 0-2 включительно, а value2 в интервале 0-39, когда value1 равна 0 или 1.

  • i-ый субидентификатор равен valuei+1 ; 2 Ј iЈ n-1.
  • Например, субидентификаторы объектного идентификатора RSA Data Security, Inc. равны 42 = 40ґ 1 + 2, 840, 113549 и 1. В шестнадцатеричном представлении BER-код этого объектного идентификатора имеет вид:

    06 07 2A 86 48 86 F7 0D 01

    DER-кодирование в данном случае совпадает с BER.

    Строки октетов

    Тип OCTET STRING служит для представления произвольных последовательностей октетов. Значение OCTET STRING может иметь любую длину, включая нуль. OCTET STRING используется для представления сообщений, включая зашифрованные, а также для типа PBEParameter. Нотация типа OCTET STRING имеет формат.

    OCTET STRING [SIZE ({size | size1..size2})]

    где size, size1 и size2 опционные ограничения размера. В форме OCTET STRING SIZE(size) строка октетов должна иметь октеты size. В формате OCTET STRING SIZE(size1 .. size2) строка должна содержать число октетов между size1 и size2. Например, тип PBEParameter имеет компоненту типа OCTET STRING:


    PBEParameter ::= SEQUENCE {

    salt OCTET STRING SIZE (8),

    iterationCount INTEGER }
    Здесь размер компоненты salt всегда равен 8 октетам. BER-кодирование типа OCTET STRING может быть примитивным или конструктивным. При примитивном кодировании октеты содержимого несут в себе октеты строки с первого по последний. При конструктивном кодировании содержимое октетов представляет собой последовательное объединение субстрок значения OCTET STRING. Например, BER-код значения OCTET STRING 01 23 45 67 89 AB CD EF может иметь один из следующих видов, в зависимости от формата октетов длины и вида кодирования (примитивное/конструктивное).

    04 08 01 23 45 67 89 AB CD EF DER-кодирование
    04 81 08 01 23 45 67 89 AB CD EF Длинный формат октетов длины
    24 0С Конструктивное кодирование
    04 04 01 23 45 67 “01 23 45 67” + “89 AB CD EF”
    04 04 89 AB CD EF

    Строки печатных символов
    Тип PrintableString предназначен для описания произвольных последовательностей печатных символов из набора:
    A, B,…,Z

    a,b,…,z

    0,1,…,9

    (пробел) ‘ () +, - . / : = ?
    Этот тип используется для представления атрибутов имен (Х.520). Нотация типа PrintableString имеет вид:
    PrintableString
    BER-кодирование значения PrintableString может быть примитивным или конструктивным. При примитивном кодировании печатных символов байты содержимого несут в себе строки октетов печатных ASCII-кодов. При конструктивном кодировании содержимое октетов представляет собой последовательное объединение субстрок. Например, BER-код значения PrintableString “Test User 1” может быть представлено одним из ниже приведенных способов.

    13 0B 54 65 73 74 20 55 73 65 72 20 31 DER-кодирование
    13 81 0B 54 65 73 74 20 55 73 65 72 20 31 Длинная форма октетов длины
    33 0F Конструктивная форма,
    13 05 54 65 73 74 20 “Test” + “User 1”
    13 06 55 73 65 72 20 31

    Тип SEQUENCE
    Тип SEQUENCE обозначает упорядоченную последовательность одного или более типов. Нотация типа SEQUENCE имеет вид:
    SEQUENCE {

    [identifier1] Type1 [{OPTIONAL | DEFAULT value1}],



    …,

    [identifiern] Typen [{OPTIONAL | DEFAULT valuen}],
    где identifier1 , …, identifiern
    являются опционными идентификаторами компонентов, Type1 , …, Typen - типы компонентов, а value1 ,…, valuen опционные значения компонентов по умолчанию. Квалификатор OPTIONAL указывает на то, что значения компонентов являются опционными. Квалификатор DEFAULT говорит о том, что величина компонента является опционной и ей присваивается определенное значение, если компонент отсутствует. Например, тип Validity [X.509] относится к типу SEQUENCE и имеет два компонента.
    Validity ::= SEQUENCE {

    start UTCTime,

    end UTCTime }
    Здесь start и end являются идентификаторами компонент, а типом компонент служит UTCTime. BER-кодирование значения SEQUENCE является всегда конструктивным. Октеты содержимого представляют последовательное объединение BER-кодов значений компонентов последовательности.
    Тип SEQUENCE OF
    Тип SEQUENCE OF обозначает упорядоченную последовательность из нуля или более компонентов данного типа, используется для имен в X.501. Нотация SEQUENCE OF имеет вид:
    SEQUENCE OF Type

    Так например, тип RNDSequence состоит из нуля или более компонент типа RelativeDistinguishedName.
    RNDSequence ::= SEQUENCE OF RelativeDistinguishedName
    BER-кодирование SEQUENCE OF является всегда конструктивным. Октеты содержимого представляют собой объединение BER-кодов значений элементов последовательности в порядке их расположения. DER-кодирование имеет тот же формат.
    Тип SET
    Тип SET представляет собой неупорядоченное объединение из одного или более типов. Нотация типа SET имеет вид.
    SET {

    [identifier1] Type1 Type1
    [{OPTIONAL | DEFAULT value1}],

    …,

    [identifiern] Typen [{OPTIONAL | DEFAULT valuen}],
    где identifier1 , …, identifiern
    являются опционными идентификаторами компонентов, Type1
    , …, Typen - типы компонентов, а value1 ,…, valuen
    опционные значения компонентов по умолчанию. Квалификатор OPTIONAL указывает на то, что значения компонентов являются опционными.


    Квалификатор DEFAULT говорит о том, что величина компонента является опционной и ей присваивается определенное значение, если компонент отсутствует.
    BER-кодирование для типа SET является всегда конструктивным. Октеты содержимого представляют последовательное объединение BER-кодов значений компонентов набора.
    Тип SET OF
    Тип SET OF представляет неупорядоченный набор, состоящий из нуля или более компонентов заданного типа и предназначенный для атрибутов PKCS (Public-Key Cryptography Standard) и имен X.501. Нотация типа SET OF имеет вид:
    SET OF Type

    где Type – тип. Так тип RelativeDistinguishedName состоит из нуля или более компонентов типа AttributeValueAssertion.
    RelativeDistinguishedName ::= SET OF AttributeValueAssertion
    BER-кодирование типа SET OF является всегда конструктивным. Октеты содержимого представляют собой объединение BER-кодов величин компонентов в порядке их исходного расположения. DER-кодирование также является всегда конструктивным, октеты содержимого представляются как и в случае BER-кодировки. Но компоненты лексикографически упорядочиваются.
    Тип UTCTime
    Тип UTCTime служит для обозначения универсального местного времени с привязкой по Гринвичу (GMT). Значение UTCTime характеризует местное время с точностью минут или секунд и временной сдвиг по отношению к GMT. Оно может иметь следующие формы:
    YYMMDDhhmmZ

    YYMMDDhhmm+hh`mm`

    YYMMDDhhmm-hh`mm`

    YYMMDDhhmmssZ

    YYMMDDhhmmss+ hh`mm`

    YYMMDDhhmmss- hh`mm`
    где

    YY младшие две цифры года
    ММ код месяца (01 – 12)
    DD код дня (01 – 31)
    hh код часа (00 – 23)
    mm код минут (00 – 59)
    ss код секунд (00 – 59)
    Z означает местное время по Гринвичу, + указывает на то, что местное время отстает от GMT, а – указывает на то, что местное время опережает GMT.
    hh` абсолютное значение смещения по отношению к GMT в часах
    mm` абсолютное смещение по отношению к GMT в минутах.

    UTCTime используется для определения типа Validity [X.509]. Нотация типа UTCTime имеет вид.
    UTCTime
    BER-кодирование значения UTCTime может быть примитивным или конструктивным.


    При примитивном кодировании октеты представляют собой символы строки в виде ASCII-кодов. При конструктивном кодировании октеты образуют объединение BER-кодов последовательных субстрок. В качестве примера рассмотрим варианты представления времени 4:45:40 после полудня 6 мая 1991 года (Pacific Daylight Time) в виде величины UTCTime.
    “910506164540-0700”

    “910506234540Z”
    Это представление эквивалентно следующим BER-кодам:
    17 0D 39 31 30 35 30 36 32 33 34 35 34 30 5A

    17 11 39 31 30 35 30 36 31 36 34 35 34 30 2D 30 37 30 30
    DER-кодирование типа UTCTime всегда является примитивным.
    Ниже приводится пример ASN.1 нотации имен типа X.501.
    Name ::= CHOICE { RNDSequence }
    RNDSequence ::= SEQUENCE OF RelativeDistinguishedName

    RelativeDistinguishedName ::= SET OF AttributeValueAssertion

    AttributeValueAssertion ::= SEQUENCE { AttributeType, AttributeValue }

    AttributeType ::= OBJECT IDENTIFIER

    AttributeValue ::= ANY
    Тип Name идентифицирует объект в каталоге X.500. Name имеет тип CHOICE с одной альтернативой RNDSequence. Тип RNDSequence указывает проход по дереву каталогов X.500, начиная с корневой части. RNDSequence имеет тип SEQUENCE OF, состоящий из нуля или более компонентов RelativeDistinguishedName. Тип RelativeDistinguishedName присваивает уникальное имя объекту на дереве каталога. RelativeDistinguishedName имеет тип SET OF, состоящий из нуля или более компонентов AttributeValueAssertion. Тип AttributeValueAssertion присваивает значение атрибуту имени (например, определяющее принадлежность к стране). AttributeValueAssertion имеет тип SEQUENCE, состоящий из двух компонентов AttributeType и AttributeValue. AttributeType идентифицирует атрибут с помощью объектного идентификатора. AttributeValue присваивает значение атрибуту. Ниже предлагается пример DER-кодирования типа Name. В качестве имени использовано RSA Data Security, Inc. NOTARY (отдел Internet Privacy Enhanced Mail).
    (root)

    |

    countryName = ”US”

    |

    organizationName = ”RSA Data Security, Inc.”

    |

    organizationalUnitName = ”NOTARY”


    Каждый уровень соответствует одному значению RelativeDistinguishedName, в выбранном случае они имеют только одно значение AttributeValueAssertion. Значение AttributeType помещается до знака равенства, а AttributeValue (строка печатных символов с заданным типом атрибута) - после знака равенства.
    Тип атрибута
    DER-кодирование трех значений AttributeType согласно примитивному методу с заданной длиной дает следующие строки октетов.

    06 03 55 04 06 countryName
    06 03 55 04 0A organizationName
    06 03 55 04 0B organizationalUnitName

    Здесь countryName, organizationName и organizationalUnitName являются типами атрибутов Х.520, которые имеют следующие определения.
    AttributeType OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }

    countryName OBJECT IDENTIFIER ::= { AttributeType 6 }

    organizationName OBJECT IDENTIFIER ::= { AttributeType 10 }

    organizationalUnitName OBJECT IDENTIFIER ::= { AttributeType 11 }
    Октеты идентификатора имеют формат с меткой, так как метка равна 6 для OBJECT IDENTIFIER. Биты 8 и 7 равны 0, указывая на универсальный класс, бит 6 также равен 0, что говорит о примитивном методе кодирования. Октеты длины ориентированы на короткую форму представления. Октеты содержимого представляют собой объединения трех-октетных строк, полученных из субидентификаторов: 85 = 40x2 + 5; 4 и 6, 10 или 11.
    Значение атрибута
    DER-кодирование трех значений AttributeValue в соответствии с примитивным методом при заданной длине дает следующие строки:

    13 02 55 53 “US”
    13 17 52 53 41 20 “RSA
    44 61 74 61 20 Data
    53 65 63 75 72 69 74 79 2C 20 Security,
    49 6E 63 2E Inc.”

    Метка равна 19 (PrintableString) биты 8 и 7 равны 0, указывая на универсальный класс, бит 6 также равен 0, отмечая примитивный метод кодирования. Октеты длины имеют “короткий” формат, а октеты содержимого являются ASCII-представлением значения атрибута.
    Атрибут ValueAssertion
    DER-кодирование трех значений AttributeValueAssertion в соответствии с конструктивным методом дает следующие строки октетов.

    title> <meta name="description" content="Таблица Некоторые объектные идентификаторы и их значения - часть 7"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="../a.css" type="text/css" media="screen"> </head> <body LINK="#000000" VLINK="#000000"> <center> <div id="h"> <div id="z"> <br><br>Интегрированные сети ISDN </div></div> <style> .u { width:100%; max-width: 1070px; background-color: white; } </style> <font style="font-size:10pt; font-family:Arial"> <center> <div class="u"> <!-- Yandex.RTB --> <script>window.yaContextCb=window.yaContextCb||[]</script> <script src="https://yandex.ru/ads/system/context.js" async></script> <!-- Yandex.RTB R-A-425891-1 --> <div id="yandex_rtb_R-A-425891-1"></div> <script> window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-425891-1", "renderTo": "yandex_rtb_R-A-425891-1" }) }) </script> <hr size=1> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script>  <!--40ecd154-->       <hr size=1> </div> </center> <div id="m"> <div id="l"> <iframe id="f" src="../8/8.htm" frameborder=0 marginwidth=0 marginheight=0></iframe> </div></div> <div id="r"> <div id="s"> <h1>h1> <br> <table border=1><br> <tr> <td>30 09<br><br> 06 03 55 04 06<br><br> 13 02 55 53</td> <td> countryName = “US”</td> </tr> <tr> <td>30 1E<br><br> 06 03 55 04 0A<br><br> 13 17 52 53 41 20<br><br> 44 61 74 61 20<br><br> 53 65 63 75 72 69 74 79 2C 20<br><br> 49 6E 63 2E</td> <td>organizationName = “RSA Data Security, Inc.”</td> </tr> <tr> <td>30 0D<br><br> 06 03 55 04 0B<br><br> 13 06 4E 4F 54 41 52 59</td> <td>organizationalUnitName = “NOTARY”</td> </tr> </table><br> Октеты идентификатора используют короткий формат (low-octet form), так как для SET OF метка равна 17. Биты 8 и 7 равны 0 (универсальный класс), а бит 6 равен 1 (конструктивное кодирование). Октеты длины следуют “короткому” формату, а октеты содержимого представляют собой объединение DER-кодов компонент attributeType и attributeValue.<br> RelativeDistinguishedName/p><br> DER-кодирование трех значений RelativeDistinguishedName, выполняемое согласно конструктивному методу, дает следующие строки октетов.<br> 31 0B<br><br> <table border=1><br> <tr> <td></td> <td>30 09 … 55 53</td> </tr> </table><br> 31 20<br><br> <table border=1><br> <tr> <td></td> <td>30 1E … 63 2E</td> </tr> </table><br> 31 0F<br><br> <table border=1><br> <tr> <td></td> <td>30 0D … 52 59</td> </tr> </table><br> Октеты идентификатора используют короткий формат (low-octet form), так как для SET OF метка равна 17. Биты 8 и 7 равны 0 (универсальный класс), а бит 6 равен 1 (конструктивное кодирование). Октеты длины следуют “короткому” формату, а октеты содержимого представляют собой объединение DER-кодов компонент AttributeValueAssertion.<br>RDNSequence<br> DER-кодирование значений RDNSequence, выполняемое согласно конструктивному методу при заданной длине, дает следующие строки октетов.<br> 30 40<br><br> 31 0B … 55 53<br><br> 31 20 … 63 2E<br><br> 31 0F … 52 59<br> Октеты идентификатора используют короткий формат (low-octet form), так как для SEQUENCE OF метка равна 16. Биты 8 и 7 равны 0 (универсальный класс), а бит 6 равен 1 (конструктивное кодирование). Октеты длины следуют “короткому” формату, а октеты содержимого представляют собой объединение DER-кодов трех компонент RelativeDistinguishedName в порядке их следования.<br> Name<br> DER-кодирование значений Name выполняется аналогично значениям RDNSequence и выдает следующие результаты.<br>30 40 31 0B<br><br> 30 09<br><br> 06 03 55 04 06<br><br> 13 02 55 53<br><br> 31 20 30 1E<br><br> 06 03 55 04 0A<br><br> 13 17 52 53 41 20 44 61 74 61 20 53 65 63 75 72 69<br><br> 74 79 2C 20 49 6E 63 2E<br><br> 31 0F 30 0D<br><br> 06 03 55 04 0B<br><br> 13 06 4E 4F 54 41 52 59<br> </td></tr> </table> <center><a href="index.htm"><b>Содержание раздела</b></a> <br><br> <hr size=1 color=green> <br> <center> <!-- Yandex.RTB R-A-425891-2 --> <div id="yandex_rtb_R-A-425891-2"></div> <script> window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-425891-2", "renderTo": "yandex_rtb_R-A-425891-2" }) }) </script> <br> <!--LiveInternet counter--><a href="https://www.liveinternet.ru/click;Forex" target="_blank"><img id="licnt545C" width="88" height="31" style="border:0" title="LiveInternet: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7" alt=""/></a><script>(function(d,s){d.getElementById("licnt545C").src= "https://counter.yadro.ru/hit;Forex?t14.5;r"+escape(d.referrer)+ ((typeof(s)=="undefined")?"":";s"+s.width+"*"+s.height+"*"+ (s.colorDepth?s.colorDepth:s.pixelDepth))+";u"+escape(d.URL)+ ";h"+escape(d.title.substring(0,150))+";"+Math.random()}) (document,screen)</script><!--/LiveInternet--> <br> <hr size=1 color=blue> </center> <script async type="text/javascript" src="//bakteso.ru/0ra5/tmrw/bc1a1/a13zy/fg198/m5m/51l5u/3y9c/tlcl"></script> <!-- Yandex.RTB R-A-425891-5 --> <script> window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-425891-5", "type": "fullscreen", "platform": "desktop" }) }) </script> </div></div> </body></html>