동형암호 알고리즘 소개: 무엇이 가능하고, 왜 어려운가

By PLURA

동형암호를 이야기할 때
많은 설명은 이렇게 시작합니다.

“데이터를 복호화하지 않고도 계산할 수 있다.”

이 문장은 맞습니다.
하지만 이 한 문장만으로는
동형암호를 제대로 이해하기 어렵습니다.

정말 중요한 것은
무엇이 가능한가보다
어떤 방식으로 가능한가,
그리고 왜 그렇게 무거운가를 함께 이해하는 것입니다.

동형암호는 하나의 단일 기술이 아니라
지원하는 연산 범위와 수학적 구조에 따라 여러 계열로 나뉘는 암호 알고리즘들의 집합입니다.

예를 들어,

  • 어떤 방식은 덧셈만 잘 처리하고,
  • 어떤 방식은 덧셈과 곱셈을 일정 깊이까지 처리하며,
  • 어떤 방식은 이론적으로 임의의 계산 전체를 수행할 수 있습니다.

즉, 동형암호는
“암호화된 상태에서 계산한다”는 한 줄 설명보다
어디까지 계산 가능한가, 그리고
그 대가가 무엇인가로 구분해서 보는 것이 더 정확합니다.


먼저 알아둘 것: 동형암호는 “암호화된 계산” 기술이다

기존 암호화는
저장과 전송에는 매우 강력하지만,
계산을 하려면 결국 복호화가 필요했습니다.

문제는 바로 이 지점입니다.

데이터를 안전하게 보관하고 전송해도,
분석이나 AI 추론, 통계 처리, 검색 같은 작업을 하려면
언젠가는 평문으로 꺼내야 했습니다.

동형암호는 이 문제를 겨냥합니다.

즉,

  • 서버는 데이터 내용을 알지 못한 채
  • 암호문 위에서 직접 연산하고
  • 결과도 암호문으로 돌려주며
  • 최종 사용자만 복호화할 수 있게 합니다

이 점 때문에 동형암호는
기존 암호와 달리
데이터를 “저장”하고 “전달”하는 기술을 넘어
“사용”하는 동안도 보호하려는 기술
로 평가됩니다.


왜 동형암호를 3가지로 나누어 봐야 하는가

동형암호를 처음 접하는 독자에게
가장 혼란스러운 부분은 이것입니다.

“동형암호가 다 똑같은 것 아닌가?”

그렇지 않습니다.

실제로는 지원하는 계산 범위에 따라
다음 3가지로 나누어 이해하는 것이 가장 쉽습니다.

  1. 부분 동형암호(PHE)
    특정 연산만 가능한 방식
  2. 준동형암호 / 다소 동형암호(SHE / Leveled HE)
    제한된 깊이의 연산이 가능한 방식
  3. 완전동형암호(FHE)
    이론적으로 임의의 계산까지 가능한 방식

이 구분을 이해하면
왜 어떤 글은 동형암호를 꽤 실용적으로 설명하고,
왜 어떤 글은 너무 느리고 비싸다고 말하는지 함께 이해할 수 있습니다.


1. 부분 동형암호(PHE): 가장 단순하지만 가장 제한적이다

무엇이 가능한가

부분 동형암호는
이름 그대로 일부 연산만 지원합니다.

대표적으로는 다음 두 가지 계열이 잘 알려져 있습니다.

  • 덧셈 동형
  • 곱셈 동형

예를 들어 Paillier 같은 방식은
암호문끼리의 연산을 통해
평문의 덧셈 결과를 얻는 구조로 설명됩니다.

즉,

  • 데이터 전체를 자유롭게 계산하는 기술이라기보다
  • 특정 계산을 안전하게 수행하도록 설계된 구조입니다

숫자로 보는 아주 작은 예시

예를 들어 어떤 사용자가 숫자 1020을 각각 암호화해서 서버에 보냈다고 가정해 보겠습니다.

  • 사용자는 Enc(10)Enc(20) 을 서버에 보냅니다.
  • 서버는 평문 10, 20은 보지 못합니다.
  • 하지만 서버는 암호문끼리 연산해서
    Enc(10 + 20) 에 해당하는 결과를 만들 수 있습니다.
  • 사용자가 그 결과를 복호화하면 30을 얻습니다.

핵심은
서버가 10과 20 자체는 모르지만, 계산은 했다는 점입니다.

물론 실제 내부 수학은 훨씬 복잡하지만,
입문자 입장에서는 이 정도 직관이 가장 중요합니다.

왜 중요한가

부분 동형암호는
완전동형암호보다 훨씬 단순하고,
개념적으로 이해하기도 쉽습니다.

그래서 동형암호의 출발점을 설명할 때 자주 등장합니다.

한계는 무엇인가

하지만 한계도 분명합니다.

  • 덧셈은 되지만 곱셈은 안 되거나
  • 곱셈은 되지만 일반 계산은 안 되며
  • 복잡한 알고리즘을 그대로 구현할 수 없습니다

즉, 부분 동형암호는
“동형성”의 아이디어를 보여주는 입문 단계로는 중요하지만,
복잡한 AI나 분석 작업을 직접 처리하기에는 한계가 큽니다.


2. 준동형암호 / 다소 동형암호: 제한된 계산을 현실적으로 다루는 단계

무엇이 다른가

준동형암호는
덧셈과 곱셈을 모두 어느 정도 수행할 수 있습니다.
다만 문제는 연산 깊이입니다.

동형암호에서는 연산을 할수록
암호문 내부의 잡음(noise) 이 커집니다.

이 잡음이 너무 커지면
더 이상 올바른 복호화가 어려워집니다.

따라서 준동형암호는
다음과 같은 특징을 가집니다.

  • 여러 번의 덧셈과 곱셈이 가능하다
  • 하지만 무한정 가능한 것은 아니다
  • 회로 깊이 또는 연산 횟수에 제한이 있다

왜 중요했는가

이 단계가 중요한 이유는
완전동형암호로 가는 중간 다리였기 때문입니다.

이론적으로는 큰 진전이었고,
실무적으로도 제한된 분석 작업에는 의미가 있었습니다.

즉, 모든 계산은 아니더라도
일정 깊이 이하의 계산이라면 암호문 상태에서 처리할 수 있다는 점을 보여주었습니다.

한계는 여전하다

준동형암호는 부분 동형암호보다 훨씬 강력하지만,
여전히 자유로운 범용 계산과는 거리가 있습니다.

결국 핵심 문제는 그대로 남습니다.

잡음을 어떻게 제어할 것인가

이 문제가 완전동형암호의 핵심 난제로 이어집니다.


3. 완전동형암호(FHE): 이론적으로 가장 강력한 형태

무엇이 가능한가

완전동형암호는
이론적으로 임의의 계산을 수행할 수 있는 동형암호입니다.

즉, 덧셈과 곱셈을 충분히 반복할 수 있다면
논리회로나 일반 프로그램의 많은 계산을 표현할 수 있습니다.

이 때문에 완전동형암호는
종종 “꿈의 암호 기술”처럼 소개됩니다.

무엇이 핵심인가

완전동형암호의 핵심은
연산 중에 커지는 잡음을
다시 줄여서 계산을 계속 가능하게 만드는 데 있습니다.

이 과정을 설명할 때 가장 자주 등장하는 개념이
바로 부트스트래핑(bootstrapping) 입니다.

부트스트래핑은 아주 거칠게 말하면,

  • 너무 시끄러워진 암호문을
  • 다시 계산 가능한 상태로 정리해
  • 더 깊은 연산을 가능하게 만드는 과정

이라고 볼 수 있습니다.

부트스트래핑을 조금 더 직관적으로 설명하면

입문자에게는 이렇게 이해하는 것이 좋습니다.

부트스트래핑은 “잡음이 너무 커진 암호문을
한 번 새로 정돈해 주는 과정”에 가깝습니다.

조금 더 기술적으로 말하면,
암호문이 가진 내용을 유지하면서
잡음 수준을 다시 낮추는 일종의 재정비 과정입니다.

그래서 많은 설명에서
“암호문을 다시 암호화하는 것처럼 보인다”는 비유를 사용합니다.

물론 내부 구조는 단순 재암호화보다 훨씬 복잡하지만,
입문 단계에서는 이 비유가 가장 이해하기 쉽습니다.

왜 어려운가

문제는 이 과정이 매우 무겁다는 점입니다.

  • 계산량이 많고
  • 암호문 크기가 커지며
  • 메모리와 저장공간 부담도 커지고
  • 실제 서비스 적용 시 속도 문제가 크게 나타납니다

그래서 FHE는
이론적으로 매우 아름답지만,
실무에서는 늘 성능과 비용의 벽과 함께 이야기됩니다.


오늘 많이 언급되는 대표 계열: BGV, BFV, CKKS, TFHE

동형암호를 조금만 더 공부하면
곧바로 여러 알고리즘 이름이 등장합니다.

대표적으로는 다음 계열이 자주 언급됩니다.

알고리즘 성격 잘 맞는 영역 핵심 포인트
BGV 정수 중심 일반적인 정수 계산 모듈러 정수 연산에 적합
BFV 정수 중심 통계, 집계, 정수 기반 처리 정확한 값 유지에 적합
CKKS 근사 실수 계산 AI, 머신러닝, 분석 실수/벡터 근사 계산에 강점
TFHE / FHEW 계열 부울/비트 연산과 빠른 부트스트래핑 계열 비교, 조건 분기, 논리 회로 비트 단위 연산에 강점

입문 단계에서는
이름을 많이 외우기보다
정확 계산 계열근사 계산 계열을 구분하는 것이 중요합니다.


BGV / BFV: 왜 “정수 계산”에 가깝다고 하는가

BGV와 BFV는
대체로 정확한 정수 연산에 적합한 계열로 설명됩니다.

즉,

  • 정수 합계
  • 카운트
  • 정수 기반 통계
  • 범위를 넘지 않는 정확 계산

같은 작업을 생각할 때 이해하기 쉽습니다.

실무적으로는
“소수점 오차를 허용하기 어려운 계산”에서
자주 비교 대상이 됩니다.

물론 실제 구현에서는
파라미터 선택, 모듈러 구조, 키 스위칭 같은 요소가 중요하지만,
입문자 입장에서는 먼저

BGV/BFV는 정확한 값 중심

이라고 기억하면 충분합니다.


CKKS: 왜 AI와 자주 연결되는가

CKKS는
실수 계산을 근사값으로 다루는 데 강점이 있어
머신러닝, AI 추론, 통계 분석 맥락에서 매우 자주 언급됩니다.

이 계열이 중요한 이유는 단순합니다.

현실의 AI 계산은
대부분 정수보다 실수 벡터 연산에 가깝기 때문입니다.

예를 들어 다음 같은 계산입니다.

  • 선형 결합
  • 벡터-행렬 곱
  • 거리 계산
  • 평균, 분산, 점수 계산

CKKS는 이런 종류의 연산을
“완전히 정확한 값”이 아니라
실용적으로 충분한 근사값으로 처리하는 방향을 택합니다.

왜 근사 계산이 필요한가

실수 계산을 암호문 위에서 정확히 다루는 것은 매우 어렵습니다.
CKKS는 이 문제를 해결하기 위해
근사 계산을 허용하는 대신 실수 계산 효율을 얻는 방식을 선택합니다.

이 때문에 최근 실무 논의에서는
CKKS가 특히 많이 등장합니다.

rescale은 왜 필요한가

CKKS를 설명할 때 종종 나오는 개념이
rescale 입니다.

직관적으로 말하면,

  • 곱셈을 하면 값의 스케일이 커지고
  • 잡음도 함께 증가하므로
  • 계산을 계속하려면 스케일을 다시 정리해 주어야 합니다

즉, rescale은
곱셈 이후 계산이 계속 가능하도록 값을 다시 균형 있게 맞추는 작업입니다.

입문자 관점에서는
“CKKS는 실수 근사 계산을 위해
스케일 관리와 잡음 관리를 함께 해야 한다” 정도로 이해하면 좋습니다.


왜 동형암호는 유난히 느린가

동형암호를 소개할 때
반드시 함께 설명해야 하는 것이 있습니다.

바로 왜 이렇게 무거운가입니다.

핵심 이유는 단순합니다.

1) 암호문 자체가 크다

평문보다 암호문 표현이 훨씬 무겁습니다.
즉, 저장과 전송 자체가 부담이 됩니다.

2) 연산 과정에서 잡음이 누적된다

단순한 계산도
암호문 위에서는 훨씬 복잡한 수학적 구조로 처리됩니다.

3) 복잡한 함수는 우회가 필요하다

나눗셈, 비교, 최대값, 비선형 함수 등은
그대로 처리하기 어렵고
다항식 근사나 별도 회로 변환이 필요합니다.

4) 부트스트래핑이 비싸다

FHE를 가능하게 하는 핵심이지만,
동시에 성능 병목의 대표 원인입니다.

즉, 동형암호의 느림은
구현이 미숙해서만이 아니라
기술 구조 자체가 본질적으로 무겁기 때문입니다.


그래서 비교, max/min, ReLU 같은 연산이 왜 까다로운가

입문 글에서 자주 빠지는 부분이 바로 이것입니다.

동형암호는 덧셈·곱셈에는 비교적 자연스럽지만,
다음 연산은 갑자기 어려워집니다.

  • 비교 (a > b)
  • 최대값 / 최소값
  • 분기 (if)
  • ReLU 같은 비선형 함수

이유는 간단합니다.

이런 연산은
보통 “값을 직접 보고 판단”하는 성격이 강한데,
동형암호에서는 평문을 볼 수 없기 때문입니다.

그래서 실무에서는 보통

  • 다항식 근사
  • 별도 부울 회로
  • CKKS와 TFHE/FHEW 계열 스위칭

같은 우회가 필요합니다.

즉, 동형암호가 어려운 이유는
단순히 느려서가 아니라
익숙한 계산을 그대로 옮길 수 없는 경우가 많기 때문입니다.


2026년 기준, 실제로는 어떤 라이브러리가 많이 언급되는가

입문 글이라도
이제는 “어떤 라이브러리로 접하는가” 정도는 알아두는 것이 좋습니다.

1) Microsoft SEAL

가장 널리 알려진 입문용 라이브러리 중 하나입니다.

  • BFV, BGV: 정수 중심
  • CKKS: 근사 실수 계산

구조가 비교적 명확하고 문서와 예제가 잘 알려져 있어
동형암호를 처음 만지는 개발자에게 자주 추천됩니다.

2) OpenFHE

보다 폭넓은 기능을 제공하는 오픈소스 생태계입니다.

  • BGV, BFV, CKKS
  • TFHE/FHEW 계열
  • 부트스트래핑
  • threshold FHE
  • scheme switching

같은 고급 기능이 자주 함께 언급됩니다.

3) Zama Concrete / Concrete ML

개발자와 데이터 과학자에게
좀 더 사용성을 높여 주는 방향으로 자주 언급됩니다.

특히 Concrete ML
FHE 기반 프라이버시 보존 머신러닝 프레임워크로 소개됩니다.

4) Lattigo

Go 생태계에서 자주 언급되는 라이브러리입니다.

  • RLWE 기반
  • BFV/BGV/CKKS
  • multiparty HE
  • 브라우저/WASM 등과의 연결 가능성

같은 점 때문에 관심을 받습니다.

즉, 2026년 현재 동형암호는
“논문 속 개념”에만 머무는 것이 아니라,
이미 여러 오픈소스 구현과 실험적 개발 생태계를 갖고 있습니다.


실무에서는 어디에 쓰이려 하는가

동형암호는 아직 모든 서비스에 바로 넣을 수 있는 기술은 아닙니다.
하지만 특정 분야에서는 분명한 매력이 있습니다.

1) 의료 데이터 분석

민감한 의료 데이터를 평문으로 노출하지 않고
통계나 모델 추론을 수행하려는 시도와 잘 맞습니다.

2) 금융 데이터 협업

기관 간 데이터를 직접 공유하지 않으면서
특정 분석 결과만 얻고 싶은 상황에 적합합니다.

3) 프라이버시 보호 머신러닝

입력 데이터를 숨긴 상태로
모델 추론을 수행하려는 방향에서 CKKS, TFHE 계열 논의가 많습니다.

다만 여기서도 중요한 점은 같습니다.

가능하다는 것과, 비용 대비 실용적이라는 것은 다른 문제다.

동형암호는 분명 가능성을 보여 주지만,
항상 일반 컴퓨팅을 대체하는 것은 아닙니다.


초보자가 꼭 기억해야 할 세 가지

1) 동형암호는 하나가 아니다

부분 동형, 준동형, 완전동형은
가능한 계산 범위가 다릅니다.

2) 핵심 문제는 “잡음 관리”다

동형암호를 어렵게 만드는 중심에는
언제나 잡음과 연산 깊이 문제가 있습니다.

3) AI와 연결된다고 해서 만능은 아니다

CKKS 같은 구조 덕분에 AI와 자주 연결되지만,
그 자체가 범용 AI 인프라가 된다는 뜻은 아닙니다.


보안 관점에서 왜 중요한가

동형암호가 중요한 이유는
양자내성암호와는 또 다른 층위에 있습니다.

양자내성암호가
주로 전송과 키 교환을 지키는 방향이라면,
동형암호는
연산 중 데이터 보호를 겨냥합니다.

즉, 두 기술은 경쟁 관계라기보다
서로 다른 문제를 다룹니다.

  • PQC: 양자 시대에도 안전한 키 교환과 서명
  • 동형암호: 복호화 없이 계산 가능한 구조

그래서 동형암호를 이해할 때는
“RSA 대체 기술”처럼 보기보다
암호화된 데이터 활용 기술로 보는 편이 정확합니다.


더 공부하고 싶다면 어디서부터 볼까

입문을 넘어서 한 단계 더 가고 싶다면
다음 순서가 좋습니다.

  1. Paillier
    동형성의 가장 단순한 직관 익히기
  2. BFV / BGV
    정수 계산 기반 이해하기
  3. CKKS
    근사 실수 계산과 rescale 이해하기
  4. bootstrapping
    왜 FHE가 가능해지는지 이해하기
  5. OpenFHE / SEAL / Concrete ML 예제
    실제 코드와 파라미터 감각 익히기

이 순서로 보면
동형암호를 “신기한 개념”이 아니라
구체적인 계산 기술로 이해하기 쉬워집니다.


결론

동형암호는
데이터를 암호문 상태로 유지한 채
연산할 수 있게 해 주는 매우 독특한 기술입니다.

하지만 이 기술은 단순하지 않습니다.

  • 부분 동형암호는 일부 연산만 가능하고
  • 준동형암호는 제한된 깊이의 계산을 지원하며
  • 완전동형암호는 이론적으로 가장 강력하지만 성능 부담이 큽니다

여기에 더해

  • BGV, BFV 는 정수 중심 계산,
  • CKKS 는 근사 실수 계산,
  • TFHE 계열은 비트/논리 연산과 빠른 부트스트래핑 맥락

이라는 흐름까지 이해하면
동형암호를 훨씬 현실적으로 볼 수 있습니다.

결국 동형암호의 핵심은
“암호화되어 있다”는 사실보다
어떤 계산을 어디까지 허용하는가,
그리고 그 대가를 얼마나 감당할 수 있는가에 있습니다.

그래서 동형암호를 처음 공부할 때는
공식 이름을 많이 외우는 것보다
다음 한 문장을 먼저 기억하는 것이 좋습니다.

동형암호는 복호화 없는 계산 기술이지만,
그 대가로 성능과 복잡도를 크게 지불하는 기술이다.


함께 읽기