パスワードのハッシュ化を伴うプログラムを Python で作成しています。これを使用してパスワードを取得すると仮定します。
import getpass
password = getpass.getpass("Password: ")
ハッシュ化されていないパスワードのすべての痕跡を RAM から安全に削除する方法はありますか?
前に説明したように、カスタム実装があったとしても、Python でこれを行うための絶対確実な方法はありません (ただし、これは方法である可能性があります)。
あなたのアプリケーションが何をするべきかはわかりませんが、ハッシュ後であっても、データはデータベースよりも RAM の方が安全であることは間違いありません。
記憶のしくみはとても複雑です。すべてのプロセスには、連続している必要のない独自の仮想メモリ空間があります。メモリの完全なブロックがディスクにスワップされ、別のメモリ ブロックに戻されます。メモリ全体は単なる一連のバイトであり、整数の配列、文字列、猫、または単純なランダム データの違いを見分けることはほとんど不可能です。
一部のデータ ブロックが部分的に再割り当てされ、大量の部分データが作成されます。1、2、8、さらには 16Gb のランダム データが必要になると想像してみてください。潜在的なハッカーは、これらすべての 0 と 1 でパスワードを見つけなければなりません。
プロセスの実行中に誰かがあなたのパスワードをハッキングしたい場合、ルートとしてマシンにライブ アクセスできる必要があります。私が先に述べた理由により、彼は後でスワップを見るだけではそれを行うことができません.
しかし、誰かがこの種のアクセス権を持っている場合、パスワードを取得する方法は他にもたくさんあります. たとえば、単にプログラムをデバッグするか、ソースを変更してパスワードを出力させるだけです:)
ほとんどのハッカーは、そのような面倒なことを気にしません。ハッキングとは主にソーシャル エンジニアリングに関するもので、基本的にはユーザーにハッカーに喜んでパスワードを提供させます。フィッシングはそのような方法の 1 つです。