0

新しいpostgresqlサーバーに移動するためのOracleデータベースがあります。

一部のテーブルにはフィールドがあり、それらはすべて DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT/DESDECRYPT によって暗号化されています。

問題はここにあります。postgresqlの暗号化データサイズ(bytea型)は、oracleと同じサイズである必要があります。

生データのほぼ 3 倍のサイズの aes(encrypt/decrypt) を使用して実行しようとしました (Oracle は des アルゴリズムで 16 バイト、postgresql は aes で 33 バイト、生データは 13 バイトです)。

私はpostgresql cryptも試しましたが、マニュアルには8バイトの生データサイズを制限して復号化する方法が記載されていません。

今、暗号化されたデータサイズをできるだけ小さくし、復号化方法も提供する暗号化方法が本当に必要です。

私にとって良い方法や他のオプションはありますか??? 前もって感謝します。

4

2 に答える 2

7

Crypt と DES は古い暗号であり、使用すべきではありません

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

DES を使用してデータを暗号化するのは、基本的に時間の無駄だからです。ROT13 (シーザーサイファー) を使用しないのはなぜですか? 「暗号化された」結果は入力と同じサイズです。残念なことに、暗号化は 3 歳児によって破られる可能性があります。

クリプトも同様のヴィンテージです。古いUNIX crypt ハッシュ アルゴリズムは... 古いものであり、新しいアプリケーションにはまったく適していません。ハッシュは最低でも SHA256 である必要があります。

Crypt は一方向ハッシュです

暗号化されたデータを復号化する方法を理解できないことについて: cryptは暗号化アルゴリズムではなく、暗号化ハッシュ関数または「一方向ハッシュ」です。一方向ハッシュは、パスワード認証用に保存されたソルト付きハッシュと比較して、チャレンジ/レスポンス認証などで使用するために、データが変更されていないことを確認するのに適しています。暗号化されたデータを復号化することはできません。

サイズを扱う

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

個人的には、DB ではなくアプリで暗号化/復号化を行うことを好みます。DB で行われた場合、キーは によって明らかになりpg_stat_statements、ログではlog_statementまたは エラーなどによって明らかになります。

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

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

パスワード?

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

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

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

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

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

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

以下も参照してください。

于 2012-09-27T06:30:58.353 に答える
1

postgresql のビルド方法によっては、pgcrypto モジュールで DES がサポートされている場合があります。DES を実行するために OpenSSL に依存しているため、Postgres が OpenSSL サポートを使用して構成されているかどうかによって異なります (他の最新のアルゴリズムでは、それら自体を実装しています)。

PGCrypto アルゴリズム

encryptopenssl サポートが含まれていて、およびのアルゴリズムとして DES を指定した場合decrypt、データは Oracle から取得したものと同じになります (ただし、パディング オプションを指定する必要がある場合があります)。

Craig が言うように、DES アルゴリズムは弱く、その理由の 1 つは、出力される暗号文が非常に小さいためです。

于 2012-09-27T13:35:01.100 に答える