ファイル(.txt、.doxなど)を暗号化するユーティリティを作成しました。ユーティリティは、ファイルの暗号化時にユーザーにパスワードを要求します。
問題
ユーザーが異なるパスワードで1000の暗号化ファイルを作成し、あるファイルのパスワードを忘れたとします。彼はそれをどのように回復しますか?
私の考え
各パスワード(暗号化された)をどこかに記録する必要があります。ファイルの名前とサイズによって、ユーザーに提供できるファイルのパスワードを見つけることができますが、次の点に注意してください。
また、パスワードログ全体をユーザーの登録済みメールでユーザーに送信することも考えましたが、この [〜#〜] link [〜#〜] を見つけて、考えを変えました。
リクエスト
暗号化されたファイルの正確なパスワードをユーザーに提供する最善の方法は何ですか?
PS:ユーティリティはObjective-c、Cocoa for OSXを使用してビルドされています
あなたの主な質問は、暗号化されたファイルを、データベース内のそのファイルのクリアテキストパスワードと照合する方法についてです。安全なハッシュ関数、たとえば SHA-256 を使用してこの問題を解決できます。アルゴリズムは
ユーザーがパスワードのクリアテキストバージョンを要求すると、次のようになります。
まず、あなたの考えのいくつかを明らかにしましょう:
正確に同じ名前とタイプの2つのファイルを作成することはできません。同じ名前で拡張子が異なるファイルが作成されます。ファイル名と関連する暗号化パスワードを保存する場合は、完全なファイル名を使用してください。 abc.txt/abc.pdfなど.
ファイルを復号化しないと名前を変更できないような方法でプログラムを構築する必要があります。特権のない名前の変更を許可すると、整合性の原則に違反するため、お勧めできません。それでもやりたい場合は、保存されているファイルのファイル名も更新します。
関係ありません。完全なファイル名(abc.txt)を検索すると、必要な主キーが提供されます。
パスワードを回復する機能を提供する必要がある場合、認証システムを設計してパスワードを回復する人とパスワードを回復する人が同じであることを確認する必要があるため、複雑さが増します。
ほとんどのアプリやウェブサイトで実行されている、メールベースのパスワード回復システムを使用できます。 (ログイン認証情報を保存する必要があります)
OTPベースのシステムを使用できます。ここでも、ログイン資格情報と携帯電話番号などを保存する必要があります。
この機能を実装しないでください。パスワードを覚えておくことの重要性と、パスワードを紛失した場合の結果を示すアラートに固執します。 [同意する]メッセージのあるチェックボックスがあります。 :D
私がいくつかの洞察を与えたことを願っています。 :)