¿Qué Es El Cifrado Homomórfico?

En este artículo hablaremos del Cifrado Homomórfico, el problema que resuelve y los diferentes tipos que existen.

Luego escribiremos código en Python para mostrar algunas de sus capacidades en acción.

Esto es lo que cubriremos:

  1. ¿Qué es el cifrado homomórfico?
  2. Ventajas del cifrado homomórfico
  3. Tipos de cifrado homomórfico
  4. Criptosistema Paillier
  5. Conclusión y recursos para saber más

¿Qué es el cifrado homomórfico?

El nombre homomórfico proviene del término algebraico homomorfismo.

"El homomorfismo es un mapa que conserva la estructura entre dos estructuras algebraicas del mismo tipo (como dos grupos, dos anillos o dos espacios vectoriales)". (Fuente: Wikipedia)

Homomorphic Encryptiones una forma de cifrado que permite a los usuarios realizar operaciones binarias en datos cifrados sin siquiera descifrar los datos.

Esta forma de encriptación permite encriptar la información y subcontratarla a servicios/entornos en la nube para su procesamiento, sin acceder a los datos sin procesar.

Ventajas del cifrado homomórfico

En el mundo actual, si queremos realizar cálculos sobre datos cifrados, como operaciones matemáticas, primero tenemos que descifrarlos. Luego tenemos que hacer nuestros cálculos y, finalmente, cifrar los datos de nuevo para enviarlos de vuelta.

Pero, ¿qué sucede cuando los datos cifrados son muy sensibles y no queremos que otros servicios tengan acceso a ellos? Aquí es donde Homomorphic encryptionentra en juego.

Un ejemplo más práctico sería un sistema/servicio que procesa información médica para diagnosticar si un paciente tiene una condición o no.

Los datos que estaríamos compartiendo probablemente incluyan información muy confidencial sobre el historial médico del paciente. Así que esto es algo que queremos asegurarnos de que nadie más pueda acceder a él.

Usando Homomorphic Encryption, el sistema/servicio puede procesar los cálculos requeridos sobre los datos cifrados, devolviendo el resultado del diagnóstico sin saber qué información se está procesando.

Compartir información sensible a través de diferentes plataformas delata nuestra privacidad. Por otro lado, poder modificar y realizar operaciones sobre los datos mientras están encriptados garantiza la privacidad de los datos.

Tipos de cifrado homomórfico

El objetivo del cifrado homomórfico es el siguiente: dada cualquier entrada como
input := Enc(x1),...,Enc(xn), para cualquier función arbitraria fque aplique un número infinito de sumas o multiplicaciones como value := f(Enc(x1),...,Enc(xn)), el valor puede calcularse mientras la entrada está cifrada.

Las operaciones aritméticas, al fin y al cabo, se implementan a nivel de hardware (como cualquier otra cosa) bajo circuitos aritméticos o booleanos.

Las operaciones que queremos realizar son la Suma Homomórfica y la Multiplicación Homomórfica. Los nombres Suma y Multiplicación se dan debido al comportamiento similar de la suma binaria y la multiplicación binaria que tienen las puertas lógicas XOR y AND correspondientemente. La combinación de estas dos puertas puede representar cualquier función booleana.

Los factores hacen que la complejidad varíe en función del número y el tipo de operaciones.

Debido a estas restricciones y al problema de construir un algoritmo de cifrado totalmente homomórfico (que admita tanto la suma homomórfica como la multiplicación homomórfica), con el tiempo se han implementado diferentes esquemas.

Los tipos más comunes de cifrado homomórfico son:

  • Cifrado parcialmente homomórfico (PHE)
  • Cifrado algo homomórfico (SHE)
  • Cifrado completamente homomórfico (FHE)

El cifrado homomórfico parcial (PHE) permite que solo se realice una operación en el texto cifrado un número infinito de veces. Esta operación puede ser solo suma o solo multiplicación.

Los algoritmos de cifrado parcialmente homomórfico son más fáciles de diseñar y son muy útiles en aplicaciones que utilizan una operación aritmética.

El cifrado algo homomórfico (SHE) permite realizar sumas y multiplicaciones, pero por un número limitado de veces. Esta limitación se evalúa con cierta profundidad en la lógica del circuito. Este es un hito muy importante para alcanzar el cifrado totalmente homomórfico.

El cifrado completamente homomórfico (FHE) permite realizar sumas y multiplicaciones en el texto cifrado una cantidad infinita de veces, lo que admite cálculos arbitrarios en datos cifrados.

El principal problema con el cifrado totalmente homomórfico es la rentabilidad tanto en términos de velocidad como de requisitos de almacenamiento en comparación con las operaciones de texto sin formato.

Criptosistema Paillier

El criptosistema Paillier fue inventado por Pascal Paillier en 1999. Es un esquema de cifrado homomórfico parcial (PHE) y homomórfico aditivo.

Solo admite la adición de dos textos cifrados y no la multiplicación entre ellos. Además, se puede agregar o multiplicar un número de texto sin formato al texto cifrado.

En este ejemplo, usamos python-paillier, una biblioteca de Python para el cifrado parcialmente homomórfico utilizando el sistema criptográfico Paillier.

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)

En el ejemplo anterior, generamos un par de claves de una clave pública y una privada. A continuación, ciframos ambos con la clave pública y realizamos num1operaciones num2en sus textos cifrados.

Primero, agregamos los dos cifrados. Después de eso, tomamos cipher_num1y le agregamos un número de texto sin formato. Por último, hicimos el mismo proceso que antes, pero en lugar de sumar, cipher_num1esta vez multiplicamos con un número de texto sin formato.

El cálculo de estas operaciones se realiza mientras los datos están encriptados. Además, podemos verificar la integridad del resultado cada vez descifrándolo usando la clave privada.

Conclusión

El cifrado homomórfico (HE) parece un sueño cuando se trata de privacidad y protección de datos. Pero su bajo rendimiento y altos costos aún lo mantienen fuera de las aplicaciones comerciales/de producción.

Pero ha habido muchas mejoras en términos de velocidad últimamente. Con el ritmo actual, creo que se irá adaptando a nivel mundial durante los próximos años.

Recursos

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

#python #homomorphic  #encryption 

¿Qué Es El Cifrado Homomórfico?
伊藤  直子

伊藤 直子

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 

準同型暗号化とは?

S TV

1608438459

Machine Learning with Encrypted Data | Homomorphic Encryption

The world is changing and privacy is becoming a huge concern. The area of machine learning on encrypted data is booming and expected to grow significantly over the next 5 years. If you want to stay ahead of the curve then get educated. Here is a video to get you started

Check it out: https://youtu.be/nlsd2LO-S50

Subscribe: https://www.youtube.com/c/satsifaction

#machine-learning #encryption #python #homomorphic #data

Machine Learning with Encrypted Data | Homomorphic Encryption