Ⅰ . 서론
대리서명은 1996년 Mambo, Usuda 그리고 Okamoto에 의해 처음 제안된 개념으로, 원서명자로 불리는 한 사용자가 대리서명자로 불리는 다른 사용자에게 자신의 서명 권한을 위임하여 대리서명자가 원서명자 대신 서명을 생성할 수 있게 하는 방법이다.[1] 이러한 대리서명의 개념을 다중 사용자 환경 (multi-user setting)으로 확장하여, Zhang[2]과 Kim 등[3]은 각각 threshold 암호시스템과 비밀분산 기법 (secret sharing scheme)에 기반한 threshold 대리서명 기법을 제안하였다. 일반적으로 (t, n) threshold 대리서명 기법은 원서명자가 자신의 서명 권한을 n명의 대리서명자로 구성된 그룹에 위임하여 그룹에 속하는 t명 이상의 대리서명자가 서로 협력하여 대리서명을 생성한다. 안전한나ireshold 대리서명 기법은 다음의 안전성 조건을 만족해야 한다.[4]
•비밀성 (Secrecy): 원서명자의 개인키는 대리서명키의 부분 정보나 대리서명 등의 어떠한 공개된 정보로부터도 얻을 수 없어야 한다. 특히, 모든 대리서명자가 공모할 경우에도 원서명자의 개인키가 노출되지 않아야 한다.
•대리자 보호 (Proxy protected): 오직 위임받은 대리서명자만이 유효한 대리서명을 생성할 수 있으며, 원서명자라도 대리서명자의 역할을 수행할 수 없다.
•위조 방지 (Unforgeability): 유효한 대리서명은 t명 이상의 대리서명자의 협력에 의해서만 생성될 수 있다. 이는 t-1 명 이하의 대리서명자나 대리서명 권한을 위임받지 않은 제 삼자는 대리서명을 생성할 수 없음을 의미한다.
•부인 방지 (Nonrepudiation): 실제 서명에 참여한 대리서명자는 자신이 메시지에 서명했다는 사실을 부인할 수 없다. 이와 함께, 원서명자는 대리서명자 그룹에 자신의 서명 권한을 위임했음을 부인할 수 없다.
이러한 threshold 대리서명의 개념이 소개된 이후 여러 기법들[4-7]이 제안되었지만 모두 다양한 공격에 취약함이 증명되었다.[5,9,10]
최근 Hsu와 Wu는 자체인증 공개키 (Self-cer tified public key)를 사용하는 threshold 대리서명 기법을 제안하였다.[11]이 HW 기법에서 각 사용자의 공개키는 시스템 관리자 (System Authority (SA))에 의해 생성되어 계산적으로 위조불가능한 성질 (computational unforgeable property)을가지며. 이에 대응하는 개인키는 사용자에 의해 계산된다. 그러므로 사용자 인증을 위한 인증서가 필요하지 않고, 대신 사용자에 대한 인증은 자체인증 공개키를 사용하는 암호 기법자체의 검증 절차에 의해 암묵적으로 검증된다. 예를 들어, 서명 기법의 경우 주어진 서명에 대한 검증만으로 서명자에 대한 인증을 동시에 보장하는 것이다. 또한 HW 기법은 메시지복원형 (message recovery type)으로 시간정보나 개인식별정보와 같은 작은 길이의 메시지를 서명해야 하는 다양한 응용 프로토콜에 적용이 가능하다.
본 논문에서는 HW 기법이 논문에서 주장하는 부인 방지 (nonrepudiation) 성질을 만족하지 않음을 보인다. 이 기법에서는 원서명자가 SA를 속여 대리서명자의 허가 없이 threshold 대리서명을 생성할 수 있다. 이는 원서명자가 스스로 자신이 위임한 대리서명자 그룹의 임의의 t명이 생성한 것으로 검증되는 대리서명을 위조할 수 있다는 것을 의미한다. 이러한 공격은 Hsu와 Wu가 제안한 자체인증 공개키를 사용하는 대리서명 기법[12]에 대한 Shao[13]의 공격방법을 적용한 것으로, Hsu와 Wu가 제안한 일반적인 공개키 기반구조 (conventional PKI)에서 정의되는 threshold 대리서명 기법[14]과 Hsu, Wu 그리고 He가 제안한 대리 다중서명 기법[15]에 대한 취약성을 보이는데도 적용될 수 있다. 이러한 공격은 사용자가 자체인증 공개키를 발급받는 과정에서, 키를 발급해주는 SA가 사용자로부터 전달받은 정보에 대한 적절한 검증을 하지 않기 때문에 발생하는 문제이다.
본 논문의 구성은 다음과 같다. 먼저 II절에서 자체인증 공개키를 사용하는 threshold 대리서명 기법에 대해 소개한 다음, III절에서는 그 안전성을 분석하며, IV절에서 결론을 맺는다.
Ⅱ. 자체인증 threshold 대리서명 기법
HW 기법은 이산대수 기반의 자체인증 공개키를 사용하며 메시지 복구 (message recovery) 성질을 가진다. 그러므로 이 기법은 자체인증 공개키 시스템에서 사용자 등록을 관리하는 시스템 관리자 (SA) 가 필요하며 등록 (registration)과정을 통해 사용자가 SA로부터 자체인증 공개키를 받는다. 이어 대리서명 키를 생성하는 대리 비밀분산 생성 (proxy secret share generation). 그리고 이렇게 생성된 대리서명 키를 이용하여 대리서명을 생성하고 검증하는 대리서명 생성 (proxy signature gen eration)과 대리서명 검증 (proxy signature verification)의 네 단계로 구성된다.
먼저 p와 q를 두 큰 소수라 하자. 여기에서 q I (p-1)이고 g는 Fp상의 위수가 q인 부분군의 생성자 (generator)이다. 그리고 안전한 일방향 해쉬함수 \(H_{1}:\{0,1\}^{*} \rightarrow Z_{q}^{*}\)와 \(H_{2}:\{0,1\}^{*} \rightarrow F_{p}^{*}\), 그리고 h를 가정하자. 논문〔11〕에서는 H1과 H2의 구분 없이 하나의 일반적인 일방향 해쉬함수를 이용하여 표현하였지만, 본 논문에서는 그 역할을 구분하기 위하여 두 개의 해쉬함수로 표현하였다. 파라미터 (p,q,g)와 함수 H1, H2, h는 공개된다. IDi는 사용자 Ui에 대한 개인식별정보 (identity)로 정의된다. 논문〔11〕에서는 IDi가 \(Z_{q}^{*}\)의 원소로 사용되는데 이는 실제 문자열로 표현되는 개인식별정보에 대한 해쉬값으로 보면 무방할 것이다. SA의 개인키와 공개키는 각각 γ와 β로 \(\gamma \in Z_{q}^{*}\)이고 β=gγmodp 이다. 다음은 서명기법을 구성하는 네 단계에 대한 자세한 설명이다.
•등록: 각 사용자 Ui는 임의로 \(t_{i} \in Z_{q}^{*}\)를 선택하여 vi=gH1(t1||IDi)modp를 계산하고 (vi, IDi)를 SA에게 보낸다. SA는 임의로 \(k_{i} \in Z_{q}^{*}\)를 선택하고
yi=viH2(IDi)-1gkimodp
ei=ki+H1(yi|lIDi)γmodq (1)
를 계산하여 (yi, ei)를 Ui에게 보낸다. 그러면 Ui는 xi=ei+H1(t1||IDi)modq 를 계산하고 그 유효성을 다음 식을 통해 확인한다.
βH1(yi|lIDi)H2(IDi)yi=gximodp (2)
이 식이 성립하면 Ui는 (xi, yi)를 자신의 개인키와 공개키 쌍으로 받는다. 그리고 SA는 등록 과정 완료 후, Ui의 공개키 yi를 공시한다.
•대리 비밀분산생성: Uo를원서명자, G= {U1,...,Un} 를 "명의 대리서명자 Ui로 구성된 그룹, 그리고 GID를 G에 속한 서명자들의 개인식별정보를 포함하는 집합이라 하자. 그리고 mw는 원서명자와 대리서명자들의 개인식별정보와 위임 기간 (delegation duration), threshold 값 t 등의 정보를 담고 있는 위임장 (warrant)이라 하자. Uo는 자신의 서명 권한을 위임하기 위해 다음의 절차를 수행한다.
① 먼저 임의로 \(k \in Z_{q}^{*}\)를 선택하고, 다음 값을 계산한다.
\( K=g^{k}\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{n} H_{2}\left(I D_{i}\right) y_{i}\right)^{-1}\\ \sigma=H_{1}\left(m_{w}\|K\| G I D\right) x_{o}+k \bmod q\)
② 계수가 \(Z_{q}^{*}\)의 원소인 (t-1)차 다항식 f(x) = f(x) = σ + a1x + a2x2 +…+at-1xt-1 결정하고 계수로부터 각 i(1≤i≤t-1)에 대해 Ai=gaimodp를 계산한다.
③ 대리 비밀분산 σi=f(IDi)를 각 대리서명자 Ui ∈ G에게 안전한 경로 (secure chan- nel)로 전송한다. 원서명자 Uo로부터 σi를 받은 각 사용자 Ui ∈ G는 다음 식으로부터 이 값의 유효성을 확인하며, 만일 유효할 경우 대리비밀분산 σi가 검증된다.
\(g^{\sigma_{i}}=\left(\beta^{H_{1}(y \| I D)} H_{2}\left(I_{o}\right) y_{o}\right)^{H_{1}\left(m_{i} \| I G I D\right)}\\ KB \sum_{j=1}^{n} H_{1}\left(y \xi I D_{j}\right)\left(\prod_{j=1}^{n} H_{2}\left(I_{j}\right) y_{j}\right)\left(\prod_{j=1}^{t-1} A_{j}^{I D_{i}^{j}}\right) \bmod p .\)
•대리서명의 생성: 주어진 메시지 m에 대해, G에 속하는 t명 이상의 대리서명자는 Uo를 대신해서 유효한 대리서명을 생성할 수 있다. 일반성을 잃지 않고 D= {U1,...,Ut}를 실제 서명에 참여하는 대리서명자라 하고 ASID를 D에 속하는 모든 사용자의 개인식별정보의 집합이라 하자. D에 속하는 모든 사용자는 협력하여 Uo를 대신해 m에 대한 서명을 다음과 같은 절차에 따라 생성한다.
① 각 사용자 Ui ∈ D는 임의로 \(z_{i} \in Z_{q}^{*}\)를 선택하고 ri=gzimodp를 계산하여 공개한다.
② 다른 사용자들의 ri를 얻은 다음, 각 사용자 Ui ∈ D는 다음을 계산한다.
\(\begin{aligned} &R=(m \| h(m)) \prod_{i=1}^{t} r_{i}^{r_{i}} \bmod p \\ &s_{i}=z_{i} r_{i}+L_{i} \sigma_{i} H_{1}(G I D\|R\| K) \\ &\quad+x_{i} H_{1}(A S I D\|R\| K) \bmod q \end{aligned}\)
여기에서 \(L_{i}=\prod_{\substack{j=1 \\ i \neq j}}^{t}-I_{j}\left(I_{i}-I_{j}\right)^{-1} \bmod q\)이다.
Ui는 si를 지정된 대표자 (designated clerk)에게 전송한다.
③ si를 받은 대표자는 다음을 확인하여 유효성을 검증한다.
\(g^{s_{i}}=r_{i}^{r_{i}}\left(\left(\beta^{H_{1}(y \| I D)} H_{2}\left(I_{o}\right) y_{o}\right)^{H_{1}\left(m_{l}\|I\| \mid G I D\right)} K\right.\\ \left(\sum_{\beta^{i=1}}^{u} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\left.\prod_{j=1}^{n} H_{2}\left(I_{j}\right) y_{j} \prod_{j=1}^{t-1} A_{j}^{I D_{j}^{j}}\right)\right)^{L_{i} H_{1}\left(G I D\|\|_{k} \kappa^{\prime}\right)}\\ \times\left(\beta^{H_{1}\left(y_{l} I D_{i}\right)} H_{2}\left(I D_{i}\right) y_{i}\right)^{H_{1}\left(A S I D \| F K_{h}\right)} \bmod p \)
만일 유효하다면, (ri, si) 는 m에 대한 Ui의 유효한 개별 대리서명 (individual proxy signature)이다. 만일 모든 i(1≤i≤t)에 대해 (ri, si)가 검증되면, 대표자는 \(S=\sum_{i=1}^{t} s_{i} \bmod q\)를 계산하고 m에 대한 대리서명으로 (K, R, S, mw, GID, ASID)을 제시한다.
•대리서명의 검증: 메시지 mw에 대한 대리서명 (K, R, S, mw, GID, ASID)을 받은 검증자는 위임장 mw로부터 원서명자의 개인식별정보와 대리서명자 그룹을 확인하고 ASID로부터 실제 서명자들의 개인식별정보를 확인한다. 이어서 SA나 대리서명자 그룹으로부터 필요한 공개키를 확보하여 메시지 m과 해쉬값 h(m)의 연접을 다음의 식을 통해 구한다.
\(m \| h(m)=R g^{S}\left(\left(\beta^{H_{1}\left(y \| I D_{d}\right)} H_{2}\left(I_{o}\right) y_{o}\right)^{H_{1}\left(m\|λ|\| G I D\right)}\right.\\ K\left(\sum_{\beta^{i=1}}^{u} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\left.\prod_{i=1}^{n} H_{2}\left(I_{i}\right) y_{i}\right)\right)^{H_{1}\left(G I D i R \|_{K}\right)}\\ K\left(\sum_{\beta^{i=1}}^{u} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{t} H_{2}\left(D_{i}\right) y_{i}\right)^{H_{1}\left(A S I D l k^{\prime} K^{\prime}\right)} \bmod p\) (3)
대리서명 (K, R, S, mw, GID, ASID)은 m에 대한 해쉬값과h(m)이 일치할 경우 유효하다.
Ⅲ. 안전성 분석
개인식별정보 IDo를 가진 사용자 Uo가 대리서명자 그룹 G= {U1,...,Un}의 동의없이 threshold 대리서명을 생성하려고 한다고 가정하자. GID를 G에 속하는 서명자들의 모든 개인식별정보들의 집합이라 하고 ASID를 Uo가 위조할 서명의 실제 서명자로 정한 G의 구성원 {U1,...,Ut}의 모든 개인식별정보들의 집합이라 하자. 그리고 G의 각 구성원 Ui(i= 1, ..., n)는 등록 과정을 거쳐, 식 (2)의 관계를 만족하는 개인키/공개키 쌍 (xi, yi)을 갖는다.
메시지 m에 대해, Uo는 임의로 \(k \in Z_{q}^{*}\)를 선택하고 각 i(1≤i≤t)에 대해 \(z_{i} \in Z_{q}^{*}\)를 선택한 후,
\(r_{i}=g^{z_{i}}(i=1,2, \cdots, t), \quad R=m \| h(m) \prod_{i=1}^{t} r_{i}^{r_{i}}\\ K=g^{k}\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{n} H_{2}\left(I D_{i}\right) y_{i}\right)^{-1}modp\)
를 계산하고 다음 값을 정한다.
\(\alpha=\frac{H_{1}(A S I D\|R\| K)}{H_{1}\left(m_{w}\|K\| G I D\right) H_{1}(G I D\|R\| K)}\)
여기에서 mw는 원서명자의 개인식별정보와 GID, 그리고 위임 기간 등의 정보를 포함하는 위조된 위임장이다.
위조된 서명이 ASID에 의해 서명된 것처럼 보이게 하기 위해, Uo는 등록단계에서 SA를 다음과 같이 속인다. 먼저, Uo는 임의로 \(t_{o} \in Z_{q}^{*}\)를 선택하고,
\(v=g^{H_{1}\left(t_{o} \| I D_{o}\right)}\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{t} H_{2}\left(I_{i}\right) y_{i}\right)^{-\alpha} \bmod p\)
를 계산한 후, (v, IDo)를 SA에게 보낸다. 그러면 SA는 등록 과정의 절차 (식 (1))에 따라 \(z \in Z_{q}^{*}\)를 임의로 선택한 후, yo=vH2(IDo)-1gzmodp와 e=z+H1(to||IDo)γmodq를 계산하고, (yo, e)를에게 반환한다. Uo는 xo=e + H1(to||IDo)modg 를 계산하고
\(\beta^{H_{1}\left(y_{n} \| I D_{n}\right)} H_{2}\left(I D_{o}\right) y_{o}\times\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I \left.\prod_{i=1}^{t_{n}} H_{2}\left(I D_{i}\right) y_{i}\right)^{\alpha}=g^{x_{i}} \bmod pD_{i}\right)\right.\)
이 성립하면, (xo, yo)를 자신의 개인키/공개키 쌍으로 받아들인다. 이 과정은 SA가 식 (1)의 계산을 정확하게 수행한 것인지 Uo가 확인하는 것이다. 이러한 과정이 끝나면 SA는 Uo의 공개키 yo를 공시한다. 이제 Uo는
\(\begin{gathered} S^{\prime}=\sum_{i=1}^{t_{o}} z_{i} r_{i}+x_{o} H_{1}\left(m_{w}\|K\| G I D\right) H_{1}(G I D\|R\| K) \\ +k H_{1}(G I D\|R\| K) \bmod q \end{gathered}\)
를 계산하고 메시지 m에 대한 대리서명으로 (K, R, S', mw, GID, ASID)를 제시한다. 검증자는
\(g^{k}=K\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{n} H_{2}\left(I D_{i}\right) y_{i}\right)modp\)
그리고
\(g^{x_{o}}=\beta^{H_{1}\left(y_{u} \| I D_{u}\right)} H_{2}\left(I D_{o}\right) y_{o} \times\left(\sum_{\beta^{i=1}}^{i \|} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{t_{n}} H_{2}\left(I D_{i}\right) y_{i}\right)^{\alpha} \bmod p\)
으로부터 아래와 같은 관계를 확인할 수 있다.
\(R g^{-S}\left(\left(\beta^{H_{1}\left(y_{o} \| I D_{o}\right)} H_{2}\left(I D_{o}\right) y_{o}\right)^{H_{1}\left(m_{n}\|K\| \mid G I D\right)}\right.\\ K\left(\sum_{\beta^{i=1}}^{n} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\left.\prod_{i=1}^{n} H_{2}\left(I D_{i}\right) y_{i}\right)\right)^{H_{1}(G I D \||| R \mid K)}\\ \times\left(\sum_{\beta^{i=1}}^{t_{0}} H_{1}\left(y_{i} \| I D_{i}\right)\right.\left.\prod_{i=1}^{t_{t}} H_{2}\left(I D_{i}\right) y_{i}\right)^{H_{1}(A S I D|| R \mid K)}\\ =m \| h(m)\)
그러므로, 검증자는 식 (3)을 계산하여 m||h(m) 을 얻게 되므로, S'의 유효성을 검증하게 된다. 즉, S'는 메시지 m에 대해 원서명자 Uo가 ASID의 구성원들에 서명권한을 위임하여 생성한 것으로 위조된 threshold 대리 서명이다.
이러한 공격은 근본적으로 HW 기법에서 사용하는 자체인증 공개키의 생성과정의 문제에 기인한다. 등록 과정에서 SA는 키를 발급받으려는 사용자로부터 정보를 받아 이에 대한 아무런 검증 없이 키 생성에 필요한 값만 계산하여 사용자에게 전송한다. 그러므로 위의 공격과 같이 원하는 형태의 키를 얻기 위해 공격자는 등록 과정에서 처음 전송 정보를 조작하는 것이 가능하다.
Ⅴ. 결론
본 논문에서는 Hsu와 Wu가 제안한 자체인증 공개키를 사용하는 threshold 대리서명 기법이 원서명자 위조공격에 취약함을 보였다. 이러한 공격은 서명 기법이 사용하는 자체인증 공개키 생성 방식의 취약성에서 비롯한 것으로 원사용자는 시스템 관리자를 속임으로써 주어진 메시지에 대한 서명을 위조할 수 있음을 보였다. 이를 통해 HW 기법이 부인방지 성질을 만족하지 않음을 알 수 있다.
References
- M. Mambo, K. Usuda, E. Okamoto, 'Proxy signatures for delegating signing operation,' Proc. 3rd ACM CCS, pp. 48-57, 1996
- K. Zhang, 'Threshold proxy signature schemes,' Information Security - ISW '97, Lecture Notes in Comput. Sci. Vol. 1396, pp. 282-290, 1997
- S. Kim, S. Park, D. Won, 'Proxy signatures, revisited,' Information and Communications Security - ICICS '97, Lecture Notes in Comput. Sci. Vol. 1334, pp. 223-232, 1997
- M.-S. Hwang, E.J.-L. Lu, I.-C. Lin, 'A practical (t,n) threshold proxy signature scheme based on the RSA cryptosystem. IEEE T. Knowl. Data En., Vol.15(6), pp. 1552-1560, 2003 https://doi.org/10.1109/TKDE.2003.1245292
- H.M. Sun. 'An efficient nonrepudiable threshold proxy signatures with known signers.' Comput. Commun. Vol. 22(8), pp. 717-722, 1999 https://doi.org/10.1016/S0140-3664(99)00029-8
- C.-L. Hsu, T.-S. Wu, T.-C. Wu, 'New nonrepudiable threshold proxy signature scheme with known signers. J. Syst. Software, vol. 58, pp. 119-124, 2001 https://doi.org/10.1016/S0164-1212(01)00032-2
- C.-Y. Yang, S.-F. Tzeng, M.-S. Hwang, 'On the efficiency of nonrepudiable threshold proxy signatures with known signers. J. Syst. Software, Vol.22(9), pp. 1-8, 2003 https://doi.org/10.1016/0164-1212(93)90117-G
- S.-F. Tzeng, M.-S. Hwang, C.-Y. Yang, 'An improvement of nonrepudiable threshold proxy signature scheme with known signers,' Comput. Secur., Vol.23, pp. 174-178, 2004 https://doi.org/10.1016/j.cose.2003.12.001
- G. Wang, F. Bao, J. Zhou, R.H. Deng, 'Comments on 'A practical (t,n) threshold proxy signature scheme based on the RSA cryptosystem',' IEEE T. Knowl. Data En., Vol. 16(10), pp. 1309-1311, 2004 https://doi.org/10.1109/TKDE.2004.52
- Z. Tan, Z. Liu, 'On the security of some nonrepudiable threshold proxy signature schemes with known signers, Cryptology ePrint Archive, Report 2004/234
- C.-L. Hsu, T.-S. Wu 'Self-certified threshold proxy signature schemes with message recovery, nonrepudiation, and traceability,' Appl. Math. Comput., Vol.164(1), pp. 201-225, 2005 https://doi.org/10.1016/j.amc.2004.04.097
- C.-L. Hsu, T.-S. Wu, 'Efficient proxy signature schemes using self-certified public keys,' Appl. Math. Comput., Vol.152(3), pp. 807-820, 2004 https://doi.org/10.1016/S0096-3003(03)00596-4
- Z. Shao, 'Improvement of efficient proxy signature schemes using self-certified public keys,' Appl. Math. Comput., in press, 2005
- C.-L. Hsu, T.-S. Wu, 'Efficient nonrepudiable threshold proxy signature scheme with known signers against the collusion attack,' Appl. Math. Comput., in press
- C.-L. Hsu, T.-S. Wu, W.-H. He, 'New proxy multi-signature scheme,' Appl. Math. Comput., Vol. 162(3), pp. 1201-1206, 2005 https://doi.org/10.1016/j.amc.2004.03.001