重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Windows 7 Pro (64bit)
VB.net 2010 Pro
にてアプリ開発、暗号化複合化処理を実装しているところです。

作成するものは下記で、どちらもVB.netです。
 1.暗号化ツール(自作
 2.アプリ(自作

暗号化複合化処理は下記サイトを参考に行いました。
http://dobon.net/vb/dotnet/string/encryptfile.html

システムの流れ
◆暗号化ツールについて
 1.のツールで行います。
 あるファイルを対象に暗号化し、そして、その暗号化されたファイルを出力し
 2.のアプリに埋め込もうと考えています。
 同時に、復号に使用する鍵(以下、「復号鍵」)もファイル出力します。

◆復号化について
 2.のアプリで行います。つまり暗号化と復号化の処理は1.2.で切り離されています。
 ファイル内容を復号化(復号化された内容は文字列)し、
 システム内部でそのファイル内容を使用したい。

◆問題
 復号化するからには、暗号化された復号鍵がどこかに添えてあげる必要があります。
 【復号鍵の管理】に関して、どこに持つのがセキュリティ上最も安全か考えております。
 
 折角暗号化したのにもかかわらず、復号鍵が目の見える場所にあっては、
 アプリを解析などされた際などに、意味のないものになってしまいます。 

 何か良い策などあれば、参考にお聞かせ願えればと考えております。 
 
◆没案
 下記の例では、コンピュータに長けている人であれば解析できそうな気がしたので
 今回、私の作るシステムではアウトと考えています。

 ・レジストリに格納 
  ・・・ レジストリエディタを使える人からすれば意味がない?
 
 ・Windows上のローカル奥深くに隠しファイルとして保存 
  ・・・ そもそもディスクドライブにファイル保存すること自体がアウト?
 
 ・USBなどの外部メディアに保存。システムを起動するときに指してもらう。
  ・・・ 外部メディアの管理が必要になる。紛失時の問題にもなる。アウト。

 ・サーバ上に、キーを持つ。
  ・・・ この方法だと、そのサーバ情報もアプリに持つことになるので結局、そのサーバ情報も暗号化することに→イタチごっこに?アウト。

いろいろ考えて見てはいるのですが、いまいちピンときません。
そもそも解析されたら、などと考えるまでもなくこうすれば
鍵管理は問題ないという過去の事例などありましたら、ご教授願います。

よろしくお願いいたします。

A 回答 (1件)

以下は、私が作ったアプリのライセンス提供方法です。



1.ライセンスの内容を電子署名した上で、簡単な暗号化を行います。
2.アプリはファイルを複合化し、電子署名を確認した上で、ライセンスを取り込みます。

アプリの中に、「複合化の鍵」と「電子署名確認用の公開鍵」が「小細工」して入ってます。
仮にアプリを解析され、復号鍵を解読されたとしても、電子署名までは偽造できないです。
(秘密鍵はアプリの中に入ってないので)
一応、アプリが起動したときに公開鍵やその他の改竄がされていないかセルフチェックを実施しています。

まぁ、100% 絶対に大丈夫、安全ってワケでは無いですけど・・・。
アプリをすべて解析しなきゃムリだし、そこまで解析できるならライセンスの偽造するより 自分でアプリを作るだろうって思ってます。
なので、こんな方法を取ってます。

参考になりましたか。
    • good
    • 0
この回答へのお礼

貴重なご意見、参考になりました。ありがとうございます。
電子署名の確認方法などについても、もう少し調べてみようと思います。
そして、やはりアプリ内に復号鍵を埋め込むにも、多少なりとも細工は必要ですね。

セキュリティに関わることなので、もう少し時間をかけて試行錯誤してみます。
ありがとうございます。

お礼日時:2012/05/04 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!