DOI QR코드

DOI QR Code

Providing Payment Atomicity Using Verifiable Encryption

확인 가능한 암호기법을 사용한 지불의 원자성 보장 방법

  • 최형섭 ((주)위세아이텍) ;
  • 김상진 (한국기술교육대학교 인터넷미디어공학부) ;
  • 오희국 (한양대학교 컴퓨터공학과)
  • Published : 2003.04.01

Abstract

Verifiable encryption is an encryption technique with which one can verify what has been encrypted even if one can not decrypt the ciphertext. This technique can be used in fair exchange to convince the counterpart of his or her receiving an item by presenting an encrypted form in advance. In this paper, a method that can guarantee the payment atomicity is proposed by applying verifiable encryption to an electronic cash system based on the representation problem. With the new method, the process of dispute settlement is improved in the fact that the trusted third party do not have to interact with the bank to resolve disputes. This method is also flexible in a sense that clients and shops can request for dispute settlement regardless of any deadline constraint. However, additional proof is necessary to apply verifiable encryption during payment. We discuss the security and the atomicity of our method, and compare ours with others.

확인 가능한 암호화 기법(verifiable encryption)은 암호문을 해독하지 못해도 어떤 것이 암호화되어 있는지 확인할 수 있는 기법이다. 이 기법은 공정한 교환(fair exchange)에서 암호화된 물건을 먼저 상대방에게 제시하여 상대방이 그것을 받을 수 있다는 확신을 갖도록 하는데 사용된다. 그러나 지금까지의 공정한 교환은 참여자의 익명성을 고려하지 않았다. 이 논문에서는 표현문제(representation problem)를 사용하는 익명의 화폐시스템에 이러한 확인 가능한 암호화 기법을 적용하여, 지불의 원자성을 제공하는 방법을 제안한다. 이 방법은 기존의 방법과는 달리 분쟁을 해결할 때 신뢰기관이 은행으로부터 상점의 입금여부를 확인할 필요가 없어서 효율적이다. 또한 상점의 입금시한이 없으며, 고객과 상점 모두 시간적인 제약 없이 분쟁해결을 요청할 수 있는 유연한 방식이다. 반면에 지불과정에서 확인 가능한 암호화를 적용하기 위한 증명이 요구되므로 추가비용이 들어간다. 새 시스템의 안전성과 기존의 원자성 보장 방법과의 비교분석도 논의한다.

Keywords

Ⅰ. 서론

전자화폐에서 지불과정은 고객이 상점에게 대금을 지불하고, 상점이 고객에게 상품을 전달하는 두 단계로 이루어진다. 네트워크를 통한 전자상거래에서 고객과 상점은 서로를 신뢰하지 않는 관계이다. 언제 네트워크가 끊어질지 모르며 누군가가 고의로 종료할 수 있다. 따라서 고객과 상점 간에 이루어지는 지불과정은 원자성(atomicity)이 보장되어야 한다. 만약 원자성을 보장하지 않으면 고객이 대금을 지불하고도 상품을 받지 못하거나 상점이 상품을 주고도 대금을 받지 못할 수 있다. 지불과정에서 원자성을 보장하는 것을 지불의 원자성이라 하며, Tygar가 처음이 문제를 제기하였다叶 그러나 Tygar가 제안한 방법은 신뢰기관이 항상 지불에 참여해야하는 방식이었다. 이후에 Boyd와 Foo는 문제가 발생했을 때만 신뢰 기관이 참여하는 낙관적인(optimistic) 접근 방법으로 지불의 원자성을 제공하였다미. 이 방법은 전환 가능한 서명 (convertible signature)을 사용하므로 익명성을 제공하지 못한다. Xu 등은 익명성을 제공하고 낙관적인 접근을 사용해 오프라인 화폐에 적합한지 불의 원자성 보장 방법을 제안하였다国.

지불의 원자성에 관한 직접적인 연구 외에 공정한 교환(fair exchange)이라는 연구 분야가 있다‘히. 공정한 교환은 네트워크상의 두 참여자가 서로의 물건을 교환할 때, 서로가 손해보지 않는다는 것을 보장하는 교환방식이다. 공정한 교환은 원자성을 제공한다는 측면에서 지불의 원자성과 유사한 성격을 가지기 때문에 많은 사람들이 공정한 교환으로 쉽게 지불의 원자성을 제공할 수 있을 것으로 생각한다. 하지만 지금까지의 공정한 교환은 참여자의 익명성을 고려하지 않았다. 또한 그 연구가 주로 참여자 자신의 서명을 공정하게 교환하는 데 집중되어 있다'5的. 따라서 은행이 서명하여 발행한 화폐와 디지털 상품을 교환하는 지불과정에 적용하기가 쉽지 않다.

공정한 교환에는 확인 가능한 암호화{verifiable encryption)를 사용하는 방법이 있다洞. 확인 가능한 암호화는 어떤 지정된 다른 사람의 공개키로 메시지를 암호화한 다음에 그 암호문에 무엇이 암호화되어있는지 그것을 해독할 수 없는 참여자가 확인할 수 있도록 해 주는 암호기법이다. 공정한 교환에서는 이 기법을 사용하여 신뢰기관의 공개키로 물건을 암호화하여 상대방에게 전달한다. 이렇게 하면 암호문을 받은 사람은 암호문을 해독할 수 없어도 어떤 물건이 암호화되어 있는지 확인할 수 있다. 또한 이 암호문은 신뢰 기관이 해독할 수 있으므로 물건을 받을 수 있다는 확신을 갖게 된다. 만약 물건을 받지 못하면 신뢰 기관에 게 해독을 요청하여 물건을 받을 수 있다.

현재의 화폐시스템은 대부분 고객의 익명을 보장하는 오프라인 방식이다. 이런 화폐시스템에서 지불의 원자성을 보장하는 방법은 다음의 세 가지를 고려해야 한다.

. 고객은 익명으로 지불에 참여한다.

. 분쟁이 발생했을 경우에만 신뢰기관이 참여하도록 프로토콜을 구성해야 한다.

. 고객과 상점 이외에 제 3자가 상품을 얻을 수 없어야 한다.

이 논문에서는 표현문제 (representation problem)171 를 사용하는 화폐시스템에 효율적인 확인 가능한 암호화 기법을 적용하여 지불의 원자성을 제공하는 방법을 제안한다. 사용하는 확인 가능한 암호화 기법은 Naccache 공개키 시스템同과 다른 군에서의 이산대수 등가 증명을 사용한다. 기존의 다른 군에서의 이산대수 등가 증명网은 보통 범위증명坷까지 같이 해야했다. 하지만 여기서는 범위증명이 필요 없고 이산대수가 가질 수 있는 모든 범위에서 증명이 가능하다. 따라 서지 불과 정에서 확인 가능한 암호화를 적용하기 위한 증명이 추가로 필요하지만 그 비용이 많지 않다. 제안하는 원자성 보장 방법은 기존의 방법과는 달리 분쟁을 해결할 때 신뢰기관이 은행으로부터 상점의 입금 여부를 확인할 필요가 없다. 또한 상점의 입금시한이 없어 고객과 상점 모두 시간적인 제약 없이 분쟁해결을 요청할 수 있는 유연한 방식이다.

이 논문의 구성은 다음과 같다. 2장에서는 가정하는 전자화폐와 기존의 원자성 보장 방법에 대해 설명하고, 3장에서는 이 논문의 이해를 돕기 위한 수학적인 배경을 설명한다. 4장에서는 확인 가능한 암호화 기법과 이를 이용해서 지불의 원자성을 보장하는 방법을 제안한다. 5장에서는 제안하는 방법의 원자성과 안전성을 분석하고, 다른 방법과 비교한다. 마지막으로 6장에서는 결론과 향후 연구방향에 대해 서술한다.

Ⅱ. 관련 연구

이 논문에서 사용되는 대부분의 수학 연산은 G, 군을 사용한다. 가 큰 소수이고, q 는 <处一1인큰 소수일 때 군은 곱셈군 乙의 위수(order)가 q 인 부분군(subgroup) 이다. 따라서 지수요소와 관련된 연산은 법 q에서 이루어지고, 일반적인 연산은 모두 법 />에서 이루어진다. 이후 논문에서는 법 와 g에 대한 연산 표기는 생략하고 이와 다른 군에서의 연산에만 법을 표기한다. 또한 나머지 연산을 하지 않을 경우 이를 명시하기 위해 ( in Z ) 로 표기한다. 정수의 범위에 관련된 표기로 범위 (aM)는 열린 구간으로 a보다 크고 보다 작은 범위를 의미한다.

2.1 화폐시스템

이 논문에서 가정하는 화폐시스템은 기본적으로 Solages와 Traore의 화훼明와 같다. 이 화폐는 표현 문제를 사용하여 동전을 C=g자‘品砰과 같이 구성한다. 여기서 gu> Sv, gT는 군의 생성자(generator)이고, 는 고객의 비밀신원정보이고, 〃는 화폐의 액면가이며, 은 고객이 사용한 은닉요소이다. 7.은 화폐추적과 인출자추적 기능을 제공하기 위해 사용된다. 고객은 제한적 은닉서명 (restricted blind signature) 프로토콜을 수행하여 화폐를 인출한다. 화폐는4 = guST B= yb0T, C, 0T= y如 Sig(A || B || OT || C) 가 된다. 여기서 a 와 b 는 Z。에서 임의로 선택된 난수이며 贝”■는 인출자 추적을 위한 공개키이다. '"'는 비트 결합(bitwise concatenation)을 나타내며, Sig(A || B || OT || C)는 (A || 에 0:끼| C)를 신뢰 기관이 서명한 것으로 이후에는 간단하게 Sig(C)로 표기하기로 한다. A는 지불과정에서 고객이 C의 표현을 알고있는지 확인하는데 사용된다. B와 OT 는 C의 인출자를 추적할 수 있다는 것을 증명할 때 사용된다.

[그림 1] 가정하는 화폐의 지불과정

여러 동전을 사용하여 지불하는 것이 보다 일반적인 지불과정이지만 여기서는 문제를 간단하게 하기 위해 지불대금과 동전의 액면가는 항상 같다고 가정한다. 즉 지불과정에서 동전 하나와 상품 하나를 교환한다고 가정한다. 이 화폐의 지불과정은 [그림 1] 과 같다. /는 상품의 식별자, 外는 상점의 식별자, Ts는 구매시간을 나타내며, 四{。, 1*- }乙는 충돌 회피 해 쉬함수(collision-resistant hash function) 이다. 고객이 상품을 구매하려면, 고객은 상점에게 화폐, 상품의 식별자 I, 가격 ” 를 준다. 상점은 고객에게 도전(challenge) c 를 주고, 고객은 해당하는 응답 (response), 과 S2를 계산하여 상점에게 준다. 이도 전/응답을 통해서 상점은 고객이 화폐의 올바른 사용자임을 알 수 있다. 도전/응답은 상점이 입금할 때 반드시 은행에 제시해야 하고, 은행은 이를 이용하여 고객이 이중사용했을 때 고객의 신원을 알 수 있다. 즉, 상점은 화폐를 받은 것만으로는 의미가 없고, 도전/응답과정을 마쳐야만 지불이 완료되었다고 볼 수 있다. 상점은 지불이 완료되면 해당하는 상품을 고객에게 전달한다.

2.2 Xu 등의 원자성 보장 방법

Xu 등은 오프라인 화폐시스템에서 원자성을 보장하는 방법을 제안하였다回. 이들은 분쟁이 발생했을 때만 신뢰 기관이 참여하는 낙관적인 접근방법을 사용한다. 자세한 지불과정은 [그림 2]와 같다. 상점이 먼저 상품을 암호화하여 고객에게 주면 고객은 상점에게 대금을 지불한다. 상점은 지불을 확인하고 상품의 해독키를 고객에게 준다. 대금을 지불한다는 것은 화폐를 주고도 전/응답까지 수행한 것을 말한다. 상점은 고객에게 받은 대금을 입금시한 내에 은행에 입금한다.

[그림 2] Xu 등의 지불 프로토콜

이 방법에서는 상점이 먼저 대금을 받기 때문에 상점은 손해보는 경우가 없다. 이렇게 하는 것은 고객이 익명으로 참여하기 때문이다. 반대로 고객은 대금을 지불하고도 상품을 받지 못하는 상황이 발생할 수 있다. 이 경우 고객은 입금시한이 지난 후에 상품을 받지 못했다고 신뢰기관에 분쟁해결을 요청한다. 신뢰기관은 은행에 접촉하여 상점이 입금했는지 알아본 후, 입금 여부에 따라 분쟁을 해결한다. 만약 입금이 되었다면 상점이 응답을 받고도 해독키를 주지 않은 것이고, 입금이 되지 않았다면 상점이 응답을 받지 못한 것이다. 입금시한이 필요한 이유는 신뢰 기관이 분쟁을 해결할 때 고려해야 하는 경우의 수를 줄이기 위함이다. 이로 인해서 상점의 입금시한이 지날 때까지 고객은 분쟁해결을 받을 수가 없다. 이런 점은 고객에게 불편한 요소가 될 수 있다.

입금시한을 없애고 분쟁해결을 받도록 할 수 있다. 하지만 입금시한이 없으면 다음과 같은 과정을 거쳐야 한다. 고객이 신뢰기관에 분쟁해결을 요청하면, 신뢰기관은 은행에 입금여부를 묻는다. 만약 입금이 된 상태라면 상점이 대금을 받았다는 것이 명확하다. 그렇지 않다면 상점의 입금을 막고, 상점에 문의해야 한다. 상점이 고객에게 대금을 받지 못했다고 주장한다면 고객에게 거래가 취소되었음을 증명하는 진술서 (affidavit)를 작성하여 준다. 반대로 상점이 대금을 받았다고 하면 상점으로부터 해독키를 받아 고객에게 전달하고 은행에게 상점의 입금을 허가하도록 하여야 한다. 다시 말해 입금시한을 없애면 상점이 입금하지 않았을 때 신뢰기관이 상점의 상태를 알 수 없으므로 상점에 거래할 의사가 있는지 문의해야 한다.

고객이 해독키를 받아 상품을 풀어보았는데 원하는 상품이 아닐 수 있다. 이 때 고객은 신뢰 기관에 분쟁 해결을 요청하고 상점의 부정을 증명해야 한다. Xu 등의 방법은 도전값을 만들 때 상품의 식별자를 넣어서 이를 증명하고자 하였다. 하지만 신뢰 기관은 상품의 식별자만으로 고객이 무엇을 받았는지 확인할 수 없다. 또한 이 도전값은 은행에 입금되었을 때 은행이 확인해야 한다. 그래서 은행이 화폐가 사용된 용도를 알게되므로 거래행위의 일부가 노출된다. 이 방법을 개선하여 송장(invoice)을 사용하는 방법이 있다''기. 상점은 암호화된 상품의 해쉬값, 화폐, 거래조건에 서명하여 송장을 작성하며, 고객에게 암호화된 상품을 줄 때 함께 준다. 분쟁이 발생하면 신뢰 기관은 고객이 제시한 송장을 이용하여 상점의 부정을 확인할 수 있다. 송장을 쓰지 않고 도전값을 생성할 때 암호화된 상품의 해쉬값을 넣는 방법이 있다. 그러나 이 방법은 상점이 은행에 입금한 경우에만 송장과 같은 기능을 하게 된다. 따라서 이 논문에서는 송장을 사용한다

Ⅲ. 수학적 배경

3.1 Naccache 암호시스템

Naccache 암호시스템은 Naccache와 Stem이 제안한 공개키 암호시스템이다回 이 암호시스템은 RSA 법에서 다차잉여(higher residue)를 계산하는 것이 어렵다는 것에 기반하고 있다. 이들은 결정적인(deterministic) 방법과 확률적인(probabilistic) 방법, 두 가지를 제안하고 있으며, 이 논문에서는 결정적인 방법을 사용한다.

결정적인 방법에서 공개키는 e=PQ 와 gwZ:이며, 개인 키는 P, Q, a 이다. 여기서 尸와 Q는 큰 소수이며, 그것의 곱인 〃의 길이는 적어도 768 비트 이상이어야 한다.。는 중복되는 소인수를 가지지 않는 B- 매끄러운 (B-smooth)i) 홀수인 160비트 정도의 정수이고, 이 때 B 는 10 비트 정도의 작은 정수이다. 이。는 이 ©(左)과 gcd(©(")/。, 。) = 1을 만족해야 한다. g의 위수는 6 의 배수이어야 한다. 이런 조건을 만족하는 n, 6, g는 다음과 같이 생성할 수 있다.

먼저。를 생성하기 위해 짝수 »개의 서로 다른 홀수인 소수 a를 선 택 하고, w=n 와 V = HL/2+m를 계산한다. 그 다음 "와 〃를 이용하여 6= uv= IIUiPi 를 계 산 한 다 . F와 Q는 F=2a"+1 과 Q=2/w+l을 소수로 만드는 a와 b 선택하여 생성한다. g는 임의로 선택한 다음에 위수가 。(也)/4인지를 검사하여 생성한다.

암호화는 한번의 지수연산만 하면 된다. 메시지 m(<a)을 공개키 (如, g)로 암호화 하려면 g*mod n 을 계산한다. 암호해독은 중국인의 나머지 정리 (Chinese remainder theorem)를 사용한다. °의 為개의소인수는 각각 /., 이고, 이 때 終를 법에서 m과 합동인 수라 하자. 为개의 를 구하면 중국인의 나머지정리를 사용하여 메시지 m을 구할 수 있다. 암호문 c=g"mod 初에서 를 구하기 위해서는 c( = mg 也를 계산한다. c, 는 (m—일때수식 ⑴의 유도에 의해서 법 "에서 严皿 과 합동이며, 이 식을 만족하는 仇.는 0부터 山一1까지 대입해서 찾을 수 있다.

#(1)

이 암호시스템은 개인키 (RQ。)를 알고 있는 사람만이 기저 g에 대한 c의 이산대수 m을 계산할 수 있다. 이와 같은 방식의 암호시스템으로 Okamoto와 Ucmyama 의 암호시스템페이 있다. 이 논문에서는 Naccache의 시스템을 사용하고 있지만 Okamoto와 Uchiyan紿의 암호시스템을 사용할 수도 있다.

3.2 다른 군에서의 이산대수 등가 증명

이 절에서는 확인 가능한 암호기법에 필요한 이산대수 등가 증명을 설명한다. 이 기법은 다른 군에서의 이산대수 등가 증명이 필요하다. 이 증명에서는 두 군의 위수가 다르므로 이산대수의 범위도 같이 증명해야 한다.

3.2.1 이산대수의 등가 증명

같은 군에서 기저 幻과 g2 에 대한 %^<專와 %金(爲의 이산대수가 같음을 증명하는 프로토콜은 [그림 3]과 같다网. 이 증명을 이 논문에서는 pKProof (log §约 = log g必) 로 표기한다.

[그림 3] 이산대수 등가 증명

다른 군에서의 이산대수 등가 증명은 [그림 3]에서 s를 나머지 연산을 하지 않고 확인자에게 주어증명을 할 수 있다고 생각할 수 있다. 伝=<幻>과 G2=<g2>는 각각 군의 위수가 幻과 勿인 서로 다른 군으로, 幻<02를 만족하고 gcd(<7i, 《2)= 1 이라고 가정하자 yi = Si, y-i = g2, Wi = gi, T% = g矿, 일때 증명자가 G과 G2의 위수를 모두 안다고 하면 증명자는 아래 두 식을 만족하는 S 를 중국인의 나머지 정리를 이용하여 구할 수 있다.

#

이 s는 Z”如에서 유일하다. s<幻일 때 w— ex mod幻과 w — ex' mode는 반드시 같아야 한다. 하지만 증명자가 c를 예측할 확률은 1/2"이므로 증명자가 w— ex mod^1= w — ex modg?을 만족하는을 선택할 확률은 무시할 수 있다. 따라서 s 의범위를 제한한다면, 이를 다른 군에서의 이산대수 등가 증명으로 사용할 수 있다. s의 범위를 제한하기 위해서는 X의 범위와 w의 범위를 제한해야 한다. 이는 이산대수의 범위 증명을 통해서 할 수 있다.

3.2.2 이산대수의 범위 증명

이산대수 범위 증명 (interval proof)은 x를 밝히지 않고 y의 이산대수를 알고 있음을 증명하면서 동시에 %가 어떤 범위 안에 있음을 증명하는 것이다. 이진(binary) 도전을 사용하는 이산대수의 범위 증명网 은 [그림 4]의 프로토콜을 在번 수행하여 이루어진다. 이 증명을 통해서 *가 정해진 범위 (一2‘, 2‘)에속해있음을 증명한다. 여기서 I은 2"'이 g보다 작도록 설정해야 한다. 하지만 실제로 X의 범위가 (一2, -2, 2, -2)이어야 증명에 성공할 수 있다. 확인자는 응답 s의 범위를 확인해서 s의 범위를 알게 되므로 증명자는 s계산에서 나머지 연산을 하지 않는다. 이 증명을 PKProof(logg»/、\—2'<loggy<2‘) 이라고 표기한다. 확인자가 s가 범위 (一2't, 2‘t)인지 검사하여 *가 범위 (一2', 2‘)에 있다고 믿게 되는 이유는 이 증명의 지식추출기 (knowledge extractor)가 계산하는 X의 범위 때문이다. 표준 rewinding 기술을 이용하면 지식추출기는 같은 附를 사용하지만 c와 s값이 다른 두 트랜스크립트를 얻을 수 있다.

[그림 4] 이진 도전을 사용하는 이산대수 범위증명

따라서 W= gsyc = gsyc (c丰c', s丰s')식으로 부터 x=(s'-s)/(c—c') 를 계산할 수 있다. 그런데 (c—c‘)은 항상 1 또는 -1 이 되어 (s' — s)를 나누므로 *는 범위 (一2‘, 2‘)에 속한다.

이 범위증명은 이진도전을 사용하기 때문에 효율성이 떨어진다. Camenisch와 Michels는 강한 RSA 가정 (strong RSA assumption) 하에서 효율적인 이산대수 범위 증명 방법과 다른 군에서의 이산 대수 등가 증명을 제안하였다이

강한 RSA 가정. 충분히 큰 RSA 법 "과 의 임의의 원소 z가 주어졌을 때, °>1과 N=zfmod n 을 만족하는 를 구하는 것은 어렵다. 【9]의 범위증명은 이진도전을 사용하지 않고 c={0, l}"을 사용한다. 그러나 이와 같은 도전을 사용하면 지 식 추출 기 X=(s' — s)/(c-c')에 서 (c' — c)가 항상 (s—s')을 나누어야 X의 범위를 증명할 수 있다. d=gcd(s'-s, c-c')이라고 할 때, 확장 유클리드 알고리즘(extended Euclidean algori- thm)을 이용하여 다음을 만족하는 君와 u를 계산할 수 있다.

#

따라서 다음이 성립한다.

#

그런데 d<c—c'이면 1 이 아닌 g의 루트를 계산할 수 있다. 그러나 이것은 강한 RSA 가정에 위배되므로 d=c—c'이어야 한다. 따라서 (c— c) I (s'-©이다. 그러므로 RSA 법을 사용하면 이진도 전을 사용하지 않아도 %의 범위 증명이 가능하다. 지식추출기로 확인자가 알게되는 %의 범위를 구해보면 이 된다. 하지만 s계산에서 cr가 (一2'一2, 2’-2)에 속해야 하므로 $가 加]트일 때 증명 가능한 %의 범위는 (*) 一/it, /-- 이 된다. 강한 RSA 가정을 사용하여 범위증명을 하게 되면 효율적으로 다른 군에서 이산대수 등가 증명을 할 수 있다. 그러나 증명할 수 있는 *의 범위가 도전의 길이만큼 줄어들게 된다. 따라서 (一2*, 21' 2- 「22) 에속하지 않으면 증명을 하지 못하는 문제점이 있다. 이 문제는 직접 X를 선택하여 증명을 한다면 상관없지만 만약 어떤 계산에 의해 생성된 X 를 증명해야 하는 경우에는 사용하기 힘들다. 이 논문에서는 이 문제를 극복하기 위해 범위증명 없이 효율적으로 확인 가능한 암호화를 하는 방법을 제시한다.

Ⅳ. 확인 가능한 암호화를 이용한 원자성 보장 방법

이 장에서는 기존 지불의 원자성을 보장하는 방법에 확인 가능한 암호화를 적용하여 견고하고 분쟁 해결이 명확한 원자성 보장 방법을 제안한다. 확인 가능한 암호화를 사용함으로써 기존의 고객이 먼저 지불하고 나중에 상품을 받는 방식에서 반대로 고객이 먼저 상품을 받고 나중에 지불하는 방식으로 전환하였다. 화폐를 확인 가능하게 암호화하기 위해서 Naccache 암호시스템과 다른 군에서의 이산대수 등가 증명을 사용하였다.

4.1 시스템 설정

제안하는 방법의 시스템 설정은 분쟁을 해결해주는 신뢰기관의 공개키 설정이 추가로 필요하다는 것을 제외하고는 가정하는 화폐시스템의 초기 설정과 같다. 신뢰기관은 Naccache 암호시스템의 공개키 (如, g)를 생성하여 공개한다. 이 때 g의 위수가 gu 의 위수보다 커야한다. gu의 위수는 q이므로 신뢰 기관은 공개키 (”, g)를 생성할 때 곱셈군 에서 g의 위수가 g보다 큰지 확인해야 한다. 정확하게 말하면 Naccache 암호시스템에서 °보다 작은 값을 암호화하므로 a가 보다 커야한다. 고객과 상점은지불에 참여하기 전에 신뢰기관의 올바른 Naccache 공개키를 알고있어야 한다.

4.2 확인 가능한 암호화를 이용한 지불

이 논문은 가정한 화폐시스템의 지불과정에서 고객의 지불을 확인 가능한 암호기법으로 암호화한다. 그러면 상점은 나중에 대금을 받을 수 있다는 확신을 갖게 되어 기존과 달리 고객보다 먼저 프로토콜을 완료할 수 있다. 지불은 두 가지 방법으로 암호화를 할 수 있다. 하나는 은행이 서명하여 발행한 동전 Sig(C) 를 암호화하는 것이고, 다른 하나는 응답을 암호화하는 것이다. 응답을 암호화하여도 되는 이유는 앞서 말한 것처럼 도전/응답 과정이 끝나야 지불이 완료되는 것이기 때문이다. 만약 Sig(C)를 암호화한다고 하면 각각의 서명기법마다 다른 확인 가능한 암호기법이 필요하다. 하지만 응답을 암호화하면 은행이 어떤 서명기법을 사용하더라도 이산대수 기반 도전/응답을 하는 시스템이면 동일한 암호화 기법을 적용할 수 있다. 그래서 이 논문에서는 응답을 암호화하는 방법을 선택하였다.

가정한 화폐의 지불 과정인 [그림 1]에서 응답은 S1 과 S2 로 이루어져 있다. 이 두 개중 S1 만을 확인 가능한 암호기법으로 암호화한다. 고객은 E=gu 과 Y=g''mod 如을 계산하여 (E, 를 상점 에게 준다. V는 Si을 신뢰기관의 공개키로 암호화한 것이다. 그러면 (E, 矿)는 신뢰기관의 공개키로 si을 확인할 수 있는 암호문이 된다. 상점은 A? = Eg3DC을만족하는지 검사하여 도전에 대한 올바른 응답인지 확인한다. 그리고 고객과 상점은 각각 증명자와 확인자로 [그림 5]와 같이 PK Proof(logg/=loggV)를 수행한다. 이 증명으로 고객은 기저 g와 幻/에 대한 E와 V의 이산대수가 같다는 것을 상점에게 증명하게 된다. 또한 고객이, 을 알고 있다는 것도 동시에 증명하게 된다. 이렇게 하면 상점은 올바른 응답이 암호화되어 있으며, 이 암호문을 신뢰기관이 풀 수 있다는 것을 확인할 수 있다. 이 논문에서는 이와 같은 암호화 기법을 昭( . )라고 표기한다.

〔그림 5] PKProof(logguE = loggV)

3.2절에서는 증명자가 두 군의 위수를 안다고 가정했다. 그러나 여기서는 고객이 G。의 위수는 알지만 勿의 위수는 알지 못한다. 이 때 다른 군에서의 이산대수 등가 증명에서 이산대수의 범위 증명이 필요 없다는 것을 아래와 같이 증명할 수 있다.

정리 1. 만약 증명자가 한 군의 위수를 알지 못하고 계산할 수 없다면, 다른 군의 이산대수 등가 증명에서 범위 증명을 하지 않아도 안전하다.

증명 G=<g]>과 &=<睑는 각각 위수가 幻, 02( 幻<02)인 서로 다른 군이라고 하자. 증명자는 们은 알지만 C는 알지 못한다고 가정하자. % = 疝, >2=^2/ Wl = gf, W2=g2 이고 对5’이고 *와 攵'은 법 们에서 합동이 아니라 흐}자. 또한 증명자는 도전 C를 예측할 수 없다고 하자. 이 때 증명자는 다음 두 식 (2)와 ⑶을 동시에 만족하는 s를 생성하면 다른 *로 증명을 성공할 수 있다.

#(2)

#(3)

증명자는 s를 계산하는 상황에서 이미 x, x , w,"'을 각각 昭, 明를 사용하여 고정(commit) 한 상태이다. 만약 증명자가 如를 안다면 중국인의 나머지 정리를 사용하여 S 를 계산해 낼 수 있지만 증명자는 <72를 알지 못하므로 이 방법으로는 증명에 성공할 수 없다. 증명자는 임의로 C를 예측하여 증명을 성공할 수 있지만 그 확률은 1* /2 이다. 또한 증명자는 s=w~cx{m Z)를 계산할 수 있으며, 이 s는 ⑵식을 만족한다. 하지만 s가 (3)식을 우연히 만족할 확률은 1/<71 이다. X丰x'이고 *三x'(modgi) 인 X와 X'을 사용하여 증명할 수 있지만 이 논문에서는 법 们에 대해서 X가 등가인 것만 증명하면 되기 때문에 문제가 되지 않는다.口

한 가지 더 고려해야할 점은 상점이 응답의 유효성을 4와 Eg初。가 법 0에서 같은지를 비교하여 확인한다는 것이다. Si을 넣어서 g滄沏。을 계산하지 않고 E로 대신하여 검사하여도 log &占를 알고 있음을 보이면 안전성에 문제가 되지 않는다는 것을 아래와 같이 증명할 수 있다.

정리 2. 상점 이, 대신에 E를 사용하여 A와 g^Dc 가 법 力에서 등가인지 증명하여도 log 를 알고 있음을 보이면 안전하다.

증명 . 화폐 C의 표현을 알지 못하는 사람도 S2‘을임의로 정하고 E=g/ = 4g//广。를 계산하여 E'을 구할 수 있으므로 표현 증명을 할 수 있다. 하지만 지불과정에서 표현 증명과 더불어 E와 V의 이산대수 등가 증명을 해야 하는더), 이렇게 계산한 步을 이용해서는 logg2을 계산할 수 없으므로증명할 수 없다. 그러므로 제안한 방식으로 표현 증명을 하여도 문제가 발생하지 않는다. 口

4.3 지불과정

제안하는 지불과정은 [그림 6]과 같다. 고객은 상점에게 화폐와 고객의 Diffie-Hellman(DH) 키 房“을준다. 상점은 암호화키 K를 생성하여 상품을 암호화하고 상점의 DH 키를 해쉬한 값 H(g粉과 함께 고객에게 전달한다. 암호화된 상품, 송장, 상점의 DH 키를 해쉬한 값 H(書), 거래 시간 八를 고객에게 전달한다. 송장은 암호화된 상품, 상품 가격 V, 사용한 화폐, 상점 식별자 vs, 거래 시간, 암호화에 사용된 키를 서명하여 만든다. 송장에 H(蟲)를 넣어 자신의 키를 고정(commit)하고, 房를 넣어 고객의 키와 연결하는 이유는 나중에 분쟁이 발생하였을 때 실제 사용된 키가 아닌 다른 키를 제시할 수 없도록 하기 위함이다. 암호화된 상품을 포함하는 이유는 상점이 어떤 암호화키로 어떤 상품을 고객에게 주었는지 고객이 신뢰기관에 송장을 통해서 증명할 수 있도록 하기 위해서이다. 고객은 상점의 송장이 올바른지 확인한다. 거래하기로 한 내용이 맞으면 고객은 확인할 수 있게 암호화된 응답 旧小과 S2를 상점에게 준다. 상점은 검증과정을 통해서 고객이 화폐의 정당한 사용자인지 그리고 신뢰기관이 응답을 해독할 수 있는지를 확신할 수 있게 된다. 문제가 없다면 상점은 고객에게 상점의 키 g◎을 주고, 고객은 해독키 K를 계산하여 암호화된 상품을 푼다. 고객이 원하는 상품을 얻었다면 고객은 상점에게 응답을 주어 지불을 완료한다

(그림 6) 제안하는 지불과정

제안하는 지불과정은 Xu 등의 방법과는 달리 입금시한을 사용하지 않는다. 그 이유는 입금시한이 없어도 신뢰기관은 은행에 접촉할 필요가 없고 고려해야 하는 경우의 수도 복잡하지 않다. 만약 제안하는 방법에서 입금시한을 사용하면 분쟁해결을 더 용이하게 할 수 있다. 즉 신뢰기관은 분쟁 해결 과정에서 해결을 요청한 참여자와의 통신만으로 모든 분쟁을 해결할 수 있다. 다만 고객은 이 시한이 지나야만 분쟁 해결을 요청할 수 있다. 이 방법에 대해서는 이 논문에서는 설명하지 않는다.

4.4 분쟁해결과정

상점과 고객이 지불과정을 정직하게 수행한다면 문제없이 거래가 이루어진다. 하지만 어느 한쪽이 정직하게 수행하지 않거나 네트워크 오류가 발생하면 분쟁이 일어날 수 있다. 제안하는 지불방법에서는 고객이 올바르게 암호화된 응답을 주기 전에 중단되면 서로 원하는 것을 얻을 수 없으므로 분쟁이 발생하지 않는다. 그러나 그 이후에 중단되면 다음과 같은세 가지 분쟁이 발생할 수 있으며, 각 분쟁이 발생하면 다음과 같이 해결한다.

분쟁 발생 유형 1. 고객이 올바른 암호화된 응답을 주었는데도 상점이 고의로 상점의 키 g方을 주지 않거나 네트워크 오류 등의 문제로 을 받지 못할 수 있다. 두 경우 모두 아래와 같이 해결한다. 암호화된 응답을 신뢰기관이 상점에게 풀어줄 수 있기 때문에 고객은 반드시 신뢰기관에 해결을 요청해야 한다. 분쟁을 해결하는 프로토콜은 [그림 7] 과 같다. 고객은 신뢰기관에 지불 트랜스크립트 (transcript)를 주고 정당한 화폐의 사용자임을 표현증명 PKProof(C=g#g絃分으로 증명한다. 지불과정에서는 정해진 값을 이용하여 표현 증명을 하였지만 여기서는 임의의 값을 이용하여 증명한다. 따라서 익명으로 신뢰기관에 접촉이 가능하다. 만약 상점이 이미 해결을 요청해서 응답을 받아 간 경우라면 신뢰기관은 그 때 저장해둔 상점의 키를 고객에게 전달한다. 그렇지 않은 경우라면 신뢰 기관은 상점에 요청하여 상점의 키를 받아 고객에게 전달하고, 상점에게는 응답을 준다. 이 과정은 온라인으로 이루어지기 힘들어서 고객이 차후에 다시 문의해야 한다. 만약 상점이 키를 주기를 거부하면 법적인 책임을 물게 된다.

(그림 7) 분쟁 해결 프로토콜 1

분쟁 발생 유형 2. 상점이 키를 주고도 응답을 받지 못할 수 있다. 이는 고의로 고객이 응답을 주지 않는 경우와 네트워크 오류 등의 문제로 상점이 응답을 받지 못한 경우에 발생한다. 두 경우 모두 아래와 같은 방법으로 해결한다. 상점은 이 응답이 있어야 입금을 할 수 있으므로 반드시 신뢰기관에 해독을 요청해야 한다. 이 때 사용하는 프로토콜은 [그림 8] 과같다. 상점은 지불 트랜스크립트, 상점의 키 g夸를신뢰기관에 주고 분쟁해결을 요청한다. 신뢰 기관은 트랜스크립트의 도전값이 정확한지 계산하여 확인한다. 이 과정에서 신뢰기관은 상점이 올바른 해독키를 주었는지도 알 수 있다. 도전값이 맞으면 상점에 게 응답을 해독해 준다. 신뢰기관은 상점에게 받은 트랜스크립트와 상점의 키를 저장해 둔다. 그리고 분쟁 발생 유형 1에서처럼 고객이 신뢰기관에 해결을 요청하였을 때, 신뢰기관은 고객의 정보를 확인하고 고객에게 상점의 키를 전달한다.

그림 8. 분쟁 해결 프로토콜 2

분쟁 발생 유형 3. 상점이 준 상품이 거래하기로 한 상품이 아닐 수 있다. 이 때 사용하는 분쟁 해결 프로토콜은 [그림 9]와 같다. 고객은 신뢰기관에 지불트랜스크립트, 암호화된 상품, 상점의 키 g肾와 해독키를 생성할 수 있도록 如를 준다. 이 때 제 3자가 상품을 얻지 못하도록 知/의 비밀성을 보장하면서 증명으로 밝힌다. 신뢰기관은 고객이 준 값들이 올바른지 송장을 통해서 확인한다. 신뢰기관은 해독키 K 를 으로 계산하여 암호화된 상품을 풀어보고 상품 식별자에 해당하는 상품인지를 비교한다. 이 비교는 전자적으로 할 수 없다. 만약 올바른 상품이 아니라면 고객에게 지불취소를 증명하는 진술서(affidavit)를 서명하여 작성해준다. 고객은 익명성의 문제로 이 화폐를 다른 상점에 사용하기 어렵기 때문에 환불을 받아야 한다. 고객은 은행에 화폐와 진술서를 제시하고 화폐의 정당한 사용자임을 증명하여 해당하는 금액을 환불받거나 다시 인출하면 된다. 그리고 신뢰기관은상점에게 해당하는 책임을 지게 한다.

〔그림 9) 분쟁 해결 프로토콜 3

Ⅳ. 시스템 분석

이 장에서는 제안하는 방법의 원자성과 안전성에 대해 논한다. 또한 1장에서 언급한 기본 요구사항들을 만족하는지 보인다. 그리고 기존 Xu 등의 방법과 비교한다.

5.1 원자성

가정 1 (가정하는 화폐시스템의 안전성). 가정하는 화폐 시스템은 고객의 신원을 노출하지 않으며, 고객이 이중사용했을 때 고객의 신원을 드러낸다.

가정 2 (Naccache 암호시스템의 안전성). Naccache 암호시스템은 RSA법 "의 인수분해를 알지 못하고는 암호문을 해독하는 것이 계산적으로 어렵다.

정리 3. 고객은 대금을 지불하지 않고 상품을 얻을 수 없다.

증명. 고객이 상점으로부터 암호화된 상품과 상점의 키를 해쉬한 값을 받았을 때 고객이 H(gg)으로부터 g萼를 구한다면 암호화된 상품을 해독할 수 있다. 하지만 . )는 일방향 해쉬함수이므로 고객이 由 를 구하는 것은 계산적으로 어렵다. 고객이 상품의 해독키 g笠을 받은 후에 응답을 주지 않고 중단해도 상점은 VE(Si)< 이미 가지고 있으므로 [그림 8] 과같이 신뢰기관으로부터 응답 S1 을 받을 수 있다. 만약 고객이 이 화폐를 다른 상점에 사용하거나 은행에서 환불받았다면, 가정 1의 이중사용 검출에 의해서 고객의 신원이 노출된다. 따라서 고객은 대금을 지불하지 않고는 상품을 얻을 수 없다. 口

정리 4. 상점은 고객에게 상품을 주지 않고 대금을 받을 수 없다.

증명. 상점은 고객으로부터 응답을 받기 전까지는 은행에 화폐를 입금하지 못한다. 상점은 性(si)을 받은 후에 신뢰기관에 요청하여 응답 S]을 얻을 수 있다. 하지만 상점은 해독을 요청할 때 신뢰기관에게자신의 올바른 DH 키를 제시해야한다. 따라서 이 경우에 고객은 [그림 7]과 같이 상점의 키를 얻을 수 있다. 만약 상점이 스스로 助(si)을 해독할 수 있으면 공격이 가능하다. 상점은 (E, V) 중에 하나의 이산대수를 알아내야 하지만 군과 군에서 이산대수를 계산하는 것은 이산대수 가정과 가정 2에 의해 계산적으로 어렵다. 상점은 잘못된 상품을 암호화해서 고객에게 줄 수 있지만 송장에 암호화된 상품과 상점의 키가 들어 있기 때문에 이러한 잘못을 행하였음을 부정할 수 없다. 따라서 상점은 올바른 상품을 주지 않으면 대금을 받을 수 없다. □

정리 5. 제안하는 방법은 지불과정의 원자성을 보장한다.

증명. 다음과 같은 4가지 경우만이 발생할 수 있다.

. 고객과 상점은 올바르게 화폐와 상품을 교환한다. 이는 지불의 원자성을 위배하지 않는다.

. 고객은 불합리한 이득을 얻지 못한다. 주장 3에 의해서 이런 경우는 발생하지 않는다.

. 상점은 불합리한 이득을 얻지 못한다. 주장 4에 의해서 이런 경우는 발생하지 않는다.

. 고객과 상점은 모두 교환에 실패한다. 이는 지불의 원자성을 위배하지 않는다.

위의 4가지 경우 모두 원자성을 위배하지 않으므로제안하는 방법은 지불의 원자성을 보장한다. 口

5.2 안전성

정리 6. 지불프로토콜과 분쟁해결 프로토콜에서 고객의 신원이 노출되지 않는다.

증명. 가정하는 화폐의 지불과정은 가정 1에 의해 익명성이 보장된다. 원자성을 보장하기 위해 추가로 교환되는 (E, 卩)와 PKProof(log 恥E= log~)에는 고객의 신원을 드러내는 정보가 없다. 분쟁 해결 1과 3에서 고객은 화폐의 표현을 영지식 증명으로 증명하지만 이 또한 고객의 신원을 노출하지 않는다. 분쟁 해결 3에서 고객이 진술서를 가지고 은행으로부터 환불을 받을 때도 같은 증명을 사용하므로 고객의 신원이 드러나지 않는다. 口\

정리 7. 고객과 상점 이외에 제 3자는 상품을 얻을 수 없다.

증명. 제 3자가 상품을 얻지 못하는 것은 DH 키 분배 프로토콜을 사용해서 만족한다. 상점과 고객은 상품의 암호화키를 DH 키 분배 프로토콜을 통해서 공유하므로 3任ie-Hellman 가정에 의해 제 3자는 상품을 얻을 수 없다. 신뢰기관 역시 분쟁 발생 유형 3에서 고객이 직접 해독키를 주는 경우를 제외하고는 이 해독키를 얻을 수 없어서 상품을 얻지 못한다.口

5.3 기존 지불의 원자성 보장 방법과의 비교

지불의 원자성을 보장하는 방법에 관한 연구는 많이 이루어져 있지 않다. 또한 공정한 교환과는 직접적 인비교가 불가능하므로 여기서는 대표적 방법인 Xu 등의 방법하고만 비교한다. 비교에서는 모든 도전/응답을 상호작용(interactive)으로 한다고 가정한다. 메시지 전송은 최적화 시켰으며, 연산은 비용이 많이 드는 지수연산을 고려하였다. 비용을 계산할 때 예를 들어 gfg专益은 3번의 지수연산이 필요한 것으로 가정하였다. 이 논문에서 사용하는 송장을 만들고 확인하는 데는 지수연산이 필요하다. 하지만 Xu 등의 방법에서 같은 기능을 제공하기 위해서는 필요한 연산이므로 송장에 관한 연산은 고려하지 않는다. 제안하는 방법은 DH 키 동의를 위해서 고객과 상점이 각각 2회의 지수연산을 한다. 확인 가능한 암호화에는 고객이 2번, 상점이 4번의 연산이 필요하며, 상점이 응답을 확인하는데 5번과 Sig(C)를 확인하는데 4번의 지수연산이 필요하다. 전체적으로 고객이 6번, 상점이 15번으로 총 21번의 지수연산을 한다. [표 1]을보면 제안하는 방법이 지불과정에서 2번의 메시지전송과 7번의 지수연산이 더 필요한 것을 알 수 있다. 이것은 제안하는 방법이 지불과정에 확인 가능한 암호화를 위한 다른 군에서의 이산대수 등가 증명을 해야 하기 때문이다.

Xu 등의 방법은 분쟁이 발생하면 항상 신뢰 기관이 은행에 접촉하여 상점이 입금했는지를 확인해야 했다. 반면에 제안하는 방법은 신뢰기관이 은행에 접촉할 필요가 없다. 그 이유는 분쟁 발생 유형 2와 3 이 발생하면 신뢰기관은 상점이 응답을 받았는지를 알게 되기 때문이다. Xu 등의 방법에서는 분쟁 해결에서 일어날 수 있는 경우의 수를 줄이기 위해서 상점이 일정 시한 안에 입금을 하도록 했다. 그리고 상점의 입금시한이 지나야 고객은 분쟁해결을 요청할 수 있었다. 제안하는 방법은 상점이 입금시한을 가지지 않고 고객과 상점 모두 시간의 제약 없이 분쟁 해결을 신뢰기관에게 요청할 수 있다.

Ⅴ. 결론

이 논문에서는 확인 가능한 암호화 기법을 사용하여 지불의 원자성을 제공하는 방법을 제안하였다. 제안하는 방법은 지불과정에서 화폐의 표현을 영지 식으로 증명할 때 응답을 확인 가능하게 암호화하였으며, 이 암호화에서는 Naccache 공개키 시스템과 다른 군의 이산대수 등가 증명을 사용하였다. 이 증명은 기존의 다른 군의 이산대수 등가 증명과 달리 이산대수의 범위증명을 하지 않으며, 이산대수가 가질 수 있는 모든 범위에서 증명이 가능하다. 따라서 기존 증명보다 효율적이고, 표현문제를 사용하는 화폐 시스템의 수정을 최소화할 수 있는 장점을 가지고 있다. 뿐만 아니라 도전에 대한 응답을 지수로 사용하여 확인하는 모든 화폐시스템에도 쉽게 적용할 수 있다.

확인 가능한 암호화를 사용하면 상점은 입금시한을 가지지 않고, 고객과 상점 모두 시간적이 제약 없이 분쟁해결을 요청할 수 있다. 또한 신뢰기관이 분쟁을 해결할 때 은행에 상점의 입금여부를 확인하는 절차가 필요 없어서 은행과 독립적으로 지불의 원자성을 제공할 수 있다. 반면에 모든 지불마다 확인 가능한 암호화를 위한 추가적인 증명을 해야하는 단점을 가진다. 또한 이 논문은 문제를 간단히 하기 위해 하나의 지불에 한 동전을 사용한다고 가정하였다. 따라서 여러 동전으로 지불할 때 효율적으로 지불의원자성올 보장할 수 있는 방법에 대한 연구가 향후 필요하다.

References

  1. Proc. of the 15th ACM Symp. on Principles of Distributed Compution Atomicity in Eletronic Commerce D.Tygar
  2. Advances in Cryptology, Asiacrypt 1998, LNCS 1514 Off-line Fair Payment Protocols using Convertible Signatures C.Boyd;E.Foo
  3. Proc. of the 2nd Int. Workshop on Information Security, LNCS 1729 Money Conservation via Atomicity in Fair Off-Line E-Cash S.Xu;M.Yung;G.Zhang;H.Zhu
  4. Proc. of the 4th ACM Conf. on Computer and Communications Security Optimistic Protocols for Fair Exchange N.Asokan;M.Schunter;M.Waidner
  5. Proc. of the 6th Conf. on Computer and Communications Security Efficient Verifiable Encryption (and Fair Exchange) of Digital Signatures G.Atenise
  6. IEEE J. on Selected Areas in Communications v.18 no.4 Optimistic Fair Exchange of Digital Signatures N.Asokan;V.Shoup;M.Waidner
  7. Advances in Cryptology Crypto 1993, LNCS 773 Untraceable Off-line Cash in Wallets with Observers S.Brands
  8. Proc. of the 5th ACM Conf. on Computer and Communications Security A New Public Key Cryptosystem Based on Higher Residues D.Naccache;J.Stern
  9. Advances in Cryptology Crypto 1999, LNCS 1666 Separability and Efficiency for Generic Signature Schemes J.Camenisch;M.Michels
  10. BRICS, Tech. Rep. RS~98~27 A Group Signature Scheme Based on an RSA-Variant J.Camenisch;M.Michels
  11. Proc. of the 2nd Int. Conf. on Financial Cryptography, LNCS 1465 An Efficient Fair Off-Line Electronic Cash System with Extensions to Checks and Wallet with Observer A.Solages;J.Traore
  12. Int. J. of Information Security v.1 no.3 A New Electronic Check System with Reusable Refunds S.Kim;H.Oh
  13. Advances in Cryptology, Eurocrypt 1998, LNCS 1403 A New Public-Key Cryptosystem as secure as Factoring T.Okamoto;S.Uchiyama
  14. Advances in Cryptology, Crypto 1992, LNCS 740 Wallet Databases with Observers D.Chaum;T.P.Pedersen