カスタムNファクタ認証メカニズムの提供はどうですか?利用可能な方法を組み合わせる前に
、我々は次のことを行うことができますと仮定してみましょう:
1)ハードコードのJavaプログラムの内部
2 .propertiesファイルで)ストア
3ファイル)ユーザーに依頼)コマンドラインから
4パスワードを入力
5フォームからパスワードを入力するようにユーザに依頼)パスワード-Fi接続をロードするようにユーザに依頼しますルコマンドラインまたはフォーム
6)ネットワークを介して、
7パスワードを入力します)多くの選択肢(例えば秘密、指紋を描き、IP-特定、かくかくしかじか)
第一選択肢から:難読化を使用することによって、攻撃者にとってより複雑なものにすることができますが、これは適切な対策ではありません。優れたコーダーは、ファイルにアクセスできる場合、どのように動作するのかを簡単に理解できます。ユーザーごとのバイナリ(または難読化部分またはキー部分のみ)をエクスポートすることもできるため、攻撃者は別のディストリビューションではなく、このユーザー固有のファイルにアクセスする必要があります。 また、再コンパイルや、リフレクションをオンザフライで実行するなど、パスワードを変更する方法を見つける必要があります。
第二オプション:我々は暗号化された形式で.propertiesファイルにパスワードを保存することができますので、(単にjasyptのように行います)直接攻撃者からは見えません。パスワードマネージャが必要な場合は、マスターパスワードも必要になります。クラスファイル、キーストア、カーネル、別のファイル、またはメモリ内であっても、すべて賛否両論があります。
しかし、ユーザーはパスワード変更のために.propertiesファイルを編集するだけです。
3番目のオプション:コマンドラインから実行したときのパスワード。 java -jar /myprogram.jar -p sdflhjkiweHIUHIU8976hyd
。
パスワードを保存する必要はなく、メモリに保存されます。しかし、history
コマンドとOSログは、あなたの最悪の敵かもしれません。 オンザフライでパスワードを変更するには、いくつかの方法(コンソール入力、RMI、ソケット、REST bla bla blaなど)を実装する必要がありますが、パスワードは常にメモリに残ります。
必要なときにのみ一時的に暗号化を解除することもできます。>次に暗号化されたパスワードを削除しますが、常に暗号化されたパスワードをメモリに保持します。残念ながら、前述の方法は、それを達成した人がおそらくアルゴリズム、塩、および使用されている他の秘密にアクセスできるため、不正なメモリ内アクセスに対するセキュリティを向上させません。
第4オプション:コマンドラインではなくカスタムフォームからパスワードを入力します。これは、暴露暴露の問題を回避する。
5番目のオプション:以前の別のメディアに保存されているパスワードとしてファイルを提供してから、ハード・ファイルを削除します。これは、再び暴露暴露の問題を回避し、肩を盗まれて盗まれる可能性のあるタイピングは必要ありません。変更が必要な場合は、別のファイルを指定してから、もう一度削除してください。
第六オプション:は再び肩サーフィンを避けるために、一つは携帯電話などを介して他のデバイスから、(暗号化されたチャネルを介して)パスワードを提供するために、RMIメソッド呼び出しを実装することができます。ただし、ネットワークチャネルを保護し、他のデバイスにアクセスする必要があります。
私は最大のセキュリティを実現するために、.classファイル、プロパティファイル、ログ、ネットワークチャネル、ショルダーサーフィン、中央の人、その他のファイルにアクセスする必要があります。bla bla bla 。これは、実際のパスワードを生成するためにすべてのsub_passwords間の排他的論理和演算を使用して簡単に実装できます。
権限のないメモリ内アクセスから保護することはできませんが、アクセス制限されたハードウェア(スマートカード、HSM、SGXなど)を使用することによってのみ行うことができます。正当な所有者は解読キーまたはアルゴリズムにアクセスすることができる。また、このハードウェアも盗むことができます。鍵の抽出には攻撃者を助けるかもしれないside-channel attacksが報告されています。場合によっては、他の人を信頼する必要があります。もちろん、セキュア・エンクレーブ・クローニング(デアセンブル)が可能になると状況が悪化する可能性がありますが、実用的には数年かかるでしょう。
また、完全なキーが異なるサーバー間で分割されるキー共有ソリューションも考えられます。しかし、再構成の際に、フルキーを盗まれる可能性があります。上記の問題を緩和する唯一の方法は、secure multiparty computationです。
入力方法が何であれ、私たちはネットワークスニッフィング(MITM攻撃)やキーロガーから脆弱でないことを常に確認する必要があります。
プログラムがそれを読むことができるならば、あなたが望むことができる最高のものは目障りです。ファイルへのアクセス権を持つ人も誰でもできます。それはアクセスが難しい気にはならないと言っているわけではありません。 – lynks
管理者の肩を覗いている人が主な脅威である場合、コードに保持されている一定のパスワードで暗号化することは正当な方法のようです。 – ZeroOne
データベースには何人の人がアクセスしていますか?コアデータベースへのアクセスにパスワードを必要としませんか?なぜあなたは2番目のもの/これを保管すべきですか? –