C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: C#でのパスワード付アプリ作成について


(過去ログ 60 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■34678 / inTopicNo.1)  C#でのパスワード付アプリ作成について
  
□投稿者/ 初心者脱出前 (5回)-(2009/04/06(Mon) 13:06:35)

分類:[C#] 

2009/04/06(Mon) 13:13:12 編集(投稿者)

C#でパスワードによる制限をかける時どのようにして作成すればいいのでしょうか?

私の方法ではパスワードが簡単に特定されてしまい困っています

@アルバムデータをシリアルかして保存・編集するソフトを作成しています
Aシリアルデータの中に暗号化したパスワードを保存しています(編集時に使用)
Bシリアルデータをバイナリ表示でみると暗号化したキーが見えます
C逆コンパイルをかけると暗号化に使用したキー(固定キー)が特定されます
(Dotfuscatorで難読かしても)
BとCから編集用パスワードの特定が容易に特定できてしまいます

C#で作成しているのでソースは見られることを覚悟していますが・・・
暗号化に使用したキーを隠す方法ないのでしょうか?

または、他の方法でパスワードがわからなくすることはできないでしょうか?

少しお知恵をお貸しください
よろしくお願いします
引用返信 編集キー/
■34679 / inTopicNo.2)  Re[1]: C#でのパスワード付アプリ作成について
□投稿者/ .SHO (784回)-(2009/04/06(Mon) 13:19:27)
記録した固定キーをそのまま使用するのではなく
なんらかの処理を施してから使用してはどうでしょう?
引用返信 編集キー/
■34680 / inTopicNo.3)  Re[2]: C#でのパスワード付アプリ作成について
□投稿者/ 初心者脱出前 (6回)-(2009/04/06(Mon) 13:48:34)
.SHO さんご返事ありがとうございます

今いろいろ試していたのですが
EXEから逆コンパイルしてソースを出力すると
デバックでブレイクできる為
いくら加工しても暗号化キーの特定が容易であることがわかりました

そこで下記のようなことはできないのでしょうか?
@パスワード+暗号化キー→暗号化済みパスワード(何度行っても同じパス同じキーを使えば結果が同じである)
A暗号化パスワードからの復元はできない(暗号化キーがわかっていても)

引用返信 編集キー/
■34681 / inTopicNo.4)  Re[3]: C#でのパスワード付アプリ作成について
□投稿者/ .SHO (785回)-(2009/04/06(Mon) 13:58:54)
公開鍵暗号方式で実現できます。
引用返信 編集キー/
■34682 / inTopicNo.5)  Re[4]: C#でのパスワード付アプリ作成について
□投稿者/ .SHO (786回)-(2009/04/06(Mon) 14:04:09)
> 公開鍵暗号方式で実現できます。

あっ、でも、秘密鍵をプログラムが持ってたら
結局、公開鍵がわかれば復号できちゃいますね。
ダメだな、これは。
引用返信 編集キー/
■34683 / inTopicNo.6)  Re[5]: C#でのパスワード付アプリ作成について
□投稿者/ .SHO (787回)-(2009/04/06(Mon) 14:08:38)
どこが問題なのか、いまいちわからないです。
シリアルデータの中に記録したパスワードが見れちゃうのが問題なんですか?
引用返信 編集キー/
■34687 / inTopicNo.7)  Re[6]: C#でのパスワード付アプリ作成について
□投稿者/ 初心者脱出前 (7回)-(2009/04/06(Mon) 14:35:46)
No34683 (.SHO さん) に返信
> どこが問題なのか、いまいちわからないです。
> シリアルデータの中に記録したパスワードが見れちゃうのが問題なんですか?

シリアルデータの中に記録した暗号化したパスワードが見える点と
暗号化に使用したキーが特定される点です

この2点がわかるとパスワードが復元できてしまうのが問題だと考えております
(逆コンパイルにより何で暗号化したかが特定できる為)



引用返信 編集キー/
■34691 / inTopicNo.8)  Re[7]: C#でのパスワード付アプリ作成について
□投稿者/ 774RR (337回)-(2009/04/06(Mon) 15:06:12)
暗号化してあれ、パスワードのまま保存している限りにおいて絶対に解読されうるので
パスワードそのものではなく逆変換の困難なハッシュ値にしておくのが常套手段だと思う。

たとえば
http://itpro.nikkeibp.co.jp/article/COLUMN/20080609/307014/

ハッシュアルゴリズムが逆コンパイルによってわかったとしても
# 実際 sha-1 sha-2 などハッシュ方法は公開されているわけで
ハッシュ値からパスワードに戻すことは不可能
引用返信 編集キー/
■34692 / inTopicNo.9)  Re[1]: C#でのパスワード付アプリ作成について
□投稿者/ επιστημη (1867回)-(2009/04/06(Mon) 15:13:22)
επιστημη さんの Web サイト
> C#でパスワードによる制限をかける時どのようにして作成すればいいのでしょうか?

「アプリケーション起動時にユーザに対しパスワード入力を
 求め、そいつが不正なものであった場合使わせない」

みたいなやつですか?
1. あらかじめ登録されたパスワードは暗号化して保存しておく。
2. アプリ起動時にユーザが入力したパスワードを暗号化し、[1]と一致すれば認証OK

アルゴリズムがわかっていても復号不可能な
(たとえできても100年かかる)暗号化アルゴリズム使えばよいですな。

引用返信 編集キー/
■34693 / inTopicNo.10)  Re[8]: C#でのパスワード付アプリ作成について
□投稿者/ なちゃ (263回)-(2009/04/06(Mon) 15:17:45)
そもそも、誰から何を守りたいのでしょうか?

ライセンスとかみたいにプログラムを守りたいのとは違いますよね?
読んでる限りでは、なんとなくユーザが保存したデータを守りたいように見えますが、そうではないですか?

ユーザのデータを守りたいのであれば、ユーザにパスワードを入れさせるか、
暗号化ファイルシステムの機能を利用するか、
データ保護API、DPAPIのラッパーを使う辺りが常道かなと思います。
DPAPIとかは、ProtectedData(ラッパー)とかを使って、鍵を暗号化するなどのように組み合わせることになるかな。

引用返信 編集キー/
■34694 / inTopicNo.11)  Re[7]: C#でのパスワード付アプリ作成について
□投稿者/ .SHO (788回)-(2009/04/06(Mon) 15:38:04)
> シリアルデータの中に記録した暗号化したパスワードが見える点と
> 暗号化に使用したキーが特定される点です

パスワードと暗号化キーは別物?
引用返信 編集キー/
■34695 / inTopicNo.12)  Re[3]: C#でのパスワード付アプリ作成について
□投稿者/ みきぬ (405回)-(2009/04/06(Mon) 15:40:30)
No34680 (初心者脱出前 さん) に返信
> 今いろいろ試していたのですが
> EXEから逆コンパイルしてソースを出力すると
> デバックでブレイクできる為
> いくら加工しても暗号化キーの特定が容易であることがわかりました
>
ここまで考えるのであれば、仮にパスワードは特定できなくても
復号したアルバムデータを取得できちゃうのは防げないような…。
引用返信 編集キー/
■34698 / inTopicNo.13)  Re[2]: C#でのパスワード付アプリ作成について
□投稿者/ 初心者脱出前 (8回)-(2009/04/06(Mon) 15:59:25)
774RRさん
επιστημηさん
なちゃさん
.SHOさん
ご返事ありがとうございます

基本動作は
本人は編集可能でアルバムを見せたい相手にシリアルデータを渡し
閲覧だけ可能にするようなソフトを作成しています

>パスワードと暗号化キーは別物?
別物です

774RRさんの案のハッシュ文字列を暗号化パスワードの変わりに保存することで解決できそうです
if (HashPasswordForStoringInConfigFile(パスワード, "sha1").ToLower() == ハッシュ文字列)
{/*編集可能処理*/}

引用返信 編集キー/
■34699 / inTopicNo.14)  Re[3]: C#でのパスワード付アプリ作成について
□投稿者/ 初心者脱出前 (9回)-(2009/04/06(Mon) 16:11:10)
みきぬさんご返事ありがとうございます

>ここまで考えるのであれば、仮にパスワードは特定できなくても
>復号したアルバムデータを取得できちゃうのは防げないような…。
それは途中で気がついたのですが
(編集用フラグを常にTRUEに改造されるとか・・)
気がつかないふりをしようかと・・・・考えておりました・・

ただ別問題になりますので
一先ず今件に関しては解決しましたので 解決済みにしたいと思います

素人のわかりにくい質問に対して
沢山のアドバイスありがとうございました


解決済み
引用返信 編集キー/
■34701 / inTopicNo.15)  Re[4]: C#でのパスワード付アプリ作成について
□投稿者/ なちゃ (264回)-(2009/04/06(Mon) 16:40:41)
解決済みだしそこまで堅牢にする必要はなさそうなので参考まで…

この用途であれば、公開鍵暗号が利用できます。
公開鍵のみデータに埋め込めば、復元できるが改ざん不可(チェック可)というのもできます。
ま、ちょっと難しくなりますが。

解決済み
引用返信 編集キー/
■34703 / inTopicNo.16)  Re[5]: C#でのパスワード付アプリ作成について
□投稿者/ なちゃ (265回)-(2009/04/06(Mon) 18:54:47)
何度もすみません。

No34701 (なちゃ さん) に返信

> この用途であれば、公開鍵暗号が利用できます。
> 公開鍵のみデータに埋め込めば、復元できるが改ざん不可(チェック可)というのもできます。

と書きましたが、もちろん復元されたデータへのアクセスを防ぐことはできないので、
結局のところパスワードのハッシュとかと実質あまり差はないですね。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -