[XGEN] ASN.1 および BER の簡単な紹介

文書翻訳 文書翻訳
文書番号: 252648 - 対象製品
この記事は、以前は次の ID で公開されていました: JP252648
すべて展開する | すべて折りたたむ

目次

概要

この資料では、ASN.1 (Abstract Syntax Notation One) および BER (Basic Encoding Rules) について説明し、両者の違いについて解説します。

熟練した技術者を含め IT 技術者の多くは、ASN.1 と BER が何であるか、両者の違い、またその違いが重要である理由を十分に理解していません。ASN.1 と BER について熟知している技術者でもこれらの用語を誤って使用することが多く、こうした混乱が生じるのは無理もありません。

ASN.1 は標準のための言語であるので、ASN.1 で記述された標準勧告はごく一般的に使用されています。サポート担当者、コンサルタント、IT 技術者それぞれにとって、ASN.1 を理解することは、標準について深く知り、トラブルシューティング対象のデータの内容を解読し、理解することにつながります。ASN.1 で記述される標準で最も一般的なのは、国際電信電話諮問委員会 (CCITT) と国際電気通信連合 (ITU) で作成されるものです。また、Internet Engineering Task Force (IETF) のメンバも、徐々に ASN.1 を使用して勧告を簡潔に記述するようになってきています。他の形式で記述すると 5、6 ページに及ぶものでも、ASN.1 では 1 ページで記述することができます。

ASN.1 で記述され、一般に使用されている標準には、以下のものがあります。
  • X.400 (電子メッセージ)
  • X.500 (ディレクトリ サービス)
  • X.200 (ネットワーク通信)
  • Request for Comments (RFC) 2251 〜 2256 (Lightweight Directory Access Protocol (LDAP))
  • その他、多数の RFC
コンピュータやデータ通信の分野で優秀な技術者を目指すならば、少なくとも ASN.1 と BER の基本を理解しておく必要があります。Microsoft Windows 2000 および Microsoft Exchange 2000 Server は共に上記の標準をさまざまな形式で実装しているため、ASN.1 と BER を読んで理解することに慣れると、これら 2 つの製品のトラブルシューティングがはるかに容易になります。

詳細

ASN.1

ASN.1 (Abstract Syntax Notation One) は、標準を定義するための言語であり、実装には言及していません。つまり、標準の作成者が使用するための言語です。たとえば、CalTech 社の John Smith が、あるコンポーネントから別のコンポーネントに通信するための手順を標準化する勧告を記述する場合、勧告を ASN.1 表記で作成し、ITU などの標準化団体に提出します。標準を記述するための共通言語である ASN.1 を使用すれば、技術者と委員会メンバとの間のコミュニケーションが円滑になります。ASN.1 は ITU-T Recommendation X.209 および X.690 に定義されています。


たとえば、ASN.1 では次の事項が定義されています。
  • "型" とは
  • "モジュール" とは、およびその構造
  • INTEGER とは
  • BOOLEAN とは
  • "構造型" とは
  • キーワードの意味 (BEGIN、END、IMPORT、EXPORT、EXTERNAL など)
  • 型が正しくエンコードされるように "タグ付け" する方法
ASN.1 は特定の標準、エンコード方法、プログラミング言語、ハードウェア プラットフォームとは一切関係がありません。ASN.1 は単に標準を定義する言語、つまり標準を記述するための言語です。

BER

BER ("バー" と読みます) は、ASN.1 の "Basic Encoding Rules" の一般名です。BER は ITU-T Recommendation X.209 および X.690 に定義されています。BER は、ASN.1 データをオクテットのストリームにエンコードし、通信リンクを介して転送できるようにするための一連の規則です。ASN.1 データをエンコードするための他の方法には、DER (Distinguished Encoding Rules)、CER (Canonical Encoding Rules)、PER (Packing Encoding Rules) などがあります。これらのエンコード方法はそれぞれ利用法が異なりますが、BER は一般的に最も広く使用され、よく知られているエンコード方法です。

BER では次の事項が定義されています。
  • ASN.1 値のエンコード方法
  • 特定の方法を使用する条件を決定するための規則
  • データ内の特定のオクテットの形式

ASN.1 と BER の違い

ASN.1 と BER の関係は、プログラミング言語 (C など) とそのコンパイラの関係に似ています。高水準言語の多くとは異なり、コンパイラはプラットフォームに依存します。C は、プログラムを記述するための規則と言語を定義するものです。プログラムは C で記述されるものであり、C そのものではありません。プログラムを実行するには、Intel x86 などの特定のプラットフォーム用にコンパイルする必要があります。ASN.1 と BER の場合も同様です。ASN.1 は標準を記述する言語です。標準は ASN.1 で記述されるものであり、ASN.1 そのものではありません。標準に準拠するプログラムから生成されるデータを "ASN.1 データ" と呼ぶことがあります。ASN.1 データは、送信先で容易に解読できるオクテットのストリームにエンコードされるまでは使用できません (つまり LAN で転送できません)。これを説明するため、以下に ITU-T Recommendation X.209 の Appendix I から、これらの概念の例を抜粋します。次に示すのは、特定の形式を持たない、個人データ レコードの記述例です。
氏名 :        John P Smith
生年月日 :    1959 年 7 月 17 日
(その他のデータ)
					
ASN.1 での個人レコードの記述例 (標準) は、次のとおりです。
PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET {
Name,
title [0]       VisibleString,
dateOfBirth [1]          Date,
(定義されたその他の型)          }
Name ::= [APPLICATION 1] IMPLICIT SEQUENCE {
givenName       VisibleString,
initial         VisibleString,
familyName      VisibleString  }
					
この ASN.1 の記述は、PersonnelRecord の構造を示しています。また、エンコードが行われる前に、アプリケーション データを ASN.1 データとして生成するためには、どのような形式を使用する必要があるかも示しています。

次に、アプリケーションで、個人データを個人レコードの構造体 (ASN.1 データ形式) に格納し、ASN.1 データに BER を適用します。次に示すのはその例です (ただし実際には、名前は ASCII に変換されます)。
Personnel
Record     Length   Contents
  60         8185
Name     Length  Contents
                      61       10
VisibleString  Length  Contents
1A             04      "John"
VisibleString  Length  Contents
1A             01      "P"
VisibleString  Length  Contents
1A             05      "Smith"
DateofBirth     Length  Contents
A0              0A
Date    Length  Contents
                                               43      08      "19590717"
					
最終的に、実際に送信されるデータ (具体的には、次のレイヤのパケットのデータ部分に当たります) は次のようになります。
60 81 85 61 10 1A 04 ....
....  0A 43 08 19 59 07 17
					

関連情報

ASN.1 の詳細については、ITU-T 勧告 X.680 〜 683 を参照してください。
BER の詳細については、BER についての勧告 (ITU-T 勧告 X.690 または X.691) を参照してください。

詳細については、次の ITU-T Study Group 17 Web ページの「Changing from ASN.1:1988 to ASN.1:2002」を参照してください。
http://www.itu.int/ITU-T/studygroups/com17/changing-ASN/

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 252648 (最終更新日 2004-03-06) を基に作成したものです。

プロパティ

文書番号: 252648 - 最終更新日: 2004年8月23日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft Exchange Server 5.5 Standard Edition
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
キーワード:?
kbinfo KB252648
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com