3

serialize独自のクラスでActiveRecord メソッドを使用していAESCoderます。これは、毎回ランダムな初期化ベクトルで aes-256-cbc を使用します。この初期化ベクトルは、データベースに格納するときにフィールドの先頭に追加され、もちろん逆シリアル化する前に抽出されます。

さて、このスキームにより、これらの属性に対してファインダーを使用できなくなります。必要なすべての行を選択する必要があります。これは自動的に復号化されselect、アイテム リストでルビを実行します。もちろん、これはパフォーマンスの大きなボトルネックであり、このアプリケーションでは許容できません。

1 つの解決策は、ランダムな IV を使用しないことですが、aes-256-cbc は安全ではなくなります。

ここで何かを見落としていますか?

4

1 に答える 1

2

他の人が指摘したように、検索したい行を復号化する必要を回避する方法はありません。それでも、アプリケーション レイヤーですべてを選択して整理するのではなく、pgcrypto 拡張機能を使用して Postgres に面倒な作業を任せることで、パフォーマンスを向上させることができます。

Herokuは最近 Postgres 9.1の提供を開始し、pgcrypto をサポートしているようです。ブログ投稿によると、Postgres 9.1 に切り替えるには、データベースを移行する必要がある場合があります。

Herokus の有料の「共有データベース」プランは引き続きPostgres 8で動作するようで、まだ pgcrypto をサポートしていないようですが、まもなくアップグレードされる予定です。Postgres 9 では、拡張機能を有効にして使用する新しい方法が導入され、共有ホスティング環境で拡張機能を簡単に提供できるようになりました。

于 2012-05-22T16:45:55.547 に答える