誰かが「何千ものユーザーのパスワードと個人の電子メールが漏洩した...」と言ったとき、あなたはそれらのニュースの1つを知っています。メールをデータベースに保存する前にアプリのロジックでメールを暗号化した場合、データベースダンプを取得する人は必ずしも復号化キーを持っているとは限らないため、これは防止されると私が思う種類のことです。
しかし、メールをデータベースに保存する方法を検索しても、そのようなアドバイスは見つかりません。そして、電子メールの保存に関する問題に関係するものはすべて、通常は長さと文字セットに関するものであり、プレーンテキストでの電子メールアドレスの保存は大丈夫であることを誰もが暗に示しています。
少し矛盾しているようです...
データベースに保存する前にメールアドレスを暗号化する必要がありますか?そうすることで何かを得られますか?そして、セキュリティを意識した開発者/企業は通常、そのようなことを何ですか?
現在、関連するすべてのデータプライバシー規制が実施されており、輸送に関する保護データと残りのデータが義務付けられています。
したがって、データベースに保存するときに、PIIと見なされる電子メールアドレスを暗号化する必要があります。暗号化/復号化に使用されるキーを保護する必要があるため、これはさらに複雑になります。
何を手に入れますか?まあ、データプライバシー規制に部分的に準拠しているソリューションです。これは、特に大企業と提携している場合や、大企業とのパートナーシップを構築している場合に、ソリューションに付加価値をもたらします(評判に関してデータ侵害が発生する場合、大きなリスクがあります)。
「データベース」が公開githubリポジトリを意味する場合、はい、そこに配置するPIIを暗号化する必要があります(ただし、優先的にはそこに配置しないでください)。
しかし、ベストプラクティスは、データが誤って開示されないように保護にすることです。暗号化は、そのための多くのツールの1つです。どのツールが適切かは、データベースの場所、データベースへのアクセス権、バックアップの移動先、およびデータベースへのアクセス権を持つユーザーによって異なります。データを暗号化するには多くの方法があり、それぞれの方法には、機能、可用性、パフォーマンス、容量にさまざまな影響があります。
データがどのように保護または公開されるかについては何もわかっていないため、暗号化を検討するか回避するかをアドバイスすることはできません。
それはすべて、組織がメールアドレスをどのように考慮しているかに依存します。暗号化はデータを暗号化するステップですが、組織は暗号化によるシステムの運用オーバーヘッドを評価しましたか?それは重要ですか?暗号化は実行時間をわずかに増加させ、大規模なビジネス業界/組織を傷つける可能性があるためです。そのため、すべての側面を考慮し、組織とセキュリティチームの両方が受け入れることができるソリューションを検討する必要があります。
私の推奨に従って、データベースに格納されている電子メールアドレスをマスクまたは難読化する必要があります。アクセス制御を分離し、フロントエンドユーザーに知る必要のあるアクセスのみを提供します。これは、データベース管理者への電子メールアドレスの公開を制御するのに役立つだけでなく、プライバシーポリシー(規制または法律に従って組織が検討した場合)を維持し、将来的にデータの公開を防ぐのにも役立ちます。
暗号化はエンドユーザーのデバイスでは便利なツールですが、サーバーではほとんど役に立ちません。あなた(生きている人間)は、マシンを起動するときに存在し、暗号化されたディスクまたはファイルのロックを解除するために必要なすべてのパスワードとキーを与えることができます。また、マシンは使用しなくなったときに通常はオフになっているため、データを保護することは理にかなっています休止中。
大規模なデータセンターのサーバーマシンの場合、無人で実行され、人間の操作なしで再起動できる必要があります。これは、データセンター内のnumber_of_servers/number_of_operatorsの比率の結果です。つまり、暗号化がダム暗号化コンテナ(*)以外の場所で使用されている場合、マシン自体でキーにアクセスでき、暗号化は単なる難読化に変更されます。
これが、電子メールアドレスが一般にサーバーデータベースにプレーンテキストで格納される理由であり、ユーザーパスワードは暗号化されず、サーバーの非可逆ハッシュのみが保持される理由です。一見すると、データセンターでは暗号化に値するのはオフラインストレージ(主にバックアップ)だけです。もちろん例外はありますが、例外はexceptionalです。
(*)ここではダム暗号化コンテナと呼びますが、サーバーで復号化できないファイルで、リモートクライアントだけが知っているキーが必要です。これは通常、暗号化されたリモートバックアップに使用されます。