DOI QR코드

DOI QR Code

Input Certification protocol for Secure Computation

  • Received : 2024.06.18
  • Accepted : 2024.07.29
  • Published : 2024.08.30

Abstract

This study was initiated with the aim of authenticating that inputs have not been tampered with without disclosing them in the case of computations where multiple inputs are entered by participants using the same key. In general, in the authentication stage, authentication is performed after the input value is disclosed, but we do not want to reveal the inputs until the end. This is a case of deviating from the traditional security model in which malicious participants exist in cryptography, but it is a malicious attack method that can actually occur enough. Privacy infringement or distortion of calculation results can occur due to malicious manipulation of input values. To prevent this, this study studied a method that can authenticate that the message is not a modified message without disclosing the message using the signature system, zero-knowledge proof, and commitment scheme. In particular, by modifying the ElGamal signature system and combining it with the commitment scheme and zero-knowledge proof, we designed and proved a verification protocol that the input data is not a modified data, and the efficiency was improved by applying batch verification between authentication.

본 연구는 계산에 참여하는 참가자가 다수의 입력값을 동일한 키를 사용하여 입력하는 계산의 경우 입력값을 공개하지 않으면서 입력값이 변형되지 않았다는 인증을 목적으로 시작하였다. 일반적으로 인증 단계에서는 입력값을 공개 후 인증을 실시하나 입력값을 끝까지 공개하지 않고자 하는 것이다. 이는 암호학에서 악의적인 참가자가 존재하는 전통적인 보안 모델을 벗어나는 경우이지만, 실제로 충분히 일어날 수 있는 악의적인 공격 방법이다. 악의적인 의도를 가진 입력값 조작으로 프라이버시 침해, 또는 계산 결과의 왜곡이 일어날 수 있다. 본 연구에서는 이를 방지하기 위해 서명 체계, 영지식증명, commitment scheme을 이용하여 메시지를 공개하지 않고 해당 메시지가 변조되지 않은 메시지임을 인증(input certification)하는 방법에 대해 연구하였다. 특히, ElGamal 서명 체계를 수정하여 commitment scheme과 영지식 증명과 결합하여 입력된 데이터가 변조되지 않은 데이터라는 인증이 가능한 프로토콜을 설계하여 증명하였고, 인증 간에 batch verification을 적용하여 효율성을 향상시켰다.

Keywords

I. Introduction

컴퓨팅 기술의 발전으로 클라우드 환경이 보편화되고 장비의 연산 속도가 빨라지면서 과거에 기술의 한계로 실용화되지 못했던 기술들이 최근 많이 실용화되고 있다. 그 중 하나가 안전한 다자간 계산으로, 이것은 여러 명의 참여자가 각자의 입력을 입력하여 이를 공개하지 않고 원하는 연산의 결과를 얻을 수 있게 하는 방법의 하나이다. 예를 들면, 안전한 다자간 계산을 이용하면 민감한 개인정보를 다루는 병원, 공공기관, 금융기관 등이 타 기관과 협업할 때, 자기 기관의 정보를 타 기관에 모두 공개하지 않으면서 원하는 계산 결과만 도출할 수 있게 할 수 있다. 자기 정보를 모두 공개하지 않는다는 프라이버시 보호를 달성하는 것뿐만 아니라 정확한 계산 결과를 도출하는 것도 중요한 목적 중 하나이다. 여러 기관의 민감한 정보를 다수가 참여하여 다루기 때문에 프라이버시 보호가 가능한 안전한 계산 방법에 관한 연구가 이루어져야 하고, 또한 참여자의 정보를 다른 참여자에게 모두 공개하지 않기 때문에 참여자들이 다른 참여자들의 입력이 조작되지 않은 진실한 입력이라는 확신을 가질 수 있어야 한다. 이것은 암호학적으로 악의적인 의도를 가진 참여자가 있는 전통적인 보안 모델을 벗어난 경우지만 심각한 보안 위협이 될 수 있다. 본 연구는 전통적인 ElGamal 서명 체계를 수정하여 영지식증명(Zero-Knowledge proof of Knowledge, ZKPK), Commitment scheme, batch verification을 적용하여 다량의 입력이 있는 경우 입력 데이터의 변조를 방지할 수 있는 효율성이 향상된 입력 인증 프로토콜에 대해 제안하고자 한다.

기존의 입력 인증에 관한 연구는 게임이론과 Garbled Circuit에 기반을 두고 주로 진행되었다. 2004년 Halper과 Teague[1], 2013년 Wallrabenstein와 Clifton[2]은 게임이론을 이용하여 합리적인 참여자가 입력값을 진실하게 입력하는 방법에 관해 연구하였고, 2016년 Blanton과 Bayatbabolghani[3]에 의해 Garbled Circuit(GC)에 기반을 둔 입력 인증에 관해 연구하였다. 그러나 GC는 대수적인 구조를 갖춘 서명 체계나 인증 기법과 결합하는 데 어려움이 있어서 대수적 구조를 바탕으로 한 일반적인 비밀 공유 기법을 기반으로 한 설정에서의 입력 인증 문제에 관한 연구가 필요하다. 2023년 Jeong[4]은 CL 서명 체계에 바탕을 둔 입력 인증 프로토콜에 관해 연구하였다. 이는 대수적 구조를 바탕으로 암호학적 기초 요소를 접목한 입력 인증 연구라고 할 수 있다. 본 연구에서는 일반적으로 사용되는 전통적인 ElGamal 서명 체계를 바탕으로 하여 입력을 인증하는 방법에 관해 연구한다. 구체적으로 2장에서 ElGamal 서명체계의 정의, commitment scheme, 영지식증명과 서명체계의 안전성을 증명할 수 있는 실험 등에 대해 정의하며 3장에서 ElGamal 서명 체계에 기반한 입력 인증 스킴과 배치 인증에 대해 제안하고 계산량을 비교한 뒤 마지막으로 결론을 맺는다.

II. Preliminaries

함수 𝜖 : ℕ→ ℝ≥0이 모든 양의 다항식 p(·)에 대해 x > N 일 때 \(\begin{align}\epsilon(x)<\frac{1}{p(x)}\end{align}\)을 만족하는 N이 존재하면 𝜖을 무시할 수 있는 함수(negligible function)라 하며 negl로 표기하자. 여기에서 x는 보안 매개변수(security parameter)이다.

1. ElGamal Signature Scheme

서명 체계는 메시지에 디지털 서명을 생성하고 검증하는 알고리즘으로 메시지의 유효성을 검사하고 보낸 메시지에 대한 부인방지 기능으로 제공한다. 전자서명은 공개 키 암호 기술을 이용하여 서명을 생성하고 검증할 수 있다. 일반적으로 서명 체계는 키를 생성하는 키 생성(Key generation), 서명을 생성하는 서명(Sign), 서명 검증(Verification) 이렇게 세 개의 알고리즘으로 구성된다.

Definition 1. (Signature Scheme)

KeyGen: 확률적 다항시간(probabilistic polynomial-time, PPT) 알고리즘. 공개키, 개인 키 쌍 (pk, sk)을 생성

Sign: 개인 키 sk, 메시지 m을 입력으로 하는 PPT 알고리즘. 서명 σ을 생성

Verify: 공개키 pk, 메시지 m, 서명 σ을 입력으로 하는 결정적 다항시간(deterministic polynomial–time) 알고리즘. 한 비트(0 또는 1)를 출력

Π = (KeyGen, Sign, Verify)을 서명 체계라 한다.

서명 체계의 안전성은 "PPT 공격자에 의한 선택된 메시지 공격(chosen message attack, CMA) 하에서 실존적 위조(existential forgery)가 어렵다는 것"으로 정의된다. 실존적 위조란 합법적인 서명자로부터 서명된 적 없는 적어도 하나의 메시지, 서명 쌍 (m, σ)을 생성하는 것을 말한다. 서명 체계의 안전성을 정의하기 위해 다음과 같은 실험을 이용한다.

Experiment ForgeSigA, Π(x) :

1. 도전자는 공개키, 비밀키 쌍 (pk, sk)←KeyGen(1x)을 생성하여 공개키 pk를 𝓐에게 보낸다.

2. 𝓐는 오라클 Signsk(·)에 접근할 수 있고 𝓐가 오라클에 질의하는 각 메시지 m은 리스트 𝓠에 저장되며 𝓐는 Signsk(·)로 생성된 서명 σ = Signsk(m)를 안다. 𝓐는 최종적으로 (m*, σ*)를 출력한다.

3. Verifypk(m*, σ*) = 1이고 m* ∉ 𝓠일 경우 실험의 출력은 1이며, 이 외에는 0이다.

위의 실험을 이용하여 서명 체계의 안전성을 다음과 같이 정의한다.

Definition 2. (Security of a signature scheme)

만약 모든 PPT adversary 𝓐에 대해

Pr[ForgeSig𝓐, Π(x) = 1] ≤ negl(x)

을 만족하는 무시할 수 있는 함수 negl이 존재하면 서명 체계 Π = (KeyGen, Sign, Verify)는 adaptive chosen message attack에 대해 실존적으로 위조 불가능하다고 한다.

ElGamal 서명 체계는 1985년 Taher ElGamal이 고안한 이산로그 문제에 기반한 서명 체계이다[5]. 본 연구에서 위조 가능성이 있는 원래의 서명 체계 대신 Pointcheval과 Stern[6][7]의 수정 서명 체계를 사용한다. 수정된 서명 체계에서는 소수 q를 사용하는 것보다 이산로그 문제의 어려움을 기반으로 할 때 좀 더 일반적인 ⍺-hard 소수 p를 정의한다. ⍺-hard 소수란 어떤 고정된 ⍺에 대해 R ≤ |p|와 p - 1 = qR을 만족하는 소수 q를 말한다. 이 서명 체계에서는 위조 불가능성이 증명된 랜덤 오라클 해시함수 H를 사용한다. ElGamal 서명 체계의 KeyGen, Sign, Verify 알고리즘은 다음과 같다.

KeyGen: 입력: 보안 매개변수 1x, ⍺-hard 소수 p와 ℤ*p의 제너레이터 g를 선택. 랜덤넘버 x∈ℤp-1을 선택한 후 y = gx mod p 계산. 출력: 비밀키 sk = x, 공개키 pk = (p, g, y)

Sign: 입력: 메시지 m, sk = x, pk = (p, g, y). 랜덤넘버 k∈ℤ*p-1을 선택한 후 t = gk mod p와 s ≡ (H(m||t) - -xt)k-1 mod p-1계산. 출력: 서명 σ = (t, s)

Verify: 입력: m, pk = (p, g, y), σ = (t, s). 1 < t < p와 gH(m, t) ≡ ytts mod p인지 확인. 출력: 만약 둘 다 만족하면 1을, 그렇지 않으면 0을 출력

2. Commitment scheme

commitment scheme은 메시지 m을 공개하지 않고 메시지에 커밋을 하여 commitment를 생성하여 메시지 대신 생성된 commitment를 계산에 이용한다. 한 번 커밋이 이루어지면 committer는 처음 사용한 메시지 m을 임의로 바꿀 수 없다. 즉, m에 대한 commitment가 주어지면 메시지 m은 비공개로 유지되며, m 이외의 값으로는 그것을 열 수 없다. commitment scheme의 이러한 속성을 숨기기(hiding)와 묶기(binding)라고 한다. commitment scheme은 메시지 m에 대한 커밋이 이루어지는 Commit 알고리즘과 commitment가 메시지 m에 대한 것인지 확인하는 Open 알고리즘으로 구성된다. Commit 알고리즘에서 커밋이 이루어질 때 랜덤 넘버 r을 이용하기 때문에 com(m, r)로 표기한다. 본 논문에서는 잘 알려진 이산로그에 기반한 Pedersen commitment scheme[8]을 사용한다. Pedersen commitment는 소수 order q를 갖는 그룹 G와 그룹 G의 두 개의 제너레이터 g, h에 메시지 m∈ℤq과 랜덤 넘버 r∈ℤq을 이용하여com(m, r) = gmhr로 정의된다. Open 알고리즘에서는 r과 m을 밝혀야 한다. Pedersen commitment scheme은 이산로그 문제의 어려움에 기반하여 information theoretically hiding과 computationally binding이 성립한다.

3. Zero Knowledge Proof of Knowledge

영지식증명은 prover와 verifier 간의 양자 간 상호작용 프로토콜로 prover가 공개하고 싶지 않은 정보를 공개하지 않으면서 verifier에게 자신의 진술(statement)이 진실하다는 것을 증명할 수 있다. 공개하고 싶지 않은 변수(variables)와 진술을 사용한 ZKPK는 다음과 같이 표기한다: PK{(variables): statement}. 변수는 공개하지 않고 prover만 알고 있는 정보이고, 진술은 prover와 verifier 모두가 알고 있다. 이 프로토콜이 성공한다면 prover는 verifier에게 변수가 무엇인지 공개하지 않으면서 자신이 해당 변수를 알고 있다는 사실을 증명하는 데 성공한 것이다. 본 연구에서는 이산로그에 기반한 영지식증명의 테크닉을 이용한다[9].

4. Batch Verification

여러 개의 서명을 동시에 인증해야 할 때 Batch Verification[10]을 사용하여 한 번에 인증함으로써 효율성을 높일 수 있다. 본 논문에서는 여러 개의 기관이 계산에 참여할 때 자신의 메시지들은 모두 하나의 키를 사용하여 서명한 경우에 대해 다루었다.

Definition 3. (Batch verification of signatures[11])

보안 매개변수 x에 대한 서명 체계 Π = (KeyGen, Sign, Verify)을 이용하여 n명의 참여자 P1, P2, ⋯, Pn이 KeyGen(1x) 알고리즘을 통해 만든 키 쌍들을(pk1, sk1), ⋯, (pkn, skn)라하고, 공개키들을 PK = {pk1, ⋯, pkn}라 하자. (pki, mi, σi)들을 입력으로 하는 PPT 알고리즘 Batch는 출력으로 한 비트를 출력하며, 다음 성질을 만족하면 batch verification이다.

- 모든 i∈[1, n]에 대해 pki∈PK이고 Verify(pki, mi, σi) = 1이면 Batch(pk1, m1, σ1), ⋯, (pkn, mn, σn)) = 1이다.

- 모든 i∈[1, n]에 대해 pki∈PK이고 적어도 하나의 i∈[1, n]에 대해 Verify(pki, mi, σi) = 0이면서 Batch((pk1, m1, σ1), ⋯, (pkn, mn, σn)) = 1일 최대 확률은 2-x이다.

유효하지 않은 하나의 서명이 포함된 여러 개의 서명들을 인증할 때 Batch verification을 사용하면 verifier는 적어도 1 - 2-x의 확률로 이를 발견할 수 있으며, 이것은 서명들을 각각 인증하는 것보다 속도가 빠르다.

5. Signature scheme with privacy

일반적으로 서명을 검증할 때는 원본 메시지 m과 서명에 사용한 랜덤넘버 r을 공개한다. 본 연구에서는 서명 체계의 인증 단계에서 서명 생성에 사용된 원본 메시지를 공개하지 않고 서명을 인증하는 방법에 관해 연구한다. 이러한 서명 체계를 signature scheme with privacy라고 부르고, 원본 메시지를 공개하지 않는 인증을 전통적인 인증 방법과 구분하기 위해 private verification이라 부른다. 이 서명 체계는 서명 자체만 가지고는 원본 메시지에 대한 정보를 알 수 없다는 특징을 갖는다. signature scheme with privacy를 다음과 같이 정의한다.

Definition 4. (Signature Scheme with privacy)

Signature scheme with privacy는 다음과 같은 3개의 PPT 알고리즘으로 구성된다.

KeyGen: 보안 매개변수 1x인 PPT 알고리즘. 공개키, 개인 키 쌍 (pk, sk)을 생성

Sign: 입력이 sk, 메시지 m인 PPT 알고리즘. 서명 σ과 추가로 xσ를 생성할 수 있음

PrivVerify: Prover와 Verifier 간의 대화형(interactive) 알고리즘. Prover: 메시지 m과 (σ, xσ)를 알고 있으며, xm과 서명 \(\begin{align}\tilde{\sigma}\end{align}\)(수정될 수 있음)을 verifier에게 보냄. Verifier: 한 비트(0 또는 1)를 출력

Sign 알고리즘에서 추가로 생성할 수 있는 xσ는 인증 단계에서 사용하는 xm을 계산하는 데 랜덤넘버로 쓰일 수 있으며, Sign 알고리즘에서 xσ이 생성되지 않는 경우 서명 σ과 메시지 m에 접근이 가능한 누구라도 xm을 계산할 수 있다.

위조 불가능성(unforgeability)을 달성하기 위해서는 PrivVerify 단계에서 Verify와 마찬가지로 서명 \(\begin{align}\tilde{\sigma}\end{align}\)를 검증하고 Prover가 서명 \(\begin{align}\tilde{\sigma}\end{align}\)를 생성하는 데 사용한 메시지 m과 xm을 생성하는 데 사용한 메시지가 같은지 확인하여야 한다. 본 연구에서 xm은 랜덤넘버 r을 이용한 m에 대한 commitment 형태 com(m, r)이기 때문에 새로운 security definition에 commitment를 적용한다.

위조 불가능성을 정의하기 위한 signature scheme with privacy에 관한 실험은 앞서 서명 체계의 안전성을 정의하기 위해 사용한 ForgeSig와 유사하나 두 가지 측면에서 다르다. 첫째, 챌린지 페어(\(\begin{align}\tilde{\sigma}^*\end{align}\), xm*)를 선택한 뒤 공격자 𝓐는 xm*가 이전에 쿼리된 적 없는 서명의 메시지로 생성된 것인지 영지식증명으로 증명해야 한다. 둘째, 서명 위조 실험은 Verify 알고리즘 대신 수정된 인증 알고리즘인 PrivVerify를 호출한다. 서명이 commitment xm* = com(m*, r)에 대한 것인지 검증하여야 하고, prover는 commitment 생성에 사용된 m*의 정보를 알고 있는지도 증명해야 한다.

Experiment ForgePrivSigA, Π(x) :

1. 도전자는 공개키, 비밀키 쌍(pk, sk)← KeyGen(1x)을 생성하여 공개키 pk를 𝓐에게 보낸다.

2. 𝓐는 오라클 Signsk(·)에 접근할 수 있고 𝓐가 오라클에 질의하는 각 메시지 m은 리스트 𝓠에 저장되며 𝓐는 (σ, xσ) = signsk(m)를 안다.

3. 도전자와 𝓐는 PrivVerify 알고리즘을 진행하고, 이 과정에서 𝓐는 challenge pair (xm*, \(\begin{align}\tilde{\sigma}^*\end{align}\))를 공개한다. 𝓐는 영지식증명으로 commitment xm* = com(m*, r)의 opening(m*, r)을 알고 있음을 증명한다.(m* ∉ 𝓠)

4. PrivVerify의 결과가 1이고 모든 다른 증명이 성공하면 출력은 1이며, 이 외에는 0이다.

Private verification을 정의하기 위해서 다음과 같이 signature scheme with privacy Π = (KeyGen, Sign, PrivVerify)를 위한 message indistinguishability 실험을 정의한다.

Experiment MesIndA, Π(x) :

1. 도전자는 공개키, 비밀키 쌍(pk, sk)←KeyGen(1x)을 생성하여 공개키 pk를 𝓐에게 보낸다.

2. 𝓐는 오라클 Signsk(·)에 접근할 수 있고, 자신이 선택한 메시지에 대한 알고리즘의 출력을 안다. 𝓐는 (m0, m1) 쌍을 출력한다.

3. 도전자는 랜덤 비트 b∈{0, 1}를 뽑고, 𝓐의 요청에 따라 (σb, xσb)←Signsk(mb) 알고리즘을 실행한다. 도전자는 xmb를 계산하고 (\(\begin{align}\tilde{\sigma}_{b}\end{align}\), xmb)를 리턴한다(\(\begin{align}\tilde{\sigma}_{b}\end{align}\)는 σb로 부터 생성). 만약 xmb 또는 \(\begin{align}\tilde{\sigma}_{b}\end{align}\)가 확률적(probabilistic)이라면 같은 서명에 대해 𝓐는 여러 개의 (\(\begin{align}\tilde{\sigma}^{(i)}_{b}\end{align}\), x(j)mb)를 요청할 수 있다(i, j∈ℕ). 이러한 서명 검증 요청은 원하는 만큼 반복할 수 있다.

4. 𝓐는 결과로 한 비트 b′을 출력한다. 만약 b = b′이면 실험의 출력은 1이고, 이 외의 경우 0이다.

Definition 5. (Private Verification)

만약 모든 PPT 공격자 𝓐에 대해

\(\begin{align}\operatorname{Pr}\left[\operatorname{MesInd}_{A, \Pi}(x)=1\right] \leq \frac{1}{2}+\operatorname{negl}(x)\end{align}\)

을 만족하는 무시할 수 있는 함수 negl이 존재하면 서명 체계 Π = (KeyGen, Sign, PrivVerify)는 비공개 검증(private verification)을 달성했다고 한다.

기존의 영지식증명을 사용하여 privacy-preserving 서명 체계에 관한 연구[12][13]에서 사용한 정의는 서명된 메시지에 대한 정보가 드러나지 않고, 두 개의 서명에 대한 지식을 증명하는 프로세스를 연결할 수 없게(unlinkability) 하는 데 중점을 두었다. 위의 Private verification 정의는 같은(혹은 다른) 서명 체계가 서로 다른 시간에 검증된다는 사실을 숨기려 하지 않고, 궁극적으로 완전하게 보호하려고 하는 것은 서명된 메시지 그 자체라는 점에서 이전의 연구들과 차이가 있다. 본 연구에서 고려하고 경우는 사용자가 여러 계산에 자신의 데이터를 사용할 수 있고 동일한 데이터를 여러 번 사용했다는 사실을 숨길 필요가 없으므로 서명들의 unlinkability는 일반적으로 고려하지 않아도 된다. 따라서 서명된 값 자체만 보호하면 되고, 이것은 보안 수준을 유지하면서 서명 검증 프로세스를 더 빨리 진행할 수 있게 한다.

III. The Proposed Scheme

안전한 계산을 위해 ElGamal 서명 체계를 바탕으로 commitment scheme과 결합한 구조를 제안하고자 한다. Pointcheval[6]이 제안한 adaptably chosen message 공격에 안전한 수정된 ElGamal 서명 체계를 사용하여 서명 검증 단계에서 메시지를 오픈하지 않고도 검증할 수 있도록 수정한다. 그리고 여러 개의 서명을 검증할 때 효율성을 향상시키기 위해 batch verification 방법 중 모든 서명이 유효할 때만 검증에 성공하는 small exponents 방법을 사용하는 알고리즘을 제안한다.

1. Construction based on ElGamal Signature

서명 검증 단계에서 메시지를 공개하지 않고 검증이 가능한 구조로 ElGamal 서명 체계를 수정하기 위해서 원본 메시지가 아닌 메시지 m의 commitment를 사용한다. 본 연구에서는 ElGamal 서명 체계를 그룹 ℤ*p가 아닌 소수 q를 order로 갖는 ℤ*p의 subgroup에서 정의한다. 이것을 통해 기존의 ℤ*p에서의 ElGamal 서명 체계와 같은 수준의 안전성을 보장받으면서 서명 체계를 좀 더 단순화할 수 있고 다른 primitives를 적용할 수 있게 한다. 예를 들면, batch verification에서 사용할 small exponent 방법의 경우 소수가 아닌 order를 가진 그룹에서는 사용할 수 없는데[10], ℤ*q에서의 ElGamal을 사용하면 small exponents 방법을 사용할 수 있다. 메시지 공개 없이 검증할 수 있게 검증알고리즘을 PrivVerify로 수정한 ElGamal 서명 체계 Π = (KeyGen, Sign, PrivVerify)를 다음과 같이 정의한다.

KeyGen: 입력: 보안 매개변수 1x, 큰 소수 q를 order로 갖는 그룹 G와 제너레이터 g를 선택. 랜덤넘버 x, u∈ℤq을 선택하여 y = gx, h = gu mod q를 계산. 출력: sk = x, pk = (q, G, g, y, h)

Sign: 입력: m, sk = x, pk = (q, G, g, y, h). 랜덤넘버 k, r∈ℤq을 선택하여 t = gk, xm = com(m, r) = gmhr, s ≡ (H(xm||t) - xt)k-1 (mod q) 계산. 출력: σ = (t, s), xσ = r. (수신자는 com(m, xσ)을 계산하여 서명 검증)

PrivVerify: prover는 m, xσ, 그리고 xm = gmhxσ에 대한 서명 σ = (t, s)을 알고 verifier에게 σ와 xm을 보냄. prover와 verifier 사이에 영지식증명 실행: PK{(μ, γ): xm = gμhγ}. 출력 : ZKPK를 통과하고 gH(xm||t) = ytts이 성립하면 1, 그렇지 않으면 0

수정된 ElGamal 서명 체계에서는 서명자가 g와 h를 선택하므로 메시지 m이 아닌 m에 대한 commitment인 com(m, r)을 공개할 수 있다. 만약 이렇게 하는 것이 보안상 취약하다면 h는 독립적인 기관 또는 서명자가 g에 대한 h의 이산로그를 알 수 없도록 다른 참여자가 선택해야 한다.

이 서명 체계가 unforgeable 하다는 사실은 Ⅱ장에서 기술한 ForgePrivSig 실험과 Definition 2를 이용하여 증명할 수 있다. 직관적으로 설명하면, prover는 commitment에 대한 서명을 가지고 commitment의 opening인 메시지 m을 알고 있다는 증명을 해야 하고, prime order 그룹을 이용하여 [6]의 증명을 단순화할 수 있다.

Theorem 1. 수정된 ElGamal 서명 체계는 랜덤 오라클 모델에서 adoptive chosen-message attack에 대해 실존적으로 위조할 수 없다(existentially unforgeable).

Proof Pointcheval 등[6][7]은 ⍺-hard 소수를 모듈리로 사용하는 랜덤 오라클 모델에서 ElGamal 서명 체계가 안전함을 증명하였다. 소수 order를 사용하는 그룹에서 수정된 ElGamal 서명 체계도 마찬가지로 이 가정을 만족한다.

앞선 연구 [7]의 증명은 두 단계로 나눌 수 있는데, 우선 no-message 공격에 대한 안전성을 보이고, 다음으로 forking lemma를 이용하여 서명자가 구분할 수 없는 분포로 시뮬레이션할 수 있음을 보임으로서 adoptively chosen-message 공격에 대한 안전성을 보였다. 첫 번째 단계의 증명을 살펴보면, 두 가지 경우로 나눌 수 있다. 서명 σ = (t, s)의 t가 modulo p - 1로 p와 서로소일 때와 그렇지 않을 때이다. 우리의 경우 계산이 modulo q로 이루어지기 때문에 두 번째 경우가 존재하지 않아서 첫 번째 경우만 고려하면 된다. 연구 [7]에서의 두 번째 단계의 증명도 우리의 경우 modulo qR = p - 1이 아닌 지수에서 modulo q를 사용하기 때문에 단순화할 수 있다. 따라서 소수 order를 갖는 그룹 세팅을 이용하면 안전성을 더 쉽게 보일 수 있다.

PrivVerify를 위해 메시지 m이 아닌 메시지 m에 대한 commitment xm을 사용하여 서명 검증을 하므로 위의 증명에서 m을 대신하여 xm을 사용한다. 또한, H가 랜덤 오라클로 모델링되기 때문에 출력으로 설정할 수 있는 값에 융통성이 있다. 검증 단계에서는 prover가 xm을 생성하는 데 사용한 m을 알고 있어야만 할 수 있는 xm의 이산로그 표현의 proof of knowledge를 해야 한다. 이것은 security definition에서 요구하는 바와 같이 𝓐가 위조 과정에서 출력인 m*과는 다른 signing 오라클에 쿼리했던 xm을 생성하는데 사용된 모든 메시지 m에 대해 영지식증명을 할 수 있음을 의미한다.

다음으로 definition5를 이용하여 수정된 ElGamal 서명의 privacy 성질에 대해 논한다.

Theorem 2. 수정된 ElGamal 서명 체계는 signature scheme with privacy이다.

Proof 𝓐가 signing 오라클에 접근이 가능한 수정된 ElGamal 서명 체계를 공격하는 PPT 공격자라 하자. 𝓐가 챌린지로 (m0, m1)을 쿼리하고 임의의 랜덤넘버 r을 이용한 commitment xmb = com(mb, r)과 이에 대한 ElGamal 서명 σb 쌍인 (σb, xmb)를 받았다고 하자. 이 서명 체계에서 공격자 𝓐가 관측할 수 있는 서명 σb와 commitment xmb는 𝓐가 여러 번 PrivVerify 알고리즘을 수행하더라도 변하지 않는 값이다. 따라서 PrivVerify 알고리즘을 수행하는 동안에 같은 σb와 xmb를 사용하고 ZKPK 과정만 다르다. 기본 구성 요소의 속성에 따라, ZKPK를 통해서는 정보를 얻을 수 없으며, commitment scheme은 정보 이론적(information-theoretically)으로 hiding을 달성한다는 것을 알고 있는데, 이것은 이산로그 문제의 난이도를 가정할 때 𝓐가 mb이 무엇인지 결정하는 데 사용할 만한 어떠한 정보도 non-negligible한 확률로 가질 수 없다는 것을 의미한다. 다시 말해, 우리가 챌린지에서 mb를 랜덤하게 선택한 메시지로 대체하면(𝓐는 랜덤하게 추측하는 것 외에 다른 전략이 없다) PirvVerify 알고리즘은 실제 랜덤 챌린지와 구분할 수 없다.

𝓐가 signing 오라클에 접근 가능하다고 하였기 때문에 자신의 챌린지 m0과 m1에 대한 서명을 챌린지가 시작되기 전에 얻을 수 있다. 이렇게 사전에 생성하여 얻은 m0, m1에 대한 서명은 𝓐가 관찰할 수 있는 것이 mb에 대한 commitment뿐이고 이것은 정보 이론적으로 hiding을 달성하고 다른 메시지에 대해 매번 다른 랜덤넘버를 사용하기 때문에 𝓐가 챌린지에 대한 답을 도출하는 데 도움이 되지 않는다.

PrivVerify 알고리즘에 포함된 ZKPK는 다음과 같은 과정을 거친다. Prover는 랜덤하게 v1, v2∈ℤ를 선택하여 T = gv1hv2를 계산하여 Verifier에게 전송한다. Verifier는 challenge e를 선택하여 Prover에게 전송하고, 그러면 Prover는 r1 = v1 + em mod q, r2 = v2 + er mod q를 계산하여 Verifier에게 보낸다. 만약 gr1hr2 = xemT가 성립하면 Verifier는 ZKPK를 받아들이고, Prover는 ZKPK에 성공한 것이다. 여기서 ZKPK를 위해 5번의 modulo exponentiation, 서명 검증을 위해 3번의 mod exp가 사용되어 총 8번의 mod exp가 필요하다.(만약 commitment xm을 저장하지 않고 매번 계산한다면 또다른 1번의 보통 mod exp와 1번의 짧은 mod exp가 필요하다.)

2. Batch Verification of Modified ElGamal Signature

본 장에서는 수정된 ElGamal 서명 체계를 이용하여 생성된 n개의 서명 검증을 위한 batch verification에 대해 알아본다. 본 연구에서는 같은 서명자에 의해 생성된 n개의 서명 검증을 목표로 하므로 같은 키를 사용하여 생성된 n개의 서명에 대한 Batch Verification 방법에 대해 알아 본다. Batch verification 방법 중 small exponent test[10]를 사용하였으며, 여기에서 verifier는 보안 매개변수 lb를 선택한다. 보안 매개변수는 만약 유효하지 않은 서명이 포함된 여러 개의 서명이 batch verification을 성공적으로 통과했을 때 유효하지 않은 서명이 포함될 확률이 최대 2-lb임을 뜻하며, lb = 60 또는 80으로 설정한다. 수정된 ElGamal 서명 체계의 batch verification을 시행하는 Batch 알고리즘은 다음과 같이 정의한다.

Batch: prover는 n개의 메시지 mi∈ℤq(i = 1, ⋯, n)에 대해 랜덤넘버 xσi∈ℤq를 사용하여 생성한 commitment xmi = com(mi, xσi) = gmihxσi와 이에 대한 서명 σi = (ti, si)를 알고 있으며 prover와 verifier는 모두 공개키 pk = (q, G, g, y, h)를 알고 있다.

1. prover는 서명 σi와 commitment xmi를 verifier에게 보낸다.

2. prover와 verifier는 다음 영지식증명 PK{(μ1, ⋯, μn, γ1, ⋯, γn): xm1 = gμ1hγ1 ∧ ⋯ ∧ xmn = gμnhμn}을 시행한다. 만약 영지식증명에 실패한다면 verifier는 0을 출력하고 프로토콜을 중지한다.

3. verifier는 랜덤넘버 δ1, ⋯, δn ∈ {0, 1}lb를 선택하고 \(\begin{align}u_{1}=\sum_{i=1}^{n} H\left(x_{m_{i}} \| t_{i}\right) \delta_{i}\end{align}\)\(\begin{align}u_{2}=\sum_{i=1}^{n} t_{i} \delta_{i}\end{align}\)을 계산하여 \(\begin{align}g^{u_{1}}=y^{u_{2}} \prod_{i=1}^{n} t^{s_{i} \delta_{i}}\end{align}\)가 성립하는지 확인한다. 만약 성공한다면 verifier는 1을 출력하고 그렇지 않을 경우 0을 출력한다.

Theorem 3. Batch 알고리즘은 수정된 ElGamal 서명 체계의 batch 검증알고리즘이다.

Proof 먼저 PrivVerify(pk, m1, σ1) = ⋯ = PrivVeri fy(pk, mn, σn) = 1이면 Batch(pk, (m1, σ1), ⋯, (mn, σn)) = 1을 의미함을 보이기 위해 n개의 서명이 각각 검증되었다고 가정하자. 즉, 모든 i = 1, ⋯, n에 대해 gH(xmi||ti) = ytitsii이다. 그러면

\(\begin{align}\begin{aligned} g^{u_{i}} & =g^{\sum_{i=1}^{n} H\left(x_{m_{i}}^{\|} t_{i}\right) \delta_{i}}=\prod_{i=1}^{n}\left(g^{H\left(x_{m_{i}} \| t_{i}\right)}\right)^{\delta_{i}} \\ & =\prod_{i=1}^{n}\left(y^{t_{i}} t_{i}^{s_{i}}\right)^{\delta_{i}}=\prod_{i=1}^{n} y^{t_{i} \delta_{i}} \prod_{i=1}^{n} t_{i}^{s_{i} \delta_{i}} \\ & =y^{\sum_{i=1}^{n} t_{i} \delta_{i}} \prod_{i=1}^{n} t_{i}^{s_{i} \delta_{i}}=y^{u_{2}} \prod_{i=1}^{n} t^{s_{i} \delta_{i}}\end{aligned}\end{align}\)

원하는 결과를 도출하였다. 반대 방향의 증명을 위해 Batch 알고리즘의 검증이 통과했다고 가정하자. 그러면 ki∈ℤq에 대해 ti = gki로 계산할 수 있다. 따라서

\(\begin{align}\begin{aligned} g^{\sum_{i=1}^{n} H\left(x_{m} \| t_{i}\right) \delta_{i}} & =y^{\sum_{i=1}^{n} t_{i} \delta_{i}} \prod_{i=1}^{n} t_{i}^{s_{i} \delta_{i}}=g^{\sum_{i=1}^{n} x_{i} t_{i} \delta_{i}} \prod_{i=1}^{n} g^{k_{i} s_{i} \delta_{i}} \\ & =g^{\sum_{i=1}^{n} x_{i} t_{i} \delta_{i}+\sum_{i=1}^{n} k_{i} s_{i} \delta_{i}}\end{aligned}\end{align}\)

가 되어

\(\begin{align}\sum_{i=1}^{n} H\left(x_{m_{i}} \| t_{i}\right) \delta_{i}-\sum_{i=1}^{n} x_{i} t_{i} \delta_{i}-\sum_{i=1}^{n} k_{i} s_{i} \delta_{i} \equiv 0(\bmod q)\end{align}\)

임을 알 수 있다. βi = H(xmi||ti) - xiti - kisi라 하자. 그러면 위의 식은 \(\begin{align}\sum_{i=1}^{n} \delta_{i} \beta_{i} \equiv 0(\bmod q)\end{align}\) (mod q)라 쓸 수 있다. 이제 Batch 알고리즘 과정 중 PrivVerify에 입력되는 (pk, mi, σi)에 대해 적어도 하나의 입력에서 0을 반환받았는데 Batch 알고리즘의 출력은 1이라 가정하자. PrivVerify에서 0을 반환받은 입력을 i = 1라 하자. 이것은 gH(xm1||t1) ≠ yt1ts11을 의미하고, 따라서 β1 = H(xm1||t1) - x1t1 - k1s1 ≠ 0이다. G는 소수 order q를 갖는 순환군이기 때문에 β1은 역수 ⍺1을 가지며 β11 ≡ 1 (mod q)이다. 따라서 위의 식을 다시 쓰면, \(\begin{align}\delta_{1} \beta +\sum_{i=2}^{n} \delta_{i} \beta_{i} \equiv 0(\bmod q)\end{align}\) (mod q)로 쓸 수 있으며, β1 대신 ⍺-11을 사용하면 \(\begin{align}\delta_{1} \alpha_{1}^{-1} +\sum_{i=2}^{n} \delta_{i} \beta_{i} \equiv 0(\bmod q)\end{align}\) (mod q)이 된다. 이것을 통해 \(\begin{align}\delta_{1} \equiv -\alpha_{1}\sum_{i=2}^{n} \delta_{i} \beta_{i} (\bmod q)\end{align}\) (mod q)임을 알 수 있다.

E를 PrivVerify(pk, m1, σ1) = 0이지만 Batch(pk, m1, σ1), ⋯, (mn, σn)) = 1인 사건, 벡터 ∆ = (δ2, ⋯, δn)라하고 |∆|를 ∆가 가질 수 있는 값의 개수라 하자. ∆이 고정되어 있다면 위의 식에 의해 오직 하나의 δ1이 존재함을 알 수 있으며, 그것이 사건 E가 일어나는 경우이다. 즉, ∆가 고정되어 있을 때 랜덤하게 선택된 δ1에 대해 사건 E가 일어날 확률은 Pr[E|∆′] = 2-lb이다. 따라서 랜덤하게 선택한 δ1에 대해 사건 E가 일어날 확률은 모든 가능한 ∆의 경우를 모두 더하는 것에 바운드된다. 다시 말하면, \(\begin{align}\operatorname{Pr}[E] \leq \sum_{i=1}^{|\Delta|}(\operatorname{Pr}[E \mid \Delta] \cdot \operatorname{Pr}|\Delta|)\end{align}\)이다. 따라서

\(\begin{align}\begin{aligned} \operatorname{Pr}[E] \leq \sum_{i=1}^{2_{b}(n-1)}\left(2^{-l_{b}} \cdot 2^{-l_{b}(n-1)}\right) & =\sum_{i=1}^{2^{l_{b}(n-1)}}\left(2^{-l_{b} n}\right) \\ & =2^{-l_{b}}\end{aligned}\end{align}\)

이다. 그러므로 유효하지 않은 서명이 포함된 여러 개의 서명이 batch verification을 성공적으로 통과하려면 유효하지 않은 서명이 포함될 최대 확률은 2-lb 이하여야 한다.

3. Comparison of computation cost of protocol

계산에 입력하는 입력의 인증 프로토콜의 비용 분석을 위해서는 서명을 인증하는데 소요되는 계산량의 정확한 분석이 필요하다. 앞서 살펴본 수정된 ElGamal 서명 체계와 batch verification에 필요한 계산량을 분석하면 다음과 같다.

수정된 ElGamal 서명 체계를 이용하여 한 개의 서명을 인증하려면 ZKPK에 5번의 mod exp와 gH(xm||t) = ytts확인에 3번의 mod exp 연산이 필요하다. 따라서 수정된 ElGamal 서명체계의 PrifVerify에는 총 8번의 mod exp 연산이 필요하다.

Batch 알고리즘의 영지식증명은 ElGamal 서명의 PrivVerify의 영지식증명을 n번 수행하는 것이다. 따라서 n개의 메시지에 대한 batch verification은 영지식증명에 5n번의 mod exp와 서명 검증에 n + 2번의 mod exp가 필요하여 총 6n + 2번의 mod exp가 필요하다. 만약 commitment를 저장하지 않고 다시 계산한다면 n번의 보통 mod exp와 또 다른 n번의 짧은 mod exp가 필요하다.

본 연구에서 고려하는 상황은 서명자가 여러 개의 메시지에 서명하여 계산에 사용하는 것이기 때문에 각 메시지 마다 별도의 commitment를 생성하는 것이 아닌, 여러 개의 메시지를 이용하여 한 개의 commitment를 생성하는 방법을 사용할 수 있다. 수정된 ElGamal 서명 체계를 사용하는 경우 이 방법은 여러 개의 메시지에 단 하나의 서명만을 생성하는 것이기 때문에 검증의 효율성을 획기적으로 향상시킬 수 있다. 즉, 서명자는 모든 메시지에 대한 하나의 commitment xm = com(m1, ⋯, mn, r)를 계산하고, 이에 대해 서명 하나를 생성하여서 검증하면 된다. 이것은 Batch 알고리즘의 1단계에서 1개의 서명과 commitment만 생성하기 때문에 communication 횟수를 획기적으로 줄일 수 있고, 2단계에서는 xm 하나에 대한 영지식증명만 하면 되고, 3단계에서는 σi들의 사용 없이 하나의 서명 검증만 하면 되기 때문에 계산량이 확연히 줄어든다. 이것을 통해 2단계에서는 필요한 계산이 2n + 3 mod exp로 감소하고 Batch의 전체 계산은 2n + 6 mod exp로 감소하여 성능 향상에 큰 영향을 미친다(만약 commitment를 저장하지 않는 경우 1번의 보통 mod exp와 n번의 짧은 mod exp 계산이 추가로 필요하다).

본 연구에서 제안한 수정된 ElGamal 서명 체계를 이용하고 commitment가 사전 계산되어 저장되어 있을 때 싱글 메시지에 서명할 경우, n개의 메시지에 n개의 commitment를 생성하여 batch verification을 사용할 경우, n개의 메시지에 하나의 commitment를 생성할 경우의 인증에 필요한 계산량은 다음 표와 같다.

Table 1. Performance of private verification for a single signature and a batch of size n.

CPTSCQ_2024_v29n8_103_9_t0001.png 이미지

인증 단계에서 각 메시지별로 commitment를 생성하는 방식에 비해 여러 메시지를 이용하여 하나의 commitment를 생성하는 것이 연산량을 감소시키는 데 큰 영향을 미친다는 것을 알 수 있다.

IV. Conclusions

본 연구에서는 여러 명의 참여자가 참여하는 계산의 안전성을 위협하는 상황 중 전통적인 보안 모델을 벗어나는 경우인 악의적인 입력 조작을 방지하기 위한 입력 인증의 한 방법으로 수정된 ElGamal 서명 체계를 사용하여 batch verification을 사용하는 방법에 대해 알아보았다. 수정된 ElGamal 서명 체계와 commitment scheme을 사용하여 입력 인증을 강제할 수 있고, batch verification과 단일 commitment 생성 방법을 이용하여 인증에 필요한 계산량을 획기적으로 낮출 수 있음을 확인하였다. 이 방법을 통해 같은 키를 사용하여 대량의 메시지를 입력하는 사용자의 경우에도 입력 검증을 효율적으로 실시할 수 있다. 차후 연구에서는 계산 간에 전수조사로 인해 안전성 확보가 어려운 작은 메시지 공간에서 입력 인증이 필요할 때 안전성을 유지하면서 인증의 효율성을 향상시킬 수 있는 입력 인증 방법에 관해 연구를 확장하여 실생활에 접목하는 것을 목표로 한다.

ACKNOWLEDGEMENT

This research was supported by Basic Science Research Program through the National Research Foundation of Korea(NRF) funded by the Ministry of Education(2020R1G1A1A01100862).

References

  1. J. Halpern, V. Teague, "Rational secret sharing and multiparty computation," in Proceedings of the thirty-sixth annual ACM symposium on Theory of computing, 2004., https://doi.org/10.1145/1007352.1007447 
  2. J. Wallrabenstein, C. Clifton, "Equilibrium concepts for rational multiparty computation," in Decision and Game Theory for Security: 4th International Conference, TX, 2013., https://doi.org/10.1007/978-3-319-02786-9_14 
  3. M. Blanton, F. Bayatbabolghani, "Efficient server-aided secure two-party function evaluation with applications to genomic computation," in Proceedings on Privacy Enhancing Technologies, 2016., https://doi.org/10.1515/popets-2016-0033 
  4. M. Jeong, "Efficient and Secure Signature Scheme applicable to Secure multi-party Computation," in Journal of The Korea Society of Computer and Information, 2023., https://doi.org/10.9708/jksci.2023.28.07.077 
  5. T. ElGamal, "A public key cryptosystem and a signature scheme based on discrete logarithms," in IEEE Transactions on Information Theory, 1985., 10.1109/TIT.1985.1057074 
  6. D. Pointcheval, J. Stern, "Security proofs for signature schemes," in International conference on the theory and applications of cryptographic techniques, 1996, https://doi.org/10.1007/3-540-68339-9_33 
  7. D. Pointcheval, J. Stern, "Security arguments for digital signatures and blind," in Journal of cryptology, 2000., https://doi.org/10.1007/s001450010003 
  8. T. Pedersen, "Non-interactive and information-theoretic secure verifiable secret sharing," in Annual international cryptology conference, 1991., https://doi.org/10.1007/3-540-46766-1_9 
  9. J. Camenisch, M. Stadler, "Proof systems for general statements about discrete logarithms," in Technical Report/ETH Zurich, Department of Computer Science, 1997., https://doi.org/10.3929/ETHZ-A-006651937 
  10. M. Bellare, J. Garay, T. Rabin, "Fast batch verification for modular exponentiation and digital signatures," in Advances in Cryptology-EUROCRYPT'98: International Conference on the Theory and Application of Cryptographic Techniques Espoo, 1998., https://doi.org/10.1007/BFb0054130 
  11. J. Camenisch, S. Hohenberger, "Batch verification of short signatures," in Advances in Cryptology-EUROCRYPT 2007: 26th Annual International Conference on the Theory and Applications of Cryptographic Techniques, 2007., https://doi.org/10.1007/978-3-540-72540-4_14 
  12. J. Camenisch, A. Lysyanskaya, "A signature scheme with efficient protocols," in Security in Communication Networks: Third International Conference, SCN 2002 Amalfi, 2003., https://doi.org/10.1007/3-540-36413-7_20 
  13. J. Camenisch, A. Lysyanskaya, "Signature schemes and anonymous credentials," in Annual international cryptology conference, 2004., https://doi.org/10.1007/978-3-540-28628-8_4