プロキシによる再暗号化と同型暗号化

データの利用とデータのプライバシーはしばしば対立しています。例えば、もし私たちが皆で自分の健康データを研究者と公然と共有すれば、新しい健康技術や治療法の研究が加速するでしょう。しかし、悪意のある行為者が私たちの生の健康データを使って何ができるのか、私たちは当然のことながら恐れています。そこで、暗号技術の分野が助けてくれるのです。 代理による再暗号化 そして 同型暗号化 は、データの利用とデータのプライバシーに関しては、私たちのケーキを保存し、それも食べることができるようにするためのツールです。

プロキシによる再暗号化では、データ所有者は一度データを暗号化し、その後、第三者のサービスを利用して何度でも安全にデータを購入者と共有することができます。同相暗号化により、データ購入者は、信頼できない第三者によって保存され、計算された暗号化されたデータ上で計算を実行し、そのデータについての結果や洞察を得ることができますが、暗号化されていない形での個人のデータは公開されません。

これらの技術は、より複雑な暗号システムの構成要素として機能します。 ウンリンクス が開発したもので、現在の研究の理論的インスピレーションの源となっています)。2) これらのライブラリは、開発者がより安全なデータ共有を可能にする複雑な暗号システムを作成するために、高度なプリミティブを作成したり、組み合わせたりするのに役立ちます。)

手始めに、概念実証のアルファ版を開発しました。 書庫.以下のコードは、そのライブラリを使用して、所有者からユーザーへの安全で便利なデータフローを可能にするために、これらの技術をどのように適用するかの例を提供しています。

プロキシによる再暗号化

代理人による再暗号化とは、代理人と呼ばれる第三者が、一方の当事者によって暗号化された暗号文を、他方の当事者によって復号化されるように改変するプロセスである。

Nebulaのプラットフォーム上では、プロキシは暗号化されたゲノムデータの保管者として機能し、所有者に代わって購入者によるデータへのアクセスを管理します。プロキシは基礎となる生データにはアクセスできないが、プロキシは(所有者の許可を得て)暗号化されたデータを修正し、ユーザーがその後復号化できるようにすることができる。データの所有者はこのようにして、プロキシと平文情報を共有することなく、 このタスクをプロキシに委任することができる。この委任のもう一つの結果は、データの所有者も受信者もオンラインである 必要がないということである。

この例では、プロキシが分散型の集合的な権限を持つサーバの集合であると仮定する。ここでは、データ所有者であるアリスがプロキシを介してデータ利用者であるボブとゲノムデータを共有する場合のプロキシによる再暗号化の例を見てみましょう。

まずは上記のライブラリをインストールしてみましょう。

これで、ネビュラのパッケージをインポートできるようになりました。

では、共有のプロセスを見ていきましょう。最初のステップは アリスがデータを暗号化することです彼女のために対称鍵を生成します ChaCha20+Poly1305.

(, b'\x10\x91Y\xb1*\x8c\xf0\x7f@=\xefx\xe9\xf6\x12\xf3W\xbd\xdel\xc4\x06{\xae\x05%\x1b\x89U\xf9eN\xe5e\x1a\xe71xn\xac@v\xf4')

集合的な権限を持つプロキシはそれ自身の公開鍵を持っており、 それはその構成サーバの公開鍵の合計である。

アリスは自分のデータに使った暗号化キーを取って、集団権威の公開キーで暗号化しています。を使用していることに注意してください。 楕円曲線暗号 二つの暗号文のうち エルガマル暗号化 が生成するのは、選択した楕円曲線上の点です。以下の出力で見ることができるのは、(x, y)形式の2つの点の座標です。

((35632791306511153190425382918654119432212363349182003014749353343128802126727, 64242079364444117954338938658093117507689717419524224721788857406414950009581), (97847103734799578346073884785318736156070617710068604497289838935308031857554, 100772267217308028038724925681024365362775942293927562577198462564518506731626))

集団権限を持つ各サーバーが部分的に復号化し、ボブのためにアリスの鍵を再暗号化する。

  1. アリスの鍵を部分的に復号化するために、各サーバはその秘密鍵を使用します。
  2. ボブのためにアリスの鍵を部分的に再暗号化するために、各サーバはボブの公開鍵を使用します。
((77420738395268270953686214496801457604160876120513979866307802146750959593560, 54288930850798967899941066319180759019666461705141800680259295043110704970240), (43931260115404950504844368880031328989231014591201216806426924428987149667105, 90907867688890000833998990379245369153741769092073562236593684729778667077837))

ボブはアリスの鍵を受け取り、秘密鍵を使って復号化し、アリスの鍵を使って元のデータを復号化します。

b'私のゲノムデータ'

この文字列だけではなく、ここにある全ゲノムを想像してみてください!

同型暗号化

エルガマルの暗号化は 相同型つまり、暗号文を合計した結果は、対応する平文を合計した結果を反映します。このため、暗号化された和を復号すると、結果は平文の和になります。同相暗号化により、関心のある当事者は、集約された情報に対する問い合わせを発行して関連する答えを得ることができますが、基礎となるデータポイントを見ることはできません。(これは、他のいくつかの制約が満たされていることを前提としています。 此処.)

以下に、私たちのデータセットの中の特定の遺伝子変異を持つ人の数についてのBobからの問い合わせに、私たちの集団の権限/プロキシがどのように答えられるかを示す3つのステップの例を示します。

  1. 権限者はデータセット内の暗号化されたデータに対して必要な計算を行う。
  2. 権限者はこの集計結果を受け取り(バリアントを持っている人は1、持っていない人は0とマークされます)、Bobの公開鍵で再暗号化します。
  3. ボブは秘密鍵を使って集計結果を復号化し、正しい合計は得られましたが、個々のデータポイントは見えなくなりました。

暗号化されたデータのサミング

以下では、プラットフォームにゲノム情報を提供する1000人を「シミュレーション」しています。この特定の遺伝子変異を持つ人は合計で448人います。各人のデータは暗号化され、安全に保存されます。

を持っている人の数 いでんしへんいつ: 488 ((21226922480075498561329291252368547521899161064631964196023720750821691033728, 22373176000434530074330330136750061845273006440607485558527039957320386973412), (73527396063873421512162165532068395819931745318640280343429662961367630577212, 38439465994848418879243894553165852646308170673055923181635051985961737087067))

CAはボブのために暗号化された合計を再暗号化します。

Bobは先に進み、集団内の遺伝子変異頻度についての情報を要求する。CAはそれをまとめてBobに再暗号化する。再暗号化された暗号の (x, y) 座標は上の元の暗号の座標と一致しないことに注意してください。

((26066336990521229606715532856762274058860058654632118019680516577894483977430, 111016076743629331281471026942315236039952684121365861080441162051376755931177), (74777752915141648361212288792719003318012040162755253888817602184232651456038, 79121323403285772024091404265686004833455157263244527767410139385386809682035))

ボブは和を解読する

(488, 488)

ボブは、個々の所有者の情報にインサイトを得ることなく、データ全体のインサイトを得ることができます。これにより、データを公開したくないデータ所有者も、プラットフォームに貢献することができます。

プロキシによる再暗号化が、Bobにとってこれを便利にする上で重要な役割を果たしたことに注目してください。各データ所有者がプロキシに委任したため、Bobは1つのクエリを発行するだけで済みました。プロキシがなければ、Bobは欲しいデータポイントごとにクエリを発行する必要がありました。

プロキシによる再暗号化とホモモルフィック暗号化により、Nebulaはユーザーデータの安全性を確保し、データ購入者にデータへの便利なアクセスを提供し、データ購入者は個人のプライバシーを損なうことなくインサイトを生成することができます。

行動への呼びかけ

ネビュラ・ゲノミクスでは、プライバシーの問題が生物医学的データ共有の大きなハードルになっていると考えています。これは、医学研究や新しい治療法の開発を妨げるものです。この課題は、私たちだけでは解決できません。

もしコードに興味があれば、ライブラリで自由に遊んでみてください。しかし、安全のために: この特定の実装はセキュリティ監査を受けておらず、現在は教育用としてのみ使用されています 🙂

ネビュラ・ゲノミクスについてもっと詳しく知りたい方は、こちらをご覧ください。 ツイッターでフォローする を使って最新の情報を入手することができます。

この投稿を共有する
facebookでシェアする
googleでシェアする
twitterでシェアする
linkedinでシェアする
printでシェアする
emailでシェアする
jaJapanese
en_USEnglish fr_FRFrench es_ESSpanish ru_RURussian zh_CNChinese jaJapanese