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

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

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

プログラム内データベースのパスワードを書き込んだ場合

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

■83185 / inTopicNo.1)  プログラム内データベースのパスワードを書き込んだ場合
  
□投稿者/ TS (1回)-(2017/03/10(Fri) 13:56:39)

分類:[.NET 全般] 

お世話になります。

VBNetでアプリケーション開発をしていますが、
SQLServerにアクセス用のユーザーIDとパスワードをプログラム内に書き込みました。
拡張子をexeからtxtに替えて、テキストファイルとして開くとほとんどが文字化けみたいになっていますが、
中身を見ているとIDとパスワードがきれいに確認できます。

データベースのパスワードがバレない回避方法とかありますか?
それとも組み方に問題がありますか?

宜しくお願いします。
引用返信 編集キー/
■83186 / inTopicNo.2)  Re[1]: プログラム内データベースのパスワードを書き込んだ場合
□投稿者/ 774RR (485回)-(2017/03/10(Fri) 14:39:42)
そのパスワードを「誰に」あるいは「何に」対して保護したいのか? で話は違ってくると思う。

一般的ユーザー?
悪意の無いヘビーユーザー?
悪意のあるクラッカー?
分析ツール?

ごく普通のユーザーは EXE や DLL をエディタで開こうとは思わないだろうし、
見つかった文字列がパスワードであると認識しないだろうし、
今のままでも問題ないと思う。

単に「生パスワード」を隠蔽するだけなら何らかの方法で暗号化しておくのも有効。
初級ユーザー相手なら base64 変換でもビット反転でも十分に隠蔽になるだろう。

逆に、その知識と経験がある人間なら逆アセンブルでも何でもして暗号を解いちゃったりできるので
どんな隠蔽をしても見破られてパスワードを見つけることができるはず。

ってことで、どうする・どうすべきか?は案件次第。

そのソフトは末端ユーザーに配布する代物なの?だったら分析されて当然と考えるべき。
ってことはデータベース自体も当該ユーザのところにあるはずだし、何を心配しているのかよくわからない

データーベースがユーザのところになくて自社内にあるのであれば、
遠隔地にいる末端ユーザが自社内データベースにネット越しに直接ログインするってこと?
これはシステム設計自体が間違っているとしか思えない。

引用返信 編集キー/
■83187 / inTopicNo.3)  Re[1]: プログラム内データベースのパスワードを書き込んだ場合
□投稿者/ 魔界の仮面弁士 (1178回)-(2017/03/10(Fri) 15:16:46)
No83185 (TS さん) に返信
> SQLServerにアクセス用のユーザーIDとパスワードをプログラム内に書き込みました。

id はともかく、パスワードに関しては平文で格納するべきではないでしょう。
代わりに、パスワードをハッシュ化した値を格納するようにします。
(SQL Server には HASHBYTES や PWDENCRYPT といった機構が用意されています)

認証する場合は、
 ユーザー入力したパスワードを、再度ハッシュ化する
 それが DB に記録されたハッシュ値と同じかどうかを確認する。
という手順を取ることで認証します。


ただ、A さんと B さんが同じパスワードを採用した場合に、
同じハッシュ値が格納されるのは脆弱性となるため、
個人ごとに異なる「ソルト」をふってからハッシュ化するようにします。

ユーザーつけたパスワードが短いものだったとしても、
十分な長さを持ったソルトを振ることで強度が高くなります。

あわせて、総当り攻撃対策としてストレッチングを施すことも行われますね。
http://www.atmarkit.co.jp/ait/articles/1110/06/news154_3.html
引用返信 編集キー/
■83188 / inTopicNo.4)  Re[2]: プログラム内データベースのパスワードを書き込んだ場合
□投稿者/ TS (2回)-(2017/03/10(Fri) 16:05:34)
No83187 (魔界の仮面弁士 さん) に返信
> ■No83185 (TS さん) に返信
>>SQLServerにアクセス用のユーザーIDとパスワードをプログラム内に書き込みました。
>
> id はともかく、パスワードに関しては平文で格納するべきではないでしょう。
> 代わりに、パスワードをハッシュ化した値を格納するようにします。
> (SQL Server には HASHBYTES や PWDENCRYPT といった機構が用意されています)
>
魔界の仮面弁士さん、ありがとうございます!
これについて調べてみたいと思います。
ひとまず「解決済み」という事で。


>単に「生パスワード」を隠蔽するだけなら何らかの方法で暗号化しておくのも有効。
>初級ユーザー相手なら base64 変換でもビット反転でも十分に隠蔽になるだろう。
>
774RRさん、ありがとうございます!
とても参考になりました。

解決済み
引用返信 編集キー/
■83189 / inTopicNo.5)  Re[3]: プログラム内データベースのパスワードを書き込んだ場合
□投稿者/ TS (3回)-(2017/03/10(Fri) 16:18:33)
ハッシュ化分かりました!
重ねて有難うございます!m(_ _)m
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ