-2

個人情報と匿名化された情報 (「レポート」) を MySQL データベースに保存する PHP アプリケーションを開発しています。

一人につき複数の「報告書」があり、第三者の登録簿に送られます。

問題は、第三者がこれらのレポートのどれが同一人物のものであるかを知らないことです。そのため、レポートを送信するときに、一意ではあるが追跡不可能な IDをレポートに追加したいと考えています。(第三者が当社内部の人物のIDを知ることはありませんので)

サード パーティは特定の人物について ID で通信する可能性があるため、その ID を暗号化解除して、人物レコードに格納されている ID にする必要があります。(したがって、ハッシュは機能しません)。また、近い将来、より多くの外部関係者が存在することを期待しており、個人ごとに異なる一意の IDを付与したいと考えています。(別の暗号化キーを使用することにより)。

個人の ID を暗号化するためにどのような暗号化方法を使用すれば、常に同じ結果が得られるでしょうか? (たとえば) libsodium extension docsを見ると、個人の ID を暗号化するたびに同じ nonceを使用する必要があると思います 。これは非常に落胆しているようです。
php のopenssl_encryptを介して AES 暗号化を使用すると、同じ問題が発生します。

iv パラメータで空の値が渡されると、E_WARNING レベルのエラーが発生します。

4

1 に答える 1

0

また、近い将来、より多くの外部関係者が存在することを期待しており、個人ごとに異なる一意の ID を付与したいと考えています。(別の暗号化キーを使用することにより)。

+

(たとえば) libsodium 拡張ドキュメントを見ると、人の ID を暗号化するたびに同じ nonce を使用する必要があると思います。これは非常に落胆しているようです。

ええ、「キー」と「iv/nonce」の部分についても心配する必要はありません。defuse /php-encryptionまたはHaliteを使用してください。どちらも認証された暗号化を提供し、どちらかを提供する必要があるのはmessagekey.

于 2016-04-21T13:53:22.340 に答える