SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

RFC3820(代理証明書)のC#による実装

C#によるセキュリティライブラリの学習

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード ソース差分 (18.2 KB)

オープンソースのセキュリティライブラリ、The Legion of the Bouncy Castleの学習をします。また、C#の勉強用にRFC3820のProxyCertInfo証明書拡張を生成・解析する機能を実装します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 オープンソースのセキュリティライブラリ、The Legion of the Bouncy Castleの学習。および、C#の勉強用にRFC3820のProxyCertInfo証明書拡張を生成・解析する機能を実装します。

対象読者

  • C#勉強中な読者。基礎知識程度(難しい文法は出ません)。
  • 公開鍵暗号方式の基礎は分かっている人。
  • セキュリティをより詳細に実装する必要性に駆られている人。
  • ASN.1(DER形式)、およびRFC等も知ってた方がいいです。

必要な環境

  • Windows XP Home以降
  • Visual C# 2008 Express Edition以降

Bouncy Castleとは

 Bouncy Castleとは、オープンソースの暗号ライブラリです。JavaおよびC#の実装が用意されています。

 主に以下の機能があります。

  • 軽量暗号API(Java and C#)
  • JCE暗号プロバイダ実装(JCE 1.2.1)
  • ASN.1生成・解析 (DER形式(構造体をパック化したバイナリデータ)生成解析)
  • 軽量クライアント用TLS API.
  • X.509証明書(ver 1と3)、CRL(Ver 2)、PKCS#12ファイル、X.509属性証明書
  • S/MIME and CMS (PKCS7/RFC 3852)
  • OCSP (RFC 2560) (オンライン証明書確認)
  • TSP (RFC 3161) (時刻認証)
  • OpenPGP (RFC 2440)
  • JDK 1.4-1.6 and the Sun JCEによって電子署名されたライブラリ

 と盛りだくさんのライブラリです。

 本記事では、最新版(2008/01/15現在)のbccrypto-net-1.3-src.zipを使用しています。

 ただし、最新版はVisual C# 2005系統のプロジェクトファイルです。筆者の場合は、普通にプロジェクトファイルを開いてVisual Studio変換ウイザードを使用したら変換されました。

ソース差分について
 なおbccrypto-net-1.3-src.zipから、筆者が追加したソースの差分はbccrypto-net-1.3-src-new20080108.zipにあります。必要な人は取り出してください。

代理証明書とは

 RFC3820(proxy certificate)とは、簡単に言えば、RFC 3280と似た、X.509電子証明書です。あるエンティティ(秘密鍵を持つ人)が別のエンティティを代理認証するための枠組みです。

 簡単に言うと、ある電子証明書(および秘密鍵)を持つ人が「なりすまし用証明書」をおおっぴらに生成できる規約です。とはいえ、おおっぴらに作成できてしまうと問題なので、いろいろと制約があります。RFC3820にはその制約が記述されています。

 本記事では、RFC3820の詳細説明は割愛します(C#とBouncy Castleの学習用のため)。概要を知りたい方は『グリッドにおけるセキュリティの概要と動向』(PDF)を参照ください。詳細を知りたい方はRFCの原文をあたってください。

 ここでは、代理証明書にはProxy Certificate Information拡張(ProxyCertInfo拡張)という情報を証明書に埋め込む必要があるのを示すだけとします。

RFC3820詳細

Issuer

 以下、RFC3820の意訳です。
Proxy CertificateのProxy Issuerは以下のどちらかである * End Entity Certificate * Proxy Certificate 代理証明書の発行者名は、代理発行者のサブジェクト名でなければならない(MUST)

Proxy Certificate Information

 以下は、RFC3820の原文です。Proxy Certificate Information拡張(ProxyCertInfo拡張)が必須だということが述べられています。
All Proxy Certificates MUST include the Proxy Certificate Information (ProxyCertInfo) extension defined in this section and the extension MUST be critical.

次のページ
ProxyCertInfo拡張とは

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

torofield(トロフィールド)

某会社の従業員。仮の姿。真の姿があったりはしない。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2117 2008/03/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング