伊藤  直子

伊藤 直子

1651123394

準同型暗号化とは?

この記事では、準同型暗号化、それが解決する問題、および存在するさまざまなタイプについて説明します。

次に、Pythonでコードを記述して、その機能の一部を実際に示します。

これが私たちがカバーするものです:

  1. 準同型暗号化とは何ですか?
  2. 準同型暗号化の利点
  3. 準同型暗号化の種類
  4. Paillier Cryptosystem
  5. 詳細を学ぶための結論とリソース

準同型暗号化とは何ですか?

準同型という名前は、代数用語の準同型に由来します。

「準同型は、同じタイプの2つの代数的構造(2つのグループ、2つのリング、2つのベクトル空間など)間の構造保存マップです。」(出典:ウィキペディア)

Homomorphic Encryptionは、ユーザーがデータを復号化することなく、暗号化されたデータに対して二項演算を実行できるようにする暗号化の形式です。

この形式の暗号化により、生データにアクセスすることなく、情報を暗号化してクラウドサービス/環境にアウトソーシングして処理することができます。

準同型暗号化の利点

今日の世界では、数学演算などの暗号化されたデータに対して計算を実行する場合は、最初にそれらを復号化する必要があります。次に、計算を行い、最後にデータを再度暗号化して返送する必要があります。

しかし、暗号化されたデータが非常に機密性が高く、他のサービスがそれらにアクセスすることを望まない場合はどうなりますか?ここで効果がありHomomorphic encryptionます。

より実用的な例は、患者が状態を持っているかどうかを診断するために医療情報を処理するシステム/サービスです。

共有するデータには、おそらく患者の病歴に関する非常に機密性の高い情報が含まれています。したがって、これは他の人がアクセスできないようにするためのものです。

を使用するHomomorphic Encryptionと、システム/サービスは暗号化されたデータに対して必要な計算を処理し、どの情報が処理されているかを知らなくても診断結果を返すことができます。

さまざまなプラットフォームを介して機密情報を共有すると、プライバシーが失われます。一方、データが暗号化されている間にデータを変更および操作できることで、データのプライバシーが確保されます。

準同型暗号化の種類

準同型暗号化の目的は次のとおりです。などの入力が与えられると、などの無限の数の加算または乗算を適用する
input := Enc(x1),...,Enc(xn)任意の関数に対して、入力が暗号化されている間に値を計算できます。fvalue := f(Enc(x1),...,Enc(xn))

一日の終わりに、算術演算は、算術回路またはブール回路の下でハードウェアレベルで(他のものと同様に)実装されます。

実行したい操作は、準同型加算と準同型乗算です。AdditionとMultiplicationという名前は、論理ゲートXORとANDが対応して持つバイナリ加算とバイナリ乗算の動作が似ているために付けられています。これらの2つのゲートの組み合わせは、任意のブール関数を表すことができます。

これらの要因により、操作の数と種類に基づいて複雑さが変化します。

これらの制限と完全な準同型暗号化アルゴリズム(準同型加算と準同型乗算の両方をサポート)を構築する問題のために、時間の経過とともにさまざまなスキームが実装されてきました。

準同型暗号化の最も一般的なタイプは次のとおりです。

  • 部分準同型暗号化(PHE)
  • やや準同型暗号化(SHE)
  • 完全準同型暗号化(FHE)

部分準同型暗号化(PHE)では、暗号文に対して1つの操作のみを無限に実行できます。この操作は、加算のみまたは乗算のみにすることができます。

部分準同型暗号化アルゴリズムは設計が簡単で、1つの算術演算を使用するアプリケーションで非常に役立ちます。

ある程度準同型暗号化(SHE)を使用すると、加算と乗算の両方を実行できますが、回数は限られています。この制限は、回路ロジックの特定の深さまで評価されます。これは、完全準同型暗号化に到達するための非常に重要なマイルストーンです。

完全準同型暗号化(FHE)を使用すると、暗号文に対して加算と乗算の両方を無限に実行でき、 暗号化されたデータに対する任意の計算をサポートします。

完全準同型暗号化の主な問題は、平文操作と比較して、速度とストレージ要件の両方の点でコスト効率です。

Paillier Cryptosystem

Paillier Cryptosystemは、1999年にPascal Paillierによって発明されました。これは、部分準同型暗号化(PHE)スキームであり、追加的に準同型です。

2つの暗号文の加算のみをサポートし、それらの間の乗算はサポートしません。また、平文番号を暗号文に追加または乗算することもできます。

この例ではpython-paillier、Paillier暗号システムを使用した部分準同型暗号化用のPythonライブラリを使用します。

from phe import paillier

num1 = 10
num2 = 20

pub_key, priv_key = paillier.generate_paillier_keypair()
cipher_num1, cipher_num2 = pub_key.encrypt(num1), pub_key.encrypt(num2)

# add two encrypted numbers together
result = cipher_num1 + cipher_num2
result = priv_key.decrypt(result)
print("add two encrypted numbers together:",result)

# add an encrypted number to a plaintext number
result = cipher_num1 + 5
result = priv_key.decrypt(result)
print("add an encrypted number to a number:",result)

# multiply an encrypted number by a plaintext number
result = cipher_num1 * 10
result = priv_key.decrypt(result)
print("multiply an encrypted number to a number:",result)

上記の例では、公開鍵と秘密鍵の鍵ペアを生成しました。次に、公開鍵と公開鍵の両方を暗号化num1num2、それらの暗号文に対して操作を実行しました。

まず、2つの暗号を追加しました。その後、を取り、cipher_num1それに平文番号を追加しました。最後に、以前と同じプロセスを実行しましたが、今回は加算する代わりにcipher_num1、平文の数値を掛けました。

これらの操作の計算は、データが暗号化されている間に行われます。また、秘密鍵を使用して結果を復号化することにより、結果の整合性を毎回検証できます。

結論

準同型暗号化(HE)は、データのプライバシーと保護に関しては夢のように見えます。ただし、パフォーマンスが低く、コストが高いため、商用/本番アプリケーションには使用できません。

しかし、最近は速度の面で多くの改善がありました。現在のペースで、今後数年間で世界中に適応されると思います。

資力

出典:https ://www.freecodecamp.org/news/introduction-to-homomorphic-encryption/

#python #homomorphic  #encryption 

What is GEEK

Buddha Community

準同型暗号化とは?
伊藤  直子

伊藤 直子

1651123394

準同型暗号化とは?

この記事では、準同型暗号化、それが解決する問題、および存在するさまざまなタイプについて説明します。

次に、Pythonでコードを記述して、その機能の一部を実際に示します。

これが私たちがカバーするものです:

  1. 準同型暗号化とは何ですか?
  2. 準同型暗号化の利点
  3. 準同型暗号化の種類
  4. Paillier Cryptosystem
  5. 詳細を学ぶための結論とリソース

準同型暗号化とは何ですか?

準同型という名前は、代数用語の準同型に由来します。

「準同型は、同じタイプの2つの代数的構造(2つのグループ、2つのリング、2つのベクトル空間など)間の構造保存マップです。」(出典:ウィキペディア)

Homomorphic Encryptionは、ユーザーがデータを復号化することなく、暗号化されたデータに対して二項演算を実行できるようにする暗号化の形式です。

この形式の暗号化により、生データにアクセスすることなく、情報を暗号化してクラウドサービス/環境にアウトソーシングして処理することができます。

準同型暗号化の利点

今日の世界では、数学演算などの暗号化されたデータに対して計算を実行する場合は、最初にそれらを復号化する必要があります。次に、計算を行い、最後にデータを再度暗号化して返送する必要があります。

しかし、暗号化されたデータが非常に機密性が高く、他のサービスがそれらにアクセスすることを望まない場合はどうなりますか?ここで効果がありHomomorphic encryptionます。

より実用的な例は、患者が状態を持っているかどうかを診断するために医療情報を処理するシステム/サービスです。

共有するデータには、おそらく患者の病歴に関する非常に機密性の高い情報が含まれています。したがって、これは他の人がアクセスできないようにするためのものです。

を使用するHomomorphic Encryptionと、システム/サービスは暗号化されたデータに対して必要な計算を処理し、どの情報が処理されているかを知らなくても診断結果を返すことができます。

さまざまなプラットフォームを介して機密情報を共有すると、プライバシーが失われます。一方、データが暗号化されている間にデータを変更および操作できることで、データのプライバシーが確保されます。

準同型暗号化の種類

準同型暗号化の目的は次のとおりです。などの入力が与えられると、などの無限の数の加算または乗算を適用する
input := Enc(x1),...,Enc(xn)任意の関数に対して、入力が暗号化されている間に値を計算できます。fvalue := f(Enc(x1),...,Enc(xn))

一日の終わりに、算術演算は、算術回路またはブール回路の下でハードウェアレベルで(他のものと同様に)実装されます。

実行したい操作は、準同型加算と準同型乗算です。AdditionとMultiplicationという名前は、論理ゲートXORとANDが対応して持つバイナリ加算とバイナリ乗算の動作が似ているために付けられています。これらの2つのゲートの組み合わせは、任意のブール関数を表すことができます。

これらの要因により、操作の数と種類に基づいて複雑さが変化します。

これらの制限と完全な準同型暗号化アルゴリズム(準同型加算と準同型乗算の両方をサポート)を構築する問題のために、時間の経過とともにさまざまなスキームが実装されてきました。

準同型暗号化の最も一般的なタイプは次のとおりです。

  • 部分準同型暗号化(PHE)
  • やや準同型暗号化(SHE)
  • 完全準同型暗号化(FHE)

部分準同型暗号化(PHE)では、暗号文に対して1つの操作のみを無限に実行できます。この操作は、加算のみまたは乗算のみにすることができます。

部分準同型暗号化アルゴリズムは設計が簡単で、1つの算術演算を使用するアプリケーションで非常に役立ちます。

ある程度準同型暗号化(SHE)を使用すると、加算と乗算の両方を実行できますが、回数は限られています。この制限は、回路ロジックの特定の深さまで評価されます。これは、完全準同型暗号化に到達するための非常に重要なマイルストーンです。

完全準同型暗号化(FHE)を使用すると、暗号文に対して加算と乗算の両方を無限に実行でき、 暗号化されたデータに対する任意の計算をサポートします。

完全準同型暗号化の主な問題は、平文操作と比較して、速度とストレージ要件の両方の点でコスト効率です。

Paillier Cryptosystem

Paillier Cryptosystemは、1999年にPascal Paillierによって発明されました。これは、部分準同型暗号化(PHE)スキームであり、追加的に準同型です。

2つの暗号文の加算のみをサポートし、それらの間の乗算はサポートしません。また、平文番号を暗号文に追加または乗算することもできます。

この例ではpython-paillier、Paillier暗号システムを使用した部分準同型暗号化用のPythonライブラリを使用します。

from phe import paillier

num1 = 10
num2 = 20

pub_key, priv_key = paillier.generate_paillier_keypair()
cipher_num1, cipher_num2 = pub_key.encrypt(num1), pub_key.encrypt(num2)

# add two encrypted numbers together
result = cipher_num1 + cipher_num2
result = priv_key.decrypt(result)
print("add two encrypted numbers together:",result)

# add an encrypted number to a plaintext number
result = cipher_num1 + 5
result = priv_key.decrypt(result)
print("add an encrypted number to a number:",result)

# multiply an encrypted number by a plaintext number
result = cipher_num1 * 10
result = priv_key.decrypt(result)
print("multiply an encrypted number to a number:",result)

上記の例では、公開鍵と秘密鍵の鍵ペアを生成しました。次に、公開鍵と公開鍵の両方を暗号化num1num2、それらの暗号文に対して操作を実行しました。

まず、2つの暗号を追加しました。その後、を取り、cipher_num1それに平文番号を追加しました。最後に、以前と同じプロセスを実行しましたが、今回は加算する代わりにcipher_num1、平文の数値を掛けました。

これらの操作の計算は、データが暗号化されている間に行われます。また、秘密鍵を使用して結果を復号化することにより、結果の整合性を毎回検証できます。

結論

準同型暗号化(HE)は、データのプライバシーと保護に関しては夢のように見えます。ただし、パフォーマンスが低く、コストが高いため、商用/本番アプリケーションには使用できません。

しかし、最近は速度の面で多くの改善がありました。現在のペースで、今後数年間で世界中に適応されると思います。

資力

出典:https ://www.freecodecamp.org/news/introduction-to-homomorphic-encryption/

#python #homomorphic  #encryption