• 締切済み

パスワードを暗号化して保存

VB.NET(VS2010)で開発しています。 パスワードを暗号化して保存したいのですがいまいち方法が わかりません。 当たり前ですがパスワードは任意で変更可能です。 それを暗号化して保存、そして次回からは変更されたパスワードを使ってDBへログイン。 暗号化したもの単体で複号出来ないと困ります。 なるべくiniファイルではなくVS2010やVS2008の機能(リソース?)で実装したいです。 よろしくお願いします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

>もしDBのパスワードそのものを暗号化したものにしてしまえばいいと言う >事ならば結局暗号化した文字列を知っていれば誰でもログオン出来てしまいませんか? 具体的にはどうやってログオン出来ると言っていますか? 画面から暗号化した文字列を入力しても、その文字列をもとに暗号化する処理が 入るからそのままでは無理だと思いますが?

itachi020
質問者

補足

ということはやっぱり復号化(というか普通にパスワードを入力するイメージ) しておかなければなりませんね。 こちらの状況を説明しますと、 運用サイドの管理者だけがID・パスワードの設定が出来る。(アプリケーションに登録出来る) 運用サイドの運用者はID・パスワードの設定を意識することなく管理者が設定した情報によって ログオンできる。 なのでアプリケーション側にパスワードを保存しておく必要がある。 パスワードは暗号化しないまま保存しておくことは出来ない。(あたりまえ) そのパスワードはデータベースへのログオン用のパスワードだ。 だからアプリケーション側で復号化出来ないとログオンできない。 ご理解頂けたでしょうか?

回答No.3

> このDBにログオンするためのパスワードを暗号化したいのです。 > なので複合できないとまずいんです。 だから複合化の必要性がないんじゃないの? って話です。 一方通行の暗号化だけできて、元のプレーンテキストに戻す必要あるの? 暗号化だけを行う関数を作っておく。 ユーザーがログオンするときに入力したプレーンテキストを関数で暗号化する。 この暗号化された文字列と、すでに暗号化されて DB に保存されている文字列とを比較すればいいんじゃないの? 利用者が決めた利用者のためだけのパスワードをシステムや開発者やシステム管理者が解読できちゃっていいんですか? それとも既に誰かのパスワードが暗号化されて保存されていて、それをハッキングしたいってことでしょうか? で、たぶん話の本流である 「VB.net で文字列を暗号化する方法」 ですが、すでに検索してるかとは思いますが、「VB.NET 暗号化」 でたくさんでてきます。 ついでに 「VB.NET 暗号化 復号化」 でハッキングできるツールの作り方もわかりますね。

itachi020
質問者

補足

「すでに暗号化されて DB に保存されている文字列」とはログオンした後で参照できるのでは? ログオンした後ではなくてログオン時のとこです。 もしDBのパスワードそのものを暗号化したものにしてしまえばいいと言う 事ならば結局暗号化した文字列を知っていれば誰でもログオン出来てしまいませんか?

回答No.2

AES とか、DES という話?

itachi020
質問者

補足

回答ありがとうございます。 temtecomai2さんにも言いましたがその暗号単体で複合できる 暗号化のやりかたです。

回答No.1

ふつうは複合化する必要ないでしょ? システムの機能として、パスワードを忘れたユーザーに 「あなたのパスワードは○○ですよ」 って教える必要があるのなら必要かもしれないけど。 <通常のログオン> 1. 自分で決めたパスワード文字列をユーザーがシステムに入力 2. 入力された文字列をシステムが暗号化 → (a) 3. DB に保存されている暗号化済み文字列と (a) を比較 <パスワード変更→保存> 1. 自分で決めたパスワード文字列をユーザーがシステムに入力 2. 入力された文字列をシステムが暗号化して保存 ※ ユーザーは自分で決めたパスワード文字列を知っているが、システムによって暗号化された文字列がなんなのかは知らない。

itachi020
質問者

補足

回答ありがとうございます。 3. DB に保存されている暗号化済み文字列と (a) を比較 このDBにログオンするためのパスワードを暗号化したいのです。 なので複合できないとまずいんです。

関連するQ&A

  • php パスワード 暗号化

    phpの会員サイトにてパスワードの暗号化を実装したいと思い、投稿させていただきました。 会員の人はパスワード変更→暗号化でDBに登録。 変更したパスワード(暗号化されている)でログインという流れを作りたいのですが、 暗号化でDBに登録まではできましたが、ログイン認証で一致せず困っております。 どなたか教えていただけないでしょうか? 例: <input type="password"name="password" value="1234"> $pass = $_POST[pass]; $password = crypt($pass); $passwordをDBに保存。 その後ログアウトし、ログインのパスワードで1234を入力すると「一致しません」となります。 login認証の際にどのように実装してよいのかわからず困っています。 また、上記の内容にてセキュリティ上に問題がありましたらご指摘お願いします。

    • 締切済み
    • PHP
  • フリーソフトを作成する時、パスワードをINIに保存させる時暗号化するには?

    フリーソフトを仮に作るとして、パスワードを設定しないと 変更することのできない設定項目があるとして、 そこに入力したパスワードをINIファイルに保存しておきたいと 考えます。 しかし、ただパスワードをINIファイルに保存しただけでは INIファイルの場所がわかればすぐに中身を開いて判別されてしまう と思います。 あるフリーソフトで同じようなことをやっていたのですが、 そのソフトのINIファイルには Password=83BBB6C5B8C5B6C5C4 みたいな感じになっていました。 こういう風に保存するにはどのようにすればよいのでしょう? また、プログラム内でどのように戻しているのでしょうか? どなたか教えて下さい。

  • LAMPを使用したログインシステムの暗号化について

    LAMPを使用したログインシステムの暗号化についてご教授ください。 アマゾンのような会員制ネットショップの開発を考えております。 DB(MYSQL5)へ会員情報を保存し、会員がログインできる仕様予定です。 要件 **************************** .MYSQLへ保存する会員情報は「会員番号以外」の全フィールドをBlowfish方式,salt使用で暗号化して保存したい (安全であれば暗号化方式にはこだわりません。)  目的:万が一会員情報データが流出した場合の被害を軽減したい ・会員テーブルのフィールド構成は5列  「会員番号、ログインパスワード、クレジットカード番号、住所、電話番号」 質問 *************************** 会員(仮に鈴木さん)は前月にログインパスワード「1234」で会員登録しました。 鈴木さんがログインパスワード「1234」を忘れた場合の手順は以下の手順で新パスワードに変更します。 (処理1) システム側が仮パスワード「tmp0000」を作成し、会員テーブル内の鈴木さんのログインパスワードを「tmp0000」で上書きします。 (処理2) 鈴木さんへ仮パスワード「tmp0000」をメールで送信 (処理3) 鈴木さんが「tmp0000」でログインして会員テーブル内の鈴木さんのログインパスワードを新パスワード[new1111]で上書きします。 この場合、会員テーブル内の鈴木さんレコードのログインパスワード以外の列(クレジットカード番号、住所、電話番号) は「1234」で暗号化されたままです。 【質問1】 処理1と処理3のタイミングでパスワード以外のフィールドは一旦復号化して再度暗号化、保存の手順が必要と思うのですが、元の復号キーが不明でも可能でしょうか? 復号しないと鈴木さんは住所、電話番号等の再入力が必要になってしまうと思いますので・・・ 【質問2】 質問1の回答が可能な場合、どのような処理が必要でしょうか? 【質問3】 質問1の回答が不可能な場合、データが流出した場合の被害を軽減する代替え案は何かありますでしょうか? 住所、電話番号等は平文で保存すれば問題ないのかもしれませんが、リスキーなので躊躇します。 アマゾンや楽天等でパスワードを変更したときも住所等の再入力は必要なかったように記憶しています。 【質問4】 予想でも結構なのですがアマゾンや楽天等は住所などのフィールドは平文で保存しているのでしょうか? 【質問4】 ログインシステム開発時のDB暗号化の実装方法・概念等、のわかる 書籍やWEBページ等ありましたら教えてください。 また、この質問全体をとおして私に諸先輩方からアドバイス等あれば宜しくお願いします。

    • 締切済み
    • PHP
  • パスワードの変更

    Oracleのパスワードの変更をしようとして 下記コマンドの実行をしました。 alter user ユーザ名 identified by パスワード これでパスワードの変更ができ、無事に新しいパスワードにて 接続が可能となったのですが、簡単な接続は大丈夫なのですが 一部今まで大丈夫だったものが 「内部コードエラー」 となってしまいます。 一度これが起きるとユーザの削除ではダメで、サービスの削除 までしないと回復しません。 何かご存じの方、教えていただけたら幸いです。 よろしくお願いします。 環境 OS:WindowsXPsp2 DB:Oracle10.0.2R2 開発環境:VB6sp6、CrystarReport8

  • パスワード生成

    パスワードとソルト(乱数)を組み合わせてハッシュ化し、それをdbに保存するのですよね? ソルトはユーザー毎に違うものにしたいらしいのですが、ソルトの特定はどのようにすればよいのでしょうか? 次回ログインする際、パスワードはユーザーに打ってもらえますがユーザーのソルトまで特定するにはどこかに保存する必要があるのではないでしょうか?

    • ベストアンサー
    • PHP
  • データベース暗号化について教えて下さい。

    データベース暗号化について教えて下さい。 データベースの項目暗号化について下記事項等々に付き調査中です。 宜しくお願いします。 現状の暗号化方向(考え方)  1)個人情報および特定情報項目の暗号化を考えている。  2)データベースはOracle10g以降で検討中。(予定)  3)現行DB2からのデータ移行は必要。(予定)  4)SQL*PLUS、コマンドフロンプト等の開発環境では暗号化なしで使用したい。   (ユーザ/パスワードで暗号化ON/OFFなどの設定/利用としたい)  5)ネットワーク上はSSL通信などを検討中。 現状の懸念事項  DBをOracle10g。Oracleツールで対応を考えるが次の事項懸念あり。  1)Oracleツールを利用する事で暗号化として十分か?  2)Oracleツール利用の場合、インタフェースを二重化し、   利用者(AP開発者、)にOracleツールを見せないことを想定するが一般的にそこまでするのか? 確認ポイント  1)上記、懸念事項について御回答頂き度。  2)項目暗号化の推奨方法について   a.一般的なDB暗号化方式を教えて下さい。(複数方式。比較検討のため)   b.項目暗号化の方法について教えて下さい。(複数方法。比較検討のため)   c.Oracle社正式ツールあれば教えて下さい。(有償?無償?有償はいくら?)      d.その他。暗号化に関する弊害内容、留意事項、事故例等々。

  • Access内の汎用モジュールにパスワードを平文(テキスト)で記載し、

    Access内の汎用モジュールにパスワードを平文(テキスト)で記載し、プログラムから利用しています。 単独使用なら平文で問題ないのですが、開発者も含め複数利用時にソース開くことでパスワードが漏れるのは困ります。 そこで、平文のパスワードを暗号化したいと考えました。 暗号化されたパスワードはソースを見ただけでは、元の平文のパスワードが何か分かりません。 しかし、プログラムから暗号化されたパスワードを復号化する際のメソッドを見れば、開発者は元の平文のパスワードが分かります。 メソッドにキーを与えないと復号化できないようにし、キーはバイナリで深い階層に沈めれば、直ぐには開発者でも平文のパスワードが分からない気がします。 VBAで書ける、このような方法を簡単に実装するものはありますでしょうか?もしくは良いフリーソフトもしくはシェアウェアはありますでしょうか?他の方法でも問題が解決すればOKです。 図解も含めてみました。つたない説明ですみませんが、どなたかお助け下さい。

  • VBで作成したアプリでCD-Rに焼く際にフォルダにパスワードをかけたい

    お世話になっております。 環境 OS:WindowsXP 開発:VB.NET タイトルの件で質問なのですが、まず実際に可能なのでしょうか? XPの場合DirectCDの機能で、アプリ上からフォルダをCD-Rに焼くだけなら可能というところまでは分かっているのですが、その焼くフォルダに対して暗号化などのパスワード処理をほどこすということができるのでしょうか? B'sのライティングソフトならば、機能的にそういうことができるらしいのですが、B'sを単体で起動させるのではなく、VBアプリからB'sを起動してB'sの画面を触らずにプログラム上で暗号化をほどこし、CD-Rに焼くということろまでできなければなりません。 可能であれば、ご教授をお願いしたいのです。 また、他に何かやり方があればご教授ください。 宜しくお願いいたします。

  • oracle10g リレーションとパフォーマンス

    こんにちは 教えてください。 現在.net vb(VS2008)でORACLE10Gを使用しアプリ開発を行っております。 ERツールを使用してDBを構築し使用していますが、画面入力時に処理が重く実装に耐えられない状況です。いったんDBのリレーションやフォーリンキーを外して再度構築した所、パフォーマンスが改善されました。 DBのリレーション(フォーリンキーの設定)はむやみに設定しない方がいいのでしょうか? よろしくお願いします。

  • パスワードが

    ひょんな事からWIN2000を手に入れてのは良いですが なんとか駆使しながら使ってます。 そこで質問ですがネット接続の際にパスワードが自動的に変わってしまうのです。再入力した後パスワード保存するにしても次回使用するときはパスワードが変更されてます。ちなみに、パスワード再入力した後プロパティなどを開いた後確認するとやはり変わってます。なぜ? 教えてください(--m

専門家に質問してみよう