동형 암호화에 대해 알아보자
이 기사에서 우리는 동형 암호화, 그것이 해결하는 문제 및 존재하는 다양한 유형에 대해 논의할 것입니다.
그런 다음 Python으로 코드를 작성하여 실행 중인 기능 중 일부를 보여줍니다.
다룰 내용은 다음과 같습니다.
- 동형 암호화란 무엇입니까?
- 동형 암호화의 장점
- 동형 암호화 유형
- Paillier 암호 시스템
- 더 많은 것을 배울 수 있는 결론 및 리소스
동형 암호화란 무엇입니까?
Homomorphic이라는 이름은 대수학 용어 Homomorphism에서 유래했습니다.
"동형은 동일한 유형의 두 대수 구조(예: 2개의 그룹, 2개의 고리 또는 2개의 벡터 공간) 사이의 구조 보존 맵입니다." (출처: 위키피디아)
Homomorphic Encryption
사용자가 데이터를 해독하지 않고도 암호화된 데이터에 대해 이진 연산을 수행할 수 있도록 하는 암호화의 한 형태입니다.
이 형태의 암호화를 사용하면 원시 데이터에 액세스하지 않고도 정보를 암호화하고 처리를 위해 클라우드 서비스/환경에 아웃소싱할 수 있습니다.
동형 암호화의 장점
오늘날의 세계에서 수학 연산과 같은 암호화된 데이터에 대한 계산을 수행하려면 먼저 암호를 해독해야 합니다. 그런 다음 계산을 해야 하고 마지막으로 데이터를 다시 암호화하여 다시 보내야 합니다.
그러나 암호화된 데이터가 매우 민감하고 다른 서비스에서 해당 데이터에 액세스하는 것을 원하지 않으면 어떻게 될까요? 여기가 어디야 Homomorphic encryption
재생됩니다.
보다 실용적인 예는 환자의 상태를 진단하기 위해 의료 정보를 처리하는 시스템/서비스가 될 것입니다.
우리가 공유할 데이터에는 환자의 병력에 대한 매우 민감한 정보가 포함될 수 있습니다. 따라서 이것은 다른 사람이 액세스할 수 없도록 하려는 것입니다.
사용 Homomorphic Encryption
시스템/서비스는 암호화된 데이터에 대해 필요한 계산을 처리하고 어떤 정보가 진행되고 있는지 모른 채 진단 결과를 반환할 수 있습니다.
다양한 플랫폼을 통해 민감한 정보를 공유하면 개인 정보가 노출됩니다. 반면에 데이터가 암호화된 상태에서 데이터를 수정하고 작업을 수행할 수 있으므로 데이터의 프라이버시가 보장됩니다.
동형 암호화 유형
동형 암호화의 목표는 다음과 같습니다.input := Enc(x1),...,Enc(xn)
임의의 함수에 대해 f
무한한 수의 덧셈이나 곱셈을 적용하는 value := f(Enc(x1),...,Enc(xn))
입력이 암호화되는 동안 값을 계산할 수 있습니다.
하루가 끝나면 산술 연산은 산술 또는 부울 회로에서 하드웨어 수준(다른 모든 것과 마찬가지로)에서 구현됩니다.
우리가 수행하고자 하는 연산은 동형 덧셈과 동형 곱셈입니다. 더하기 및 곱하기라는 이름은 논리 게이트 XOR 및 AND가 상응하는 이진 더하기 및 이진 곱셈의 유사한 동작으로 인해 주어집니다. 이 두 게이트의 조합은 모든 부울 함수를 나타낼 수 있습니다.
이러한 요소는 작업의 수와 종류에 따라 복잡성을 다양하게 만듭니다.
이러한 제한과 완전한 동형 암호화 알고리즘(동형 덧셈 및 동형 곱셈 모두 지원)을 구성하는 문제로 인해 시간이 지남에 따라 구현된 다른 체계가 있었습니다.
동형 암호화의 가장 일반적인 유형은 다음과 같습니다.
- 부분 동형 암호화(PHE)
- 다소 동형 암호화(SHE)
- 완전 동형 암호화(FHE)
PHE(부분 동형 암호화)를 사용하면 암호문에 대해 한 번의 작업만 무한대로 수행할 수 있습니다. 이 연산은 더하기 또는 곱하기만 가능합니다.
부분 동형 암호화 알고리즘은 설계하기 쉽고 하나의 산술 연산을 사용하는 응용 프로그램에서 매우 유용합니다.
다소 동형 암호화(SHE)를 사용하면 덧셈과 곱셈을 모두 수행할 수 있지만 제한된 횟수 동안만 수행할 수 있습니다. 이 제한은 회로 논리의 특정 깊이로 평가됩니다. 이것은 완전 동형 암호화에 도달하기 위한 매우 중요한 이정표입니다.
완전 동형 암호화(FHE)를 사용하면 암호문에 대해 덧셈과 곱셈을 무제한으로 수행할 수 있으므로 임의의 암호화된 데이터에 대한 계산
완전 동형 암호화의 주요 문제는 일반 텍스트 작업에 비해 속도 및 저장 요구 사항 측면에서 비용 효율성입니다.
Paillier 암호 시스템
Paillier Cryptosystem은 1999년 Pascal Paillier에 의해 발명되었습니다. 이는 PHE(부분 동형 암호화) 체계이자 가법 동형입니다.
두 암호문의 덧셈만 지원하고 그 사이의 곱셈은 지원하지 않습니다. 또한 암호문에 평문 숫자를 더하거나 곱할 수 있습니다.
이 예에서 우리는 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)
위의 예에서 우리는 공개 키와 개인 키의 키 쌍을 생성했습니다. 다음으로 우리는 둘 다 암호화했습니다 num1
그리고 num2
공개 키를 사용하여 암호문에 대한 작업을 수행했습니다.
먼저 두 개의 암호를 추가했습니다. 그 후, 우리는 cipher_num1
일반 텍스트 번호를 추가했습니다. 마지막으로 이전과 동일한 과정을 수행했지만 더하기 대신 곱했습니다. cipher_num1
이번에는 일반 텍스트 번호로.
이러한 작업의 계산은 데이터가 암호화되는 동안 발생합니다. 또한 개인키로 복호화하여 매번 결과의 무결성을 확인할 수 있습니다.
결론
HE(동형 암호화)는 데이터 개인 정보 보호 및 보호와 관련하여 꿈처럼 보입니다. 그러나 낮은 성능과 높은 비용으로 인해 여전히 상업/프로덕션 응용 프로그램에서 제외됩니다.
그러나 최근에는 속도 면에서 많은 개선이 이루어졌습니다. 현재의 속도로 앞으로 몇 년 동안 전 세계적으로 적용될 것이라고 믿습니다.
자원
'Coding' 카테고리의 다른 글
시니어 개발자가 되기 위해 내가 한 가장 중요한 일 (0) | 2022.05.02 |
---|---|
JavaScript의 브리지 디자인 패턴하는 방법 (0) | 2022.04.29 |
Linux chmod 및 chown – Linux에서 파일 권한 및 소유권을 변경하는 방법 (0) | 2022.04.28 |
CSS 변수 정의 – CSS 변수란 무엇이며 사용하는 방법에 대해 (0) | 2022.04.26 |
Jetpack Compose를 사용하여 아름다운 스크린샷 자동화하는 방법 (0) | 2022.04.22 |
댓글