月別: 2016年9月

【.NET】アセンブリに関連付けてデータを暗号化するライブラリ

更新情報
2016/09/23 1.0.1を公開

.NETアプリケーションから利用できる暗号化ライブラリを作ってみました。
このライブラリの特徴は、暗号化に使う共通鍵に、ライブラリを呼び出したアセンブリの公開鍵を使うという点です。

アセンブリには電子署名を行うことで「厳密名」を持たせることができます。
その厳密名に含まれる公開鍵を使うことで、データを暗号化してもそれを復号できるのは同じアセンブリのみとなります。

厳密名を付けるには、署名に使う公開鍵と秘密鍵のペアが必要です。
そのうち、秘密鍵は開発者が厳重に管理しているはずですので、秘密鍵は開発者しか分かりません。
アセンブリを読み込む際、そのアセンブリが署名されている場合は付属している公開鍵を使って改ざんの有無を確認し、問題なければアセンブリが読み込まれます。
つまり、データを暗号化したアセンブリを改ざんして暗号化データを抽出しようとしても、秘密鍵を知らないため署名が出来ないので抽出は不可能ということになります。


【C#】リフレクションでの呼び出しを検出・禁止する方法

C#には「リフレクション」という便利な機能があります。
これは、メソッドなどを動的に呼び出したり、インスタンスを動的に生成したりすることができる機能です。

ただ、この機能、実はprivateに設定したメンバも呼び出してしまうことができます。
つまり、他から呼び出されると困るからprivateにしたメソッドがあったとしたら、それを利用者が意図的に呼び出すことが出来てしまう、という訳です。
まあ、利用者がprivateメンバまでクラス構造を理解していないとできませんが。
注意:フィールドおよび構造体の引数なしコンストラクタに対するアクセスを検出する方法はありません。


E.L.E.M.E.N.Tの様々な変更について

今まで、なかなか進まなかったE.L.E.M.E.N.Tの開発ですが、いよいよ最終設計が完了し、本当の開発が始まりました。
(今までずっと開発進んでいたと思っていた方、すみません)

今回の仕様確定にて、今までと変更が発生した箇所があるので、以下に記載していきます。

正式名称の確定
今まで曖昧だった正式名称が確定しました。
その名も、「E.L.E.M.E.N.T Multipurpose Engine」、略称「E.L.E.M.E.N.T ME」または「Elem-ME」です。
なぜ正式名称が確定していなかったかというと、単なる「E.L.E.M.E.N.T」だと他の商標に引っ掛かるのではないかと思い、前後に何か付け加えようと考えていたためです。
今回決まった名前の「Multipurpose」とは「多目的」という意味で、Elem-MEがゲームエンジンとしてだけでなく、様々な用途で使われることを願って付けました。

ブログ・各種サイトの障害について

最近、当ブログやホームページ、E.L.E.M.E.N.Tの公式Wikiにアクセスできない障害が発生していました。
原因は、当該サイトをホスト頂いているレンタルサーバがDDos攻撃(分散型サービス妨害攻撃)を受けて全アクセスが遮断されたためとのことです。
詳しくは、レンタルサーバの管理者様のホームページに記載されています。(詳しくはこちら

DDos攻撃について簡単に説明すると、インターネットに繋がっている脆弱な(セキュリティ対策が不十分な)サーバーやクライアントを複数、不正プログラムなどで乗っ取り、攻撃対象のサーバーに一斉に通信を送らせることで攻撃対象の処理を妨害してサービスを停止させるというものです。

もしかしたら、今後もつながりにくい状況になるかもしれませんが、その際は時間を改めてアクセス頂けると幸いです。
以上、障害情報についてでした。