sql >> データベース >  >> RDS >> PostgreSQL

postgresqldesencrypt

    CryptとDESは古い暗号であるため、使用しないでください

    昔ながらのDESは廃止されたアルゴリズムです。 AES128と実際に比較することはできません。これは、SHA256ハッシュがMD5ハッシュよりも大きいと不平を言うようなものです。そうですが、攻撃者の速度をしばらく低下させる可能性があるのはそのうちの1つだけです。 DESは、1999年でも弱いと広く見なされていました また、新しいアプリケーションでは使用しないでください。使用しないでください。

    基本的にDESを使用してデータを暗号化するのは時間の無駄なので、「可能な限り最小のデータサイズを提供する」暗号化方法を探すのは良い考えではないと思います。 ROT13(シーザー暗号)を使ってみませんか? 「暗号化された」結果は入力と同じサイズです。3歳の子供が暗号化を破ることができるのは残念です。

    暗号化 似たようなヴィンテージです。古いUNIX暗号化ハッシュアルゴリズム は...高齢者...そして新しいアプリケーションにはまったく適していません。ハッシュは、実際には少なくともSHA256である必要があります。

    Cryptは一方向のハッシュです

    暗号化されたデータを復号化する方法がわからない場合: crypt は暗号化アルゴリズムではなく、暗号化ハッシュ関数 です。 または「一方向ハッシュ」。保存されている salted > チャレンジレスポンス認証 で使用するパスワード認証用のハッシュ 、など。暗号化されたデータを復号化することはできません。

    サイズに対応

    適切な暗号化機能を使用して、サイズの増加に対応してください。 bf またはaes128 合理的に使用できる最も弱いものです。

    個人的には、DBではなくアプリで暗号化/復号化を行うことを好みます。 DBで行われた場合、キーはpg_stat_statementsによって明らかにされます。 、log_statementによるログ またはエラーなど。キーが保存されたデータとまったく同じ場所にないことをお勧めします。

    ほとんどのプログラミング言語には、使用できる優れた暗号化ルーチンがあります。

    暗号化する内容、理由、要件、脅威などについて実際に説明していないため、これ以上アドバイスを提供するのは困難です。

    パスワード?

    パスワードを保存している場合は、おそらく間違っています。

    • 可能であれば、他の誰かに認証を任せてください:

      • インターネット用のOAuthまたはOpenID

      • イントラネット用のSSPI、Kerberos / GSSAPI、Active Directory、LDAPバインド、SASL、HTTPDIGESTなど

    • 本当に自分で認証を行う必要がある場合は、パスワードにソルトを追加して結果をハッシュします。ハッシュとソルトを保存します。パスワードを比較する必要がある場合は、ユーザーからの新しいプレーンテキストを、保存されているハッシュに使用したのと同じソルトでソルトし、新しいパスワード+ソルトをハッシュして、ハッシュが保存したものと同じかどうかを確認します。もしそうなら、彼らは正しいパスワードを与えました。

    • ほぼ確実に、クリアテキストのパスワードを回復する必要はありません。代わりに、安全なパスワードリセットを実装してください。本当に、本当に必要な場合は、aesのような適切に安全なアルゴリズムを使用して暗号化し、キーの保存と管理について慎重に検討してください。 pgcryptoを使用したキーの保存/管理については、SOに関する他の投稿を参照してください。

    参照:



    1. Macにインストールした後、ALTERUSERステートメントを使用してMySQLルートパスワードをリセットします

    2. Laravel不明な列'updated_at'

    3. Androidのsqliteデータベースに大量のデータを挿入する方法

    4. Node.jsをWindowsプラットフォーム上のOracleに接続します