SHOEISHA iD

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

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

特集記事

アセンブリ署名とコードアクセスセキュリティ

厳密名を持つことによるメリットと詳細なアクセス許可の設定

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

ダウンロード Solution1.zip (46.6 KB)

.NETのアセンブリにはアセンブリ署名という機能が付いています。署名を行うと厳密名を持っている状態になり、さまざまな恩恵を得られます。これは、プログラムによるファイルへのアクセスを制限するコードアクセスセキュリティを利用する上でも役立ちます。本稿では、これらについて解説します。

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

はじめに

 .NETのアセンブリにはアセンブリ署名という機能が付いています。署名をすることにより厳密名を持っているという状態になり、さまざまな恩恵を得られます。

 本稿では、このアセンブリ署名とコードアクセスセキュリティについて解説していきたいと思います。

対象読者

 .NET(Windows Forms、ASP.NET問わず)での開発をされている方。

必要な環境

 Visual Studio 2005の環境で検証しています。2002/2003では画面などが違いますが、基本的な考え方は同じです。

まずはアセンブリに署名をしてみよう

 署名のやり方は非常に簡単です。まずはプロジェクトのプロパティを見てみましょう。C#とVBでタブが若干違いますが、署名タブの中身は同一です。以降、基本的にC#で解説を行います。

C#の場合
C#の場合
VBの場合
VBの場合

 各プロジェクトのプロパティページにある[アセンブリの署名]をチェックすると、キーファイルを指定するようになっているので、[<新規作成...>]を選択します。

キーファイルを新規作成する
キーファイルを新規作成する

 次に[厳密な名前キーの作成]ダイアログが開きますので、キーファイル名とパスワードを入力します。

厳密な名前キーの作成ダイアログ
厳密な名前キーの作成ダイアログ

 通常キーファイル名には「.pfx」という拡張子を付けるのが一般的となっています。拡張子は自動で付けられますので、拡張子を除いた部分を入力します。

 今回は「codezine」というキーファイル名を付けた上で[OK]を押し、キーファイルを作成しました。

「codezine.pfx」がプロジェクトに追加される
「codezine.pfx」がプロジェクトに追加される

 このようにプロジェクトのアイテムとして「codezine.pfx」が格納されていることが確認できます。

 .NET 1.xの時代にはpfxというパスワードつきの証明書を利用することができませんでした。パスワードの無い証明書ファイルを利用したり、データストアに手動でインストールしたりする必要がありました。

署名をすることによるメリット

 アセンブリ署名を付けることにより、従来のプログラムでは不可能だった、さまざまなメリットを受けることができます。アセンブリ署名のメリットをいくつか見ていきましょう。

メリット1:参照DLLが変わっていないことを証明する

 署名をすることによりどのようなメリットが得られるのでしょうか。

 まず第1に挙げられるのはDLLハイジャックの防止です。DLLを署名している場合に、署名していないDLLに差し替えたりDLLを改変したりしたりすると、次のようなエラーが発生します。

DLLに署名がされていないのでエラーが発生
DLLに署名がされていないのでエラーが発生

 これはDLLなどがハイジャックされないことを示しています。.NETのDLLの場合内部はMSILという中間言語で生成されており、容易に不正なロジックを紛れ込ませることが可能です。

不正なロジックが混入される
不正なロジックが混入される

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
メリット2:GACに登録することができるようになる

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

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

もっと読む

この記事の著者

中 博俊(ナカ ヒロトシ)

大阪でフリーのソフトウェアエンジニア兼テクニカルライターとして日々新技術で楽しんでいる。MSMVP for C# ブログ:http://blogs.wankuma.com/naka/

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/424 2006/07/15 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング