web-dev-qa-db-ja.com

Redisを使用してPII、秘密鍵、その他の秘密を保存することは賢明ではありませんか?

私は、Redisを使用してすべてのクライアントシークレット、秘密キー、およびその他のものを格納しているシステムを確認しています。問題は、 RedisがDB全体をRAMにロードすることです

SSLの heartbleed 、Rowhammer、およびその他のハッキングは、信頼できないユーザーにメモリを公開することが知られているため、他の同様のハッキングによってデータベース全体が公開される可能性があると思います。ここで、SQLサーバーを使用した場合、特定の時点でRAMに含まれるプライベートキーは少なくなります。

これを行うにはもっと良い方法があるでしょう。

クライアントのシークレットとPIをホストして保存する必要があるため、ロードオンデマンドアプローチを使用し、RAMに不要なデータを積極的にロードせず、RAM as出来るだけ早く。

という哲学に賛成すれば……。

データのコピーの数が少ないほど、データは攻撃からより安全になります

...次に、RAMの露出を減らすための最良のアプローチは何ですか? メモリのSecureErasing

私は SecureString with ASP.NETとDiskIO を探していますが、そうでないエンドツーエンドの実装を見つけるのは難しいですドライバー、プリフェッチキュー、またはその他の場所に不要な文字列のコピーを残します。

9

リスク/問題はまったく同じであり、緩和策も同じです。データベースを部分的または完全にメモリにロードするかどうかに関係なく。侵害されたキーと侵害されていないキーを区別する方法はありません。したがって、RedisデータベースでもSQLデータベースでも、それらをすべて取り消すことが唯一の選択肢となります。

ほとんどの場合、人々がRedis vs SQLを使用している理由は、パフォーマンスの問題です。設計が適切で、データベースサーバーが直接公開されないようにすれば、このような攻撃が成功する可能性はかなり低いと思います。彼らがすでにこれを実装している場合、片方で修正するための投資は、コードベースの半分が更新を必要とすることを考えると素晴らしいでしょう。 Redisクラスターを分離し、すべての操作(SIEMログ)を監視し、追加の制御(異常動作)を実装できるかどうかを確認し、違反が発生した場合のインシデント対応計画を確認する必要があります。

6
Lucas Kauffman