現在オフラインです。再接続するためにインターネットの接続を待っています

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

この記事は、以前は次の 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 に変換されます)。
PersonnelRecord     Length   Contents  60         8185Name     Length  Contents                      61       10VisibleString  Length  Contents1A             04      "John"VisibleString  Length  Contents1A             01      "P"VisibleString  Length  Contents1A             05      "Smith"DateofBirth     Length  ContentsA0              0ADate    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」を参照してください。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 252648 (最終更新日 2004-03-06) を基に作成したものです。
プロパティ

文書番号:252648 - 最終更新日: 08/23/2004 07:21:00 - リビジョン: 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
フィードバック