Skip to content

GPG와 블록체인의 암호학적 비교


title: “GPG와 블록체인의 암호학적 비교” lastUpdated: 2025-11-20

GPG(GNU Privacy Guard)와 블록체인은 서로 다른 목적으로 설계된 기술이지만, 둘 다 공개 키 암호화와 디지털 서명이라는 암호학적 기초를 공유한다. GPG는 개인 간 통신의 기밀성과 인증을 제공하는 도구이며, 블록체인은 탈중앙화된 원장의 무결성과 신뢰성을 보장하는 시스템이다. 이 문서는 두 기술이 암호학을 어떻게 활용하는지 비교하고, 각각의 설계 철학과 신뢰 모델의 차이를 분석한다.

암호학적 공통점

GPG와 블록체인은 다음과 같은 핵심 암호학 기술을 공유한다.

공개 키 암호화

  • GPG와 블록체인 모두 비대칭 암호화를 사용한다.
  • 공개 키는 누구나 알 수 있지만, 개인 키는 소유자만 알고 있어야 한다.
  • GPG는 주로 RSA, DSA, EdDSA 등을 사용한다.
  • 비트코인은 secp256k1 타원곡선을 사용하는 ECDSA를 사용한다.
  • 이더리움도 secp256k1을 사용하며, 최신 블록체인은 Schnorr 서명이나 BLS 서명을 도입하고 있다.
GPG 키 쌍 생성 (RSA-4096):
공개 키 (e, n): e=65537, n=2048비트 모듈러스
개인 키 (d, n): d=개인 지수
비트코인 키 쌍 생성 (ECDSA secp256k1):
개인 키: 256비트 무작위 정수 e
공개 키: P = e × G (타원곡선 점)

디지털 서명

  • 두 시스템 모두 디지털 서명으로 데이터의 출처와 무결성을 증명한다.
  • 서명 생성은 개인 키로, 검증은 공개 키로 수행한다.
  • 효율성을 위해 원본 데이터가 아닌 해시값에 서명한다.

GPG 서명 과정:

1. 메시지 해시: h = SHA-256(메시지)
2. 서명 생성: s = h^d mod n (RSA 개인 키 사용)
3. 서명 검증: h' = s^e mod n (RSA 공개 키 사용)
4. 유효성 확인: h == h'

비트코인 트랜잭션 서명 과정:

1. 트랜잭션 해시: z = SHA-256(SHA-256(트랜잭션))
2. 서명 생성 (ECDSA):
- 임시 키 k 생성
- r = (k × G).x
- s = (z + r × e) / k mod n
3. 서명 검증:
- u = z/s mod n
- v = r/s mod n
- R' = u × G + v × P
- 유효성 확인: r == R'.x

해시 함수

  • GPG는 메시지 다이제스트 생성에 SHA-256, SHA-512 등을 사용한다.
  • 비트코인은 블록 해시, 트랜잭션 ID, 주소 생성에 SHA-256을 사용한다.
  • 머클 트리 구조에서 트랜잭션들을 효율적으로 요약하는 데 해시를 활용한다.
GPG 서명:
hash(메시지) → 서명
비트코인 블록:
hash(hash(블록 헤더)) → 블록 ID
hash(hash(트랜잭션)) → 트랜잭션 ID
hash160(공개 키) → 주소 (SHA-256 + RIPEMD-160)

핵심 차이점

암호화 vs 서명

GPG: 암호화와 서명 모두 제공

  • GPG의 주요 목적 중 하나는 메시지 암호화이다.
  • 수신자의 공개 키로 암호화하여 오직 수신자만 복호화할 수 있게 한다.
  • 하이브리드 암호화 방식을 사용한다.
암호화 과정:
1. 무작위 세션 키 k 생성 (AES-256)
2. k로 메시지 암호화 → 암호문 c
3. 수신자 공개 키로 k 암호화 → 암호화된 키 e_k
4. {c, e_k} 전송
복호화 과정:
1. 수신자 개인 키로 e_k 복호화 → k
2. k로 c 복호화 → 원본 메시지

블록체인: 서명만 사용

  • 블록체인 트랜잭션은 암호화되지 않으며 공개적으로 조회할 수 있다.
  • 디지털 서명은 트랜잭션의 소유자를 증명하고 무결성을 보장하는 용도로만 사용된다.
  • 트랜잭션 내용 자체는 누구나 볼 수 있지만, 서명 없이는 수정할 수 없다.
비트코인 트랜잭션:
- 송신자: A의 개인 키로 트랜잭션 서명
- 네트워크: 누구나 트랜잭션 내용 확인 가능
- 검증: A의 공개 키로 서명 검증
- 결과: 트랜잭션이 A로부터 왔음을 증명

이러한 차이는 두 시스템의 설계 목적 차이를 반영한다.

  • GPG: 사적인 통신(privacy)이 목적이므로 암호화가 필수적이다.
  • 블록체인: 공개적이고 검증 가능한 원장(public ledger)이 목적이므로 투명성이 중요하다.

신뢰 모델: Web of Trust vs Trustless

GPG와 블록체인은 모두 다수의 독립적 검증탈중앙화라는 공통점을 가진다. 두 시스템 모두 중앙 기관 없이 여러 참여자의 검증을 통해 신뢰를 구축한다. 하지만 “무엇을 검증하는가”와 “어떻게 신뢰를 형성하는가”에서 근본적으로 다르다.

공통점: 분산 검증

GPG:
여러 사람이 Bob의 키를 서명 → 신뢰도 증가
1개 Full 또는 3개 Marginal 서명 → 키 유효
블록체인:
여러 노드가 트랜잭션 검증 → 합의 도달
51% 이상 노드 합의 → 블록 확정

두 시스템 모두 “다수가 인정하면 신뢰할 수 있다”는 원리를 사용한다.

GPG: Web of Trust (주관적 신뢰 네트워크)

  • 사용자 간의 신원 매핑에 대한 신뢰 관계를 구축한다.
  • ”이 공개 키가 정말 Bob의 것인가?”를 검증한다.
  • 신뢰는 주관적이고 전이적이다.
신뢰 전파 과정:
Alice → Bob (직접 검증 후 서명)
Alice가 Bob을 직접 만나서 공개 키 지문을 확인
Alice가 자신의 개인 키로 Bob의 공개 키에 서명
Carol → Alice (신뢰)
Carol이 Alice를 신뢰함
Carol → Bob (간접 신뢰)
Carol은 Alice를 신뢰하고,
Alice가 Bob의 키를 서명했으므로,
Carol도 Bob의 키를 (간접적으로) 신뢰할 수 있음

GPG의 신뢰 수준:

  • Unknown: 이 키를 모른다.
  • None: 이 키를 신뢰하지 않는다.
  • Marginal: 이 키를 약간 신뢰한다.
  • Full: 이 키를 완전히 신뢰한다.
  • Ultimate: 이 키는 내 키다.

기본 규칙: 1개의 Full 서명 또는 3개의 Marginal 서명이 있으면 키가 유효하다.

장점:

  • 중앙 기관이 필요 없다.
  • 검열에 강하다.
  • 사용자가 신뢰 관계를 직접 제어할 수 있다.

단점:

  • 사용이 복잡하다.
  • 직접 만나서 키를 검증해야 한다.
  • 확장성이 떨어진다.
  • 신뢰 네트워크 구축에 시간과 노력이 필요하다.

블록체인: Trustless (객관적 규칙 검증)

  • 트랜잭션의 유효성에 대한 수학적 검증을 수행한다.
  • ”이 트랜잭션이 암호학적 규칙을 만족하는가?”를 검증한다.
  • 검증은 객관적이고 자동화되어 있다.
  • 합의 알고리즘으로 다수의 노드가 같은 결론에 도달한다.
트랜잭션 검증 (비트코인):
Alice가 Bob에게 1 BTC 전송
→ 네트워크의 모든 노드가 독립적으로 검증:
1. 암호학적 검증
- Alice의 개인 키로 서명되었는가?
- ECDSA 서명 검증: r == (z/s × G + r/s × P).x
2. UTXO 확인
- Alice가 1 BTC를 소유하고 있는가?
- UTXO 집합에서 확인
3. 이중 지불 방지
- 같은 UTXO를 다른 트랜잭션에서 사용하지 않았는가?
- 블록체인 기록 확인
4. 합의 알고리즘
- 작업 증명(Proof of Work) 또는 지분 증명(Proof of Stake)
- 다수의 노드가 동의한 블록에 포함됨
→ Alice를 신뢰하든 안 하든, 수학적으로 유효하면 승인됨

장점:

  • 중개자나 신뢰 기관이 불필요하다.
  • 전 세계 누구나 동일하게 검증할 수 있다.
  • 자동화되고 즉각적인 검증이 가능하다.
  • 확장성이 높다.

단점:

  • 합의 알고리즘 유지를 위한 계산 비용(PoW) 또는 경제적 비용(PoS)이 필요하다.
  • 51% 공격과 같은 다수 공격에 취약할 수 있다.
  • 트랜잭션 확정까지 시간이 걸린다.

비교 요약

구분Web of Trust (GPG)Trustless (블록체인)
공통점다수의 독립적 검증다수의 독립적 검증
여러 사람이 키 서명여러 노드가 트랜잭션 검증
검증 대상신원 매핑 (키 ↔ 사람)트랜잭션 유효성 (규칙 준수)
검증 성질주관적 (신뢰 선택)객관적 (수학적 증명)
검증 주체내가 신뢰하는 사람들프로토콜을 따르는 모든 노드
신뢰 전파전이적 (A→B→C)전이 불필요 (각자 독립 검증)
일관성사람마다 다를 수 있음정직한 노드는 모두 동일
참여 방식신뢰 네트워크 구축 필요프로토콜만 따르면 즉시 참여

핵심 차이

GPG (주관적 신뢰):
- 검증 질문: "이 키가 정말 Bob의 것인가?"
- 검증 방법: Alice를 신뢰하고, Alice가 Bob을 보증함
- 신뢰 선택: Carol은 Alice를 신뢰 안 할 수도 있음
- 결과: 사람마다 다른 신뢰 그래프
블록체인 (객관적 검증):
- 검증 질문: "이 트랜잭션이 규칙을 만족하는가?"
- 검증 방법: 서명 검증, UTXO 확인, 이중지불 방지
- 검증 강제: 프로토콜 규칙을 따르는 모든 노드가 동일하게 검증
- 결과: 정직한 노드는 모두 같은 결론 도출

Web of Trust는 “내가 선택한 사람들이 인정하면 신뢰”하는 방식이고, Trustless는 “프로토콜 규칙을 만족하면 무조건 신뢰”하는 방식이다.

두 시스템 모두 “다수의 검증”을 활용하지만, GPG는 누구를 믿을지 선택할 수 있고, 블록체인은 수학적 규칙만 따지면 신뢰 여부와 무관하게 작동한다는 점에서 다르다.

역설적으로 Trustless는 “신뢰가 없다”는 뜻이 아니라, “개인적 신뢰 관계 없이도 시스템이 작동한다”는 의미이다.

데이터 구조

GPG: 개별 메시지 단위

  • GPG는 각 메시지를 독립적으로 처리한다.
  • 메시지 간 연결이나 순서 관계가 없다.
  • 서명된 각 메시지는 독립적으로 검증 가능하다.
메시지 A → 서명 → 검증 (독립적)
메시지 B → 서명 → 검증 (독립적)
메시지 C → 서명 → 검증 (독립적)

블록체인: 연결된 체인 구조

  • 블록들이 암호학적으로 연결된 체인을 형성한다.
  • 각 블록은 이전 블록의 해시를 포함한다.
  • 한 블록을 변조하면 이후 모든 블록이 무효화된다.
블록 N-1의 구조:
- 이전 블록 해시: hash(블록 N-2)
- 트랜잭션들
- 논스 (작업증명)
- 타임스탬프
블록 N의 구조:
- 이전 블록 해시: hash(블록 N-1) ← 연결
- 트랜잭션들
- 논스 (작업증명)
- 타임스탬프
변조 불가능성:
블록 N-1 변조 시도
→ hash(블록 N-1) 변경됨
→ 블록 N의 "이전 블록 해시" 불일치
→ 블록 N 이후 모든 블록 재계산 필요
→ 막대한 계산 비용 (작업증명)

블록 헤더 구성 (비트코인):

- Version: 4바이트
- Previous Block Hash: 32바이트
- Merkle Root: 32바이트
- Timestamp: 4바이트
- Bits (난이도): 4바이트
- Nonce: 4바이트
총 80바이트

머클 트리로 트랜잭션 요약:

Merkle Root
|
+-------+-------+
| |
Hash01 Hash23
| |
+--+--+ +--+--+
| | | |
Tx0 Tx1 Tx2 Tx3
  • n개 트랜잭션을 하나의 32바이트 머클 루트로 요약한다.
  • 특정 트랜잭션 포함 증명에 log₂(n)개 해시만 필요하다.
  • GPG에는 이러한 계층적 데이터 구조가 없다.

키 관리

GPG: 계층적 키 구조

  • 주 키(Primary Key)와 여러 하위 키(Subkeys)로 구성된다.
  • 각 키가 특정 용도로 분리되어 있다.
주 키 [C] (Certification)
├── 하위 키 [S] (Signing)
├── 하위 키 [E] (Encryption)
└── 하위 키 [A] (Authentication)

키 보호 전략:

일상 사용:
- 하위 키만 컴퓨터에 저장
- 서명, 암호화, SSH 인증에 사용
주 키:
- 오프라인 USB에 안전하게 보관
- 하위 키 발급/폐기 시에만 사용
- 키가 손상되어도 주 키는 안전

블록체인: 단일 키 쌍

  • 각 주소는 하나의 개인 키-공개 키 쌍을 가진다.
  • 계층적 구조는 HD 지갑(BIP32)에서 선택적으로 사용한다.
비트코인 주소 생성:
개인 키: 256비트 무작위 정수
공개 키: P = e × G (secp256k1)
주소: Base58(hash160(공개 키))
HD 지갑 (BIP32):
마스터 키
├── m/44'/0'/0'/0/0 (첫 번째 주소)
├── m/44'/0'/0'/0/1 (두 번째 주소)
└── m/44'/0'/0'/0/2 (세 번째 주소)
  • GPG는 하나의 신원에 여러 기능을 부여하는 방식이다.
  • 블록체인은 여러 독립적인 주소를 사용하는 방식이다.
  • GPG는 키를 폐기하고 갱신할 수 있지만, 블록체인 주소는 폐기 개념이 없다.

실무적 연관성

Git 커밋 서명

GPG와 블록체인의 원리가 함께 사용되는 사례이다.

Terminal window
# GPG로 Git 커밋 서명
git config --global user.signingkey YOUR_KEY_ID
git commit -S -m "Add feature"
# GitHub에서 검증
- GPG 공개 키를 GitHub에 등록
- 커밋 서명을 GitHub이 검증
- "Verified" 배지 표시

블록체인과의 유사성:

  • GPG 서명: 커밋이 특정 개발자로부터 왔음을 증명한다.
  • 블록체인 서명: 트랜잭션이 특정 주소 소유자로부터 왔음을 증명한다.
  • Git 로그: 커밋들이 순서대로 연결된 히스토리를 형성한다.
  • 블록체인: 블록들이 암호학적으로 연결된 체인을 형성한다.

소프트웨어 배포 서명

GPG는 소프트웨어 무결성 검증에 널리 사용된다.

Terminal window
# 파일 서명 (배포자)
gpg --detach-sign --armor myprogram-1.0.tar.gz
# 결과: myprogram-1.0.tar.gz.asc
# 서명 검증 (사용자)
gpg --verify myprogram-1.0.tar.gz.asc myprogram-1.0.tar.gz

블록체인에서도 유사한 개념이 사용된다.

  • 스마트 컨트랙트 배포 시 배포자의 개인 키로 서명한다.
  • 누구나 배포자의 주소를 확인하여 출처를 검증할 수 있다.
  • IPFS와 블록체인을 결합한 경우, GPG와 유사하게 파일 해시를 체인에 기록한다.

키 백업과 복구

GPG 키 백업

Terminal window
# 개인 키 백업
gpg --export-secret-keys --armor [email protected] > private-key-backup.asc
# 폐기 인증서 생성
gpg --output revoke.asc --gen-revoke [email protected]
  • 키를 잃어버리면 암호화된 메시지를 영원히 복호화할 수 없다.
  • 폐기 인증서를 미리 생성하여 안전하게 보관해야 한다.
  • 키 만료 기한을 설정하여 분실 시 자동 무효화를 방지한다.

블록체인 키 백업

개인 키 백업 방법:
1. 니모닉 구문 (BIP39)
- 12~24개 단어로 개인 키 표현
- 예: "witch collapse practice feed shame open despair creek road again ice least"
2. 종이 지갑
- QR 코드로 개인 키 인쇄
- 물리적으로 안전한 곳에 보관
3. 하드웨어 지갑
- Ledger, Trezor 등
- 개인 키가 디바이스 밖으로 나가지 않음
  • 개인 키를 잃어버리면 자산을 영원히 회수할 수 없다.
  • 폐기나 복구 메커니즘이 없어 백업이 더욱 중요하다.
  • ”Not your keys, not your coins” 원칙이 강조된다.

보안 고려사항

전방향 보안 (Forward Secrecy)

GPG의 한계

  • GPG는 전방향 보안을 제공하지 않는다.
  • 개인 키가 손상되면 과거에 암호화된 모든 메시지를 복호화할 수 있다.
시나리오:
2020년: Alice가 Bob에게 암호화된 메시지 전송
2021년: Alice가 Bob에게 암호화된 메시지 전송
2022년: 공격자가 Bob의 개인 키 탈취
결과:
→ 공격자는 2020년, 2021년 메시지를 모두 복호화할 수 있음
→ 과거 메시지의 기밀성 상실

현대적 해결책

  • Signal Protocol: 각 메시지마다 임시 키를 생성한다.
  • TLS 1.3: DHE(Diffie-Hellman Ephemeral) 키 교환을 사용한다.
  • 세션 키가 유출되어도 다른 세션에 영향을 주지 않는다.

블록체인

  • 블록체인은 암호화가 아닌 서명만 사용하므로 전방향 보안 개념이 적용되지 않는다.
  • 개인 키가 손상되면 그 시점부터 새로운 트랜잭션을 위조할 수 있다.
  • 하지만 과거 트랜잭션은 이미 블록체인에 기록되어 변조할 수 없다.
시나리오:
2020년: Alice가 1 BTC를 Bob에게 전송 (블록 A에 기록)
2021년: Alice가 2 BTC를 Carol에게 전송 (블록 B에 기록)
2022년: 공격자가 Alice의 개인 키 탈취
결과:
→ 공격자는 Alice의 현재 자산으로 새 트랜잭션 생성 가능
→ 하지만 블록 A, B는 변조 불가능 (작업증명으로 보호됨)
→ 과거 트랜잭션의 무결성은 유지됨

양자 내성

GPG와 블록체인 모두 취약

  • 현재 사용되는 RSA, ECDSA는 양자 컴퓨터에 취약하다.
  • Shor의 알고리즘으로 효율적인 소인수분해와 이산 로그 문제 해결이 가능하다.
양자 컴퓨터의 위협:
RSA (GPG):
- 큰 수의 소인수분해
- n = p × q에서 p, q 찾기
- Shor의 알고리즘: 다항 시간 해결
ECDSA (블록체인):
- 타원곡선 이산 로그 문제
- P = e × G에서 e 찾기
- Shor의 알고리즘: 다항 시간 해결

대응 방안

GPG:

  • NIST 양자 내성 알고리즘 표준화 진행 중이다.
  • Kyber(키 캡슐화), Dilithium(전자서명) 등이 후보이다.
  • 하위 호환성을 위한 하이브리드 암호화를 고려할 수 있다.

블록체인:

  • 일부 프로젝트는 양자 내성 서명으로 전환을 계획 중이다.
  • IOTA는 Winternitz 일회용 서명을 사용한다.
  • Ethereum은 양자 내성 연구를 진행 중이다.
양자 내성 전환 시나리오 (블록체인):
1. 소프트 포크로 양자 내성 서명 타입 추가
2. 기존 주소 자산을 양자 내성 주소로 이동 유도
3. 양자 컴퓨터 위협 임박 시 레거시 주소 동결

사용 사례 비교

이메일 암호화

GPG (ProtonMail, Tutanota)

Alice → Bob에게 암호화된 이메일 전송
1. Alice가 Bob의 공개 키 획득
2. 세션 키 k 생성
3. 이메일을 k로 AES 암호화
4. k를 Bob의 공개 키로 RSA 암호화
5. 암호화된 이메일과 암호화된 세션 키 전송
6. Bob이 자신의 개인 키로 k 복호화
7. k로 이메일 복호화
보장:
- 기밀성: Bob만 읽을 수 있음
- 무결성: 변조 시 검증 실패
- 인증: Alice의 서명으로 발신자 확인

블록체인은 이 사용 사례에 적합하지 않다. 데이터가 공개되기 때문이다.

자산 소유권 증명

블록체인 (비트코인, NFT)

Alice가 1 BTC 소유를 증명
1. Alice의 주소에 1 BTC UTXO 존재
2. Alice가 개인 키로 트랜잭션 서명 생성
3. 네트워크가 서명 검증
- Alice의 공개 키로 서명 검증
- UTXO 존재 확인
- 이중 지불 방지
4. 트랜잭션이 블록에 포함
5. 작업증명으로 블록 확정
보장:
- 소유권: Alice만 자산 이동 가능
- 투명성: 누구나 트랜잭션 조회 가능
- 무결성: 블록체인에 영구 기록
- 신뢰 불필요: 수학적 증명으로 검증

GPG는 이 사용 사례에 적합하지 않다. 이중 지불을 막을 수 없기 때문이다.

코드 서명

GPG와 블록체인 모두 활용 가능

GPG 방식 (Linux 패키지):

Terminal window
# 개발자: 패키지 서명
gpg --detach-sign --armor package-1.0.deb
# 사용자: 서명 검증
gpg --verify package-1.0.deb.asc package-1.0.deb

블록체인 방식 (스마트 컨트랙트):

// 개발자가 컨트랙트 배포 시 자동 서명
// 배포자 주소: 0x1234...
contract MyContract {
address public owner;
constructor() {
owner = msg.sender; // 배포자 주소 기록
}
}
// 누구나 배포자 확인 가능
MyContract.owner // → 0x1234...

차이점:

  • GPG: 오프라인 검증 가능, 파일 단위 서명이다.
  • 블록체인: 온체인 검증, 배포 기록이 영구 보존된다.

결론

GPG와 블록체인은 공개 키 암호화와 디지털 서명이라는 암호학적 기초를 공유하지만, 서로 다른 문제를 해결하기 위해 설계되었다.

GPG의 강점

  • 개인 간 통신의 기밀성 보장
  • 유연한 신뢰 모델 (Web of Trust)
  • 오프라인 동작 가능
  • 작은 데이터에 최적화

블록체인의 강점

  • 탈중앙화된 합의
  • 투명하고 검증 가능한 원장
  • 이중 지불 방지
  • 신뢰 기관 불필요

공통 한계

  • 양자 컴퓨터에 취약
  • 개인 키 관리의 중요성
  • 사용자 경험 개선 필요

두 기술은 상호 배타적이지 않으며, 각자의 강점을 살려 서로 다른 영역에서 활용된다. GPG는 이메일 암호화, 파일 서명, SSH 인증 등에 사용되고, 블록체인은 암호화폐, 스마트 컨트랙트, 분산 시스템에 사용된다. 암호학의 발전과 함께 두 기술 모두 양자 내성 알고리즘으로 전환하고 사용성을 개선하는 방향으로 진화하고 있다.


참고