自分をパスワードマネージャーにした方法

パスワードは、情報技術における最も古い認証方法であり、今日でも広く使用されています。残念ながら、すべてのインターネットリソースのパスワードをメモリに保持することは、それらがすべて異なり、複雑である限り、単純に不可能です。ここで、パスワードマネージャーが人を助けに来て、このタスクを自分で引き受けます。人は1つのマスターパスワードのみを覚えているため、残りすべてにアクセスできます。



私は既存のパスワードマネージャーが好きではありませんでした。異なるデバイスやオペレーティングシステム間でパスワードデータベースを同期するのは不便です。さらに、マネージャープログラムは公然と保護が不十分であることがよくあります。暗号化に関する記事を読んでいて、思いついたのは、パスワードを保存する代わりに、パスワードを計算するパスワードマネージャーを作成してみませんか。



頭に浮かぶこのアイデアを実装する最初の方法は、暗号化ハッシュ関数です。一見、すべてがかっこいいです。永続関数(たとえば、224ビットバージョンのSHA-3)を選択し、マスターパスワードqwertyとアカウントタイプvkを入力として指定すると、出力で、セット0123456789abcdefから56文字が即座に取得されます。私はすぐに2つの同様のプロジェクトを見つけました:ハッキングされたもの潜在的にハッキングされたものです。..。このアプローチには大きな問題があります。暗号化ハッシュ関数は、とりわけ、リソースに対して可能な限り高速で要求が厳しくないように設計されているため、CPU(比較的遅い)、GPU上の1つのサイトの傍受されたパスワードを使用して、マスターパスワードの辞書または完全なブルートフォース攻撃を手配することができます。 、FPGA(はるかに高速)、ASIC(非常に高速)。ソルトを使用せずに一般的なハッシュアルゴリズムに対してこのような攻撃を実行するには、レインボーテーブルを使用することもできます。これにより、CPUのクラッキングプロセスが大幅に高速化されます。



幸い、別の実装オプションがあります。キーを取得するための関数です。一言で言えば、それらはハッシュを実行しますが、ブルートフォースおよびブルートフォース攻撃を可能な限り困難にするために、比較的遅く(たとえば、通常のプロセッサでは1秒)、比較的大きなリソース消費(たとえば、16メガバイトのRAM)を伴います。私がよく知っている最新のPBKDF2bcryptscrypt機能の中でscryptが最もよく見えました。最初の2つの経験を考慮して作成され、GPUとマイクロ回路(FPGAとASICの両方)でのコンピューティングに耐え、あらゆるタスクのカスタマイズに柔軟性を持たせるように設計されています。私はこのプロジェクトの実施について考えましたが、何らかの理由でそれを後回しにしました。そして無駄に。



暗号学者NadimKobeissiJavaScriptでそのようなパスワードマネージャーnpwdを作成しました(Node.JSを介してデスクトップアプリケーションとして機能します)。このユーティリティをLinuxとWindowsのコンピューター、およびLinuxラップトップにインストールし、戦闘で使用し始めました。本当に気に入りました。唯一のマスターパスワードとアカウントの種類(「twitter」など)をアプリケーションに入力すると、数秒後、クリップボードにはこのアカウント専用に計算された複雑なパスワードがすでに含まれており、マスターパスワードをハッキングします(すべてのパスワードを読み取ります)。 1つのアカウントのパスワードは非常に困難になります。



しかし、問題もありました。 Windows版は実際には数秒後にパスワードを出しましたが、Linux(同じコンピューターを含む)では計算に15秒かかり、面倒でした。最初は定数を1つ減らして、マスターパスワードの安全性を下げましたが、それから、アプリケーションをCで書き直してみませんか。おそらく、はるかに高速に動作するからです。私はこのプロジェクトの計画を長い間持っていたという考えに特に勇気づけられましたが、私は減速し、誰かが私の前にそれを実行しました。



数日間のんびりとした仕事の後、私は自分のパスワードマネージャーcpwdを作りましたオリジナルと完全に互換性があります。楽しかった!少し最適化した後、私はなんとか希望の高速を達成することができました。 Windowsでcpwdを移植しようとしたことはありませんが、簡単なはずです。プロジェクトのGitHubページで、私は学界およびそれ以降の同様のプロジェクトへのリンクのコレクションを収集しました-アイデアは実際にはかなり古いことがわかりました。



確かに特効薬ではありませんが、私にとってはうまくいきます。使用の過程で問題が発生しました。一部のサイトでは、「20文字以内」、「大きな文字、小さな文字、数字、特殊な文字が必要」などの興味深いパスワード要件があり、その結果、npwd / cpwdによって生成されたパスワードを入力する前に手動で作業する必要がある場合があります。 ..。幸いなことに、そのようなサイトは多くありません。



オリジナルは7.08.15に私のブログで公開されました。 5年経ちましたが、今でもこのユーティリティを使用しています。



All Articles