I. 서론
최근 컴퓨터 네트워크와 서비스 제공 서버 등의 발전으로 인해 하나의 서버에 대한 자원의 제약성을 높이기 위한 방안으로 다중 서버 환경이 제안되었다.
다중 서버 환경에서는 서비스를 제공받고자 하는 사용자가 원격으로 서버에 접속하기 때문에 데이터 도청 및 위변조 공격에 노출될 수 있고, 이를 방지하기 위한 안전한 인증 기술이 필요하다[1].
사용자가 스마트카드를 사용하여 다중 서버에서 제공하는 서비스를 이용할 수 있는 인증 프로토콜은 연산량을 줄이기 위하여 일방향 함수와 베타적 논리합을 이용한 연산으로 이루어져 있으며 이러한 인증 프로토콜은 지속적으로 연구가 진행되고 있다[2,3,4,5,6].
최근, Liao 등[7]은 사용자 익명성을 제공하기 위하여 다중 서버 환경의 인증 프로토콜을 제안하였다. 하지만 Hsiang 등[8]은 Liao 등[7]의 인증 프로토콜이 서버 스푸핑 공격과 내부자 공격에 취약하다는 점을 지적하였고, 이를 개선한 인증 프로토콜을 제안하였다. 그러나 Sood 등[9]과 Lee 등[10]은 Hsiang 등[8]의 인증 프로토콜이 여전히 서버 스푸핑 공격에 취약하고 검증자 유출 공격, 도난된 스마트카드 공격에 취약함을 지적하였으며, 이에 대한 안전성을 향상시킨 인증 프로토콜을 제안하였다.
이후, Xiong Li[11] 등은 Sood 등[9]의 인증 프로토콜이 검증자 유출 공격, 도난된 스마트 공격, 인증 단계의 부적합성의 문제점을 제기하고 새로운 인증 프로토콜을 제안하였으나, Chun-Ta Li 등[12]은 Xiong Li 등[11]의 논문이 사용자 위장 공격, 세션키 유출 공격, 서비스 거부 공격에 취약하다고 지적하여 개선된 인증 프로토콜을 제안하였다.
그러나, Chun-Ta Li 등[12]이 제안한 인증 프로토콜은 취약점 분석에 있어서 사용자 가장 공격 등에 문제가 있고 부적합한 인증 단계를 가지고 있다. 또한, 사용자가 스마트카드에 대한 읽기 및 쓰기 권한을 가지고 있어서, 공격자는 스마트카드 읽기 및 쓰기 권한을 이용하여 스마트카드 위변조가 가능하다는 문제점이 발생할 수 있다.
따라서 본 논문에서는 Chun-Ta Li 등[12]이 제안한 인증 프로토콜의 문제점을 해결하면서 Xiong Li 등[11]의 인증 프로토콜의 취약점을 모두 해결하는 안전성이 향상된 스마트카드 기반의 인증 프로토콜을 제안한다.
본 논문의 구성은 다음과 같다. 2장에서는 Xiong Li 등[11]과 Chun-Ta Li 등[12]의 인증 프로토콜 및 취약점을 분석한다. 3장에서는 Xiong Li등[11]의 프로토콜을 개선하고 취약성을 보완한다. 4장에서는 개선된 프로토콜의 안전성 및 효율성을 분석하고, 마지막으로 5장에서 결론을 맺는다.
II. 관련 연구
2.1 Xiong Li 등의 인증 프로토콜
본 절에서는 Xiong Li 등[11]의 스마트카드를 이용한 동적 ID 기반 인증 프로토콜을 분석한다.
Xiong Li 등[11]의 인증 프로토콜은 사용자와 서비스 제공 서버, 인증 서버로 구성되어 있으며 사용자가 서비스 제공 서버에 로그인을 수행하는 것으로 사용자, 서비스 제공 서버, 인증 서버 간의 인증이 수행된다.
Xiong Li 등[11]의 인증 프로토콜에 사용된 파라미터들은 Table 1. 과 같다.
Table 1. Notations used in the Xiong Li et al’s Protocol
Xiong Li 등[11]의 인증 프로토콜은 등록 단계, 로그인 단계, 인증 및 키동의 단계의 3단계로 구성되어 있으며 Fig.1.과 같다. CS는 신뢰할 수 있는 인증 서버로써 Ui와 Sj의 등록 및 인증을 담당한다.
Fig. 1. Xiong Li et al’s authentication protocol
2.1.1 등록 단계
등록 단계에서는 Ui, Sj가 CS에게 등록을 수행하고 CS는 Ui에게 스마트카드를 발행한다.
• Step 1. Sj는 CS에게 자신의 ID 값인 SIDj를보안 채널로 전송하고 CS는 다음과 같은 식을계산하여 Sj에게 보안 채널을 통해 전송한다.
h(SIDj||y) (1)
h(x||y) (2)
• Step 2. Ui는 사용자의 IDi, Pi와 사용자가 선택한 b값을 선택하고 다음과 같은 식을 계산한 후,(IDi,Ai)를 보안 채널을 통해 CS에게 전송한다.
Ai = h(b||Pi) (3)
• Step 3. CS는 Bi를 계산하고 스마트카드 발행을 위한 Ci, Di, Ei를 계산하고 (Ci , Di , Ei, h(*), h(y))를 Ui의 스마트카드에 저장한다.
Bi = h(IDi||x) (4)
Ci = h(IDi||h(y)||Ai) (5)
Di = Bi⊕h(IDi||Ai) (6)
Ei = Bi⊕h(y||x) (7)
• Step 4. CS 는 자신이 생성한 스마트카드 (Ci , Di , Ei, h(*), h(y))를 Ui에게 보안 채널을 통해발행한다.
• Step 5. Ui는 자신의 랜덤값 b를 스마트카드에 포함한 후에(Ci , Di , Ei, h(*), h(y), b)를 생성한다.
2.1.2 로그인 단계
로그인 단계에서는 사용자 Ui가 로그인을 수행하기 위하여 서비스 제공 서버 Sj에게 로그인 요청 메시지를 전송하는 과정이다.
• Step 1. Ui는 자신의 스마트카드를 카드 리더기에 넣고 자신의 아이디 IDi와 패스워드 Pi, 서비스 제공 서버 Sj의 아이디 SIDj를 함께 삽입한다.
• Step 2. 스마트카드는 Ai = h(b||Pi)를 생성하고 Ai값을 이용하여 C′i를 계산한다. 이후, 다음 식과 같이 스마트카드에 포함되어 있는 Ci와 스마트카드가 계산한 C′i를 비교하여 일치하면 스마트카드의 정당한 소유자로 판단한다.
C'i = h(IDih(y)||Ai) (8)
Ci = ?Ci' (9)
• Step 3. 스마트카드의 정당한 소유자를 위한 검증이 끝나면 스마트카드는 랜덤값 Ni1를 선택한후, 다음과 같이 Bi, Fi, Gi, Pij, CIDi 를 계산한 후 로그인 값 (Fi, Gi, Pij, CIDi)를 Sj에게 공개된 채널을 통해 전송한다.
Bi = Di⊕h(IDi||Ai) (10)
Fi = h(y)⊕Ni1 (11)
CIDi = Ai⊕h(Bi||Fi||Ni1) (12)
Pij = Ei⊕h(h(y)||Ni1||SIDj) (13)
Gi = h(Bi||Ai||Ni1) (14)
2.1.3 인증 및 키동의 단계
인증 및 키동의 단계에서는 수신된 로그인 요청 메시지를 이용하여 사용자 Ui, 서비스 제공 서버 Sj, 인증 서버 CS 간의 검증을 수행한다.
• Step 1. Sj는 수신된 로그인 메시지를 이용하여다음과 같은 Ki와 Mi를 계산한다. 이후, 로그인 요청메시지 (Fi, Gi. Pij, CIDi, SIDj, Ki, Mi)를 생성하여 CS에게 전송한다. Ni2는 Sj가 선택한 랜덤값이다.
Ki = h(SIDj||y)⊕Ni2 (15)
Mi = h(h(x||y)||Ni2) (16)
• Step 2. CS는 Sj에게 로그인 요청 메시지를 수신하고 Ni2를 계산한다. 계산된 Ni2값을 이용하여 M′i를 계산하고 다음과 같이 수신된 로그인 요청 메시지의 Mi과 CS가 계산한 M′i를 비교하여 일치하면 Sj는 CS에 의해 인증된다. 만약 일치하지 않으면 세션을 종료한다.
Ni2 = Ki⊕h(SIDj||y) (17)
M'i = h(h(x||y)||Ni2) (18)
Mi =?Mi' (19)
• Step 3. CS는 다음과 같이 Ni1와 Bi를 계산하고 계산된 Bi와 Ni1값을 이용하여 다음과 같은식의 Ai를 생성한다.
Ni1 = Fi⊕h(y) (20)
Bi = Pij⊕h(h(y)||Ni1||SIDj)⊕h(y||x) = E⊕h(y||x) (21)
Ai = CIDi⊕h(Bi||Fi||Ni1) (22)
• Step 4. CS는 Step 3.에서 계산한 Bi, Ai, Ni1 값을 이용하여 다음과 같은 G′i를 계산하고 로그인 요청 메시지의 Gi와 CS가 계산한 G′i를 비교하여 일치하면 사용자 Ui는 CS에게 정당한 사용자로 인증된다.
G'i = h(Bi||Ai||Ni1) (23)
Gi = ?Gi' (24)
• Step 5. CS는 랜덤값 Ni3을 생성하고 Qi, Ri, Vi, Ti를 계산한다. CS는 계산된 상호 인증 메시지 (Qi, Ri, Vi, Ti)를 Sj에게 전송한다.
Qi = Ni1⊕Ni3⊕h(SIDj||Ni2) (25)
Ri = H(Ai||Bi)⊕h(Ni1⊕Ni2⊕Ni3) (26)
Vi = h(h(Ai||Bi)||h(Ni1⊕Ni2⊕Ni3)) (27)
Ti = Ni2⊕Ni3⊕h(Ai||Bi||Ni1) (28)
• Step 6. Sj는 CS로부터 상호 인증 메시지를 수신하고 다음과 같은 Ni1⊕Ni3, h(Ai∥Bi), Vi를 계산하고 상호 인증 메시지의 Vi값과 Sj가 생성한 V′i를 비교하여 일치하면 CS 는 Sj에게 정당한 인증 서버로 검증된다. Sj는 (Vi, Ti)를 Ui에게 전송한다.
Ni1⊕Ni3 = Qi⊕h(SIDj||Ni2) (29)
h(Ai||Bi) = Ri⊕h(Ni1⊕Ni3⊕Ni2) (30)
V'i = h(h(Ai||Bi)||h(Ni1⊕Ni3⊕Ni2) (31)
Vi = ?Vi' (32)
• Step 7. Ui는 Sj로부터 (Vi, Ti) 메시지를 수신하고 Ni2⊕Ni3, V′i를 계산한다. 이후, 다음과 같이 수신된 Vi 와 V′i 를 비교하여 일치하면 CS와 Sj는 정당한 서비스 제공 서버로 검증된다. 따라서 Ui , Sj, CS 는 공통 세션키인 SK = h(h(Ai∥Bi)∥ (Ni1⊕Ni2⊕Ni3)를 생성할 수 있다.
Ni2⊕Ni3 = Ti⊕h(Ai||Bi||Ni1) (33)
V'i = h(h(Ai||Bi)||h(Ni2⊕Ni3⊕Ni1)) (34)
Vi = ?Vi' (32번과동일) (35)
SK = h(h(Ai||Bi)||(Ni1⊕Ni2⊕Ni3)) (36)
2.2 Xiong Li 등의 인증 프로토콜 취약점 분석
Xiong Li 등[11]의 인증 프로토콜은 스마트카드 권한 문제, 서비스 거부 공격, 재전송 공격에 취약하며 관련된 분석 내용은 아래와 같다.
2.2.1 스마트 카드 권한 문제
등록 단계에서 사용자 Ui는 스마트카드에 대한 쓰기 권한을 가짐으로써 자신의 랜덤값 b를 스마트카드에 저장할 수 있다. 사용자에게 스마트카드 쓰기 권한을 부여하게 되면 인가된 사용자로 가장하는 공격자 또한 스마트카드에 대한 쓰기 권한을 가질 수 있다.
2.2.2 서비스 거부 공격
공격자 Uk가 Sj에게 로그인 요청 메시지를 전송할 때 많은 양의 동일한 로그인 요청 메시지를 전송하게 되면 서비스를 제공하는 서버 Sj의 서비스 가용성에 대한 문제가 발생할 수 있다.
(n = 1,2,…,n.)일 때, 공격자 UKn은 공격자가 선택한 랜덤값 Nkn들을 생성한다. 이후, FKn = NKn ⊕h(y), PKn = Ei ⊕h(h(y)∥NKn∥SIDj, CIDKn = Ai⊕h(B i∥FKn∥NKn), GKn = h(Bi∥Ai∥NKn)을 계산하여 (CIDK1, FK1, GK1, PK1), (CIDK2, FK2, GK2, PK2),…,(CIDKn, FKn, GKn, PKn)의 로그인 요청 메시지를 전송한다. 즉, 공격자는 동일한 IDK 로 NK1,NK2,…,NKn.을 생성하여 로그인을 수행할 수 있기 때문에 서비스 가용성 침해에 대한 문제가 발생할 수 있다.
2.2.3 재전송 공격
공격자는 이전 세션의 로그인 요청 메시지 (\(F^{n-1}_i\), \(G^{n-1}_i\), CIDi,\(P^{n-1}_i\), \(K^{n-1}_i\), \(M^{n-1}_i\), SIDj)를 안다고 가정했을 때, \(N^{n-1}_{i2}\) = \(K^{n-1}_i\)⊕h(SIDj∥y)를 계산할 수 있다.
따라서 \(N^{n-1}_{i2}\)을 통해 \(M^{n-1}_i\) = h(h(x∥y)\(N^{n-1}_{i2}\))을 계산할 수 있고, 생성된 \(M^{n-1}_i\)은 로그인 요청 메시지의 \(M^{n-1}_i\)과 일치하기 때문에 Sj는 CS 에 의해 인증될 수 있다. Ui에 대한 검증을 수행하기 위하여 \(N^{n-1}_{i2}\) = \(F^{n-1}_i\)⊕h(y)을 통해 \(B^{n-1}_i\)=\(P^{n-1}_{ij}\) ⊕h(h(y)||\(N^{n-1}_{i1}\)||SIDj)⊕h(x||y)를 계산할 수 있으며 \(A^{n-1}_{i}\)=CIDi⊕h(\(B^{n-1}_i\)||\(N^{n-1}_{i1}\)||\(F^{n-1}_i\))을 계산하고 \(G^{n-1}_i\)=h(\(B^{n-1}_i\)||\(A^{n-1}_{i}\)||\(N^{n-1}_{i1}\))을 도출할 수 있다. 따라서 스마트카드의 \(G^{n-1}_i\)과 자신이 생성한 \(G^{n-1}_i\)과 비교하여 일치하면 Ui는 CS에 의해 인증된다. 동일한 방법으로 공격자는 이전의 사용했던 로그인 응답 메시지 및 상호 인증 메시지를 이용하여 공통 세션키를 생성하고 Ui와 Sj, CS는 각 개체에 대한 인증을 수행할 수 있다.
2.3 Chun-Ta Li 등의 인증 프로토콜
Chun-Ta Li 등[12]의 인증 프로토콜은 기존의 Xiong Li 등[11]의 인증 프로토콜의 안전성의 문제를 제기하고 개선한 인증 프로토콜이다.
인증 방식은 Xiong Li 등의 인증 프로토콜과 동일하게 구성되어 있으며 본 절에서는 Chun-Ta Li 등[12]의 인증 프로토콜에 대한 부적합한 인증 절차와 취약점 분석에 있어서 사용자 가장 공격 등에 문제를 분석하기 위하여 인증 및 키동의 단계의 일부분을 설명한다.
• Step 1. Ui는 로그인 요청 메시지 (TIDi, Fi, Gi)를 Sj에게 전송한다.
• Step 2. Sj는 Sj의 랜덤값 Ni2를 생성하고 자신의 로그인 요청 값인 Ki, Mi를 생성하고 (TIDi, Fi, Gi, Ki, Mi)를 CS에게 전송한다.
• Step 3. CS는 Sj의 랜덤값 Ni2을 계산하여 M′i값을 도출한다. 이후, 로그인 요청 메시지의 Mi값과 자신이 계산한 M′i을 비교하여 일치하면 Sj에 대한 검증이 이루어지게 된다.
• Step 4. CS는 검증 테이블에서 검증자 Bi를 검색하고 Bi와 로그인 요청메시지를 통해 Ni1을 도출할 수 있으며 이를 통해 G′i를 계산한다. 이후, 자신이 계산한 G′i와 로그인 요청 메시지의 Gi를 비교하여 일치하면 Ui는 정당한 사용자로 CS에게 검증된다.
• Step 5. CS는 로그인 요청 메시지에서 받은 TIDi 값을 TID′로 업데이트한다.
2.3.1 부적합한 인증
2.3절의 Step 2. 단계에서 Sj는 자신의 로그인 요청 값을 생성하고 (TIDi, Fi, Gi, Ki, Mi)를 CS에게 전송한다. 이후, CS는 Ni2을 계산하여 M′i값을 도출함으로써 Sj에 대한 검증을 수행하지만 Ni2을 계산하는 과정에서 CS는 해당하는 서비스 제공 서버에 대한 j번째 SID를 알 수 없기 때문에 Ni2 값을 계산할 수 없고, 다중의 서비스 제공 서버 중 어떠한 서버가 인증을 요청하였는지 알 수 없다. 따라서 CS는 Sj에 대한 인증을 수행할 수 없다.
2.3.2 부적절한 취약점 분석
Chun-Ta Li 등[12]은 Xiong Li 등[11]의 인증 프로토콜이 사용자 가장 공격과 세션키 유출 공격에 취약하다고 문제를 제기하였으나 잘못된 방법으로 취약점을 도출하였다.
공격자 UK가 사용자 Ui의 스마트카드에 전력 분석 공격을 통해 스마트카드 내부 정보를 획득하였다고 가정하였을 때, 공격자 UK는 스마트카드 (CK, DK, EK, h(), h(y), b)를 가질 수 있다.
공격자 Ui는 자신의 IDK와 PK를 삽입하여 \(A_{K}=h\left(b \| P_{K}\right), h\left(I D_{K} \| A_{K}\right)\)를 계산하고 \(B_K=D_K\oplus h\left(I D_{K} \| A_{K}\right)\)를 도출할 수 있으며 BK값을 통해 h(y||x)를 도출하면 사용자 가장 공격과 세션키 유출 공격이 가능하다고 주장하였다.
하지만, \(B_{K}=D_{K} \oplus h\left(I D_{K} \| A_{K}\right)\)에서 \(h\left(I D_{k} \| A_{k}\right)\)는 공격자의 IDk, Pk로 계산된 값이지만 DK는 도난된 사용자 Ui의 스마트카드에 포함된 Di와 동일하다. 즉, 사용자가 생성한 값 Di와 공격자가 생성한 값 \(h\left(I D_{k} \| A_{k}\right)\)을 통해 공격자의 BK값을 도출할 수 없으므로 h(x||y)값 또한 도출할 수 없다. 따라서 Xiong Li 등[11]의 인증 프로토콜은 사용자 가장 공격과 세션키 유출 공격에 대해 안전하다.
III. 제안하는 인증 프로토콜
본 논문에서 제안하는 인증 프로토콜은 사용자, 서비스를 제공하는 서버 및 인증 서버로 구성되어 있으며 사용자가 서비스 제공 서버에 로그인을 하는 것으로 각각에 대한 인증을 수행한다.
제안하는 인증 프로토콜에서 사용되는 파라미터 값들은 Table 2.와 같다.
Table 2. Notations used in the proposed Protocol
3.1 인증 프로토콜
제안하는 인증 프로토콜의 수행 단계는 3단계로 이루어져 있으며 등록 단계, 로그인 단계, 인증 및 키동의 단계 순으로 Fig.2.와 같이 수행된다. CS는 신뢰할 수 있는 인증 서버로써 Ui와 Sj의 등록 및 인증을 담당한다. 제안하는 인증 프로토콜은 타임 스탬프를 사용하기 때문에 Ui와 Sj 및 CS는 시간 동기화를 수행한다.
Fig. 2. The proposed authentication protocol
3.1.1 등록 단계
등록 단계에서는 Ui, Sj가 CS에게 등록을 수행하고 CS는 Ui에게 스마트카드를 발행한다.
• Step 1. Sj는 CS에게 자신의 ID 값인 SIDj를 보안 채널로 전송하고 CS는 Sj에게 다음과 같은 식을 계산하여 보안 채널을 통해 전송한다.
\(h(SID_j ||y)\) (37)
\(h(x||y)\) (38)
• Step 2. Ui는 사용자의 아이디 IDi, 패스워드 Pi를 선택하고 UIi를 계산하여 CS에게 등록 요청 메시지 (IDi, UIi)를 전송한다.
\(UI_i = h(ID_i||h(P_i))\) (39)
• Step 3. CS는 사용자 검증자 값 UserVeri를 생성하고 스마트카드 검증을 위한 VerSCi와 스마트 카드에 포함되는 값 Ai를 생성한다.
\(\text { User Ver }_{i}=h\left(I D_{i} \| x\right)\) (40)
\(VerforSCi=h(ID_ih(y)||UI_i)\) (41)
\(A_i=UseVer_i \oplus UI_i \oplus h(x)\) (42)
• Step 4. CS는 (VerforSCi, Ai, h(*), h(y))를 스마트카드에 저장한다.
• Step 5. CS는 사용자 정보 값인 UIi와 사용자 검증자 값 UserVeri 및 상태 비트 값을 검증자 테이블에 저장한다. 만약 사용자가 등록을 하면 상태 비트 값은 1로 저장되며 등록이 되어 있지 않으면 0으로 저장된다. 검증자 테이블은 Table 3.과 같다.
Table 3. The verifier table
• Step 6. CSi는 생성한 스마트카드를 Ui에게 발행한다.
3.1.2 로그인 단계
로그인 단계에서는 사용자 Ui가 로그인을 수행하기 위하여 서비스 제공 서버 Sj에게 로그인 요청 메시지를 전송하는 과정이다.
• Step 1. Ui는 스마트카드를 카드 리더기에 삽입하고 자신의 IDi, Pi를 입력한다. 스마트카드는 \(UI_i=h(ID_i||h(P_i))\)를 계산하고 UIi값을 이용하여 VerforSC'i=h(IDi||h(y)||UIi)를 생성한다.
\(VerforSC^\prime_i = h(ID_i||h(y)||UI_i)\) (43)
• Step 2. 이후, 다음과 같이 자신이 생성한 VerforSC'i와 스마트카드에 포함된 VerforSC'i를 비교하여 일치하면 정당한 스마트카드의 소유자로 검증된다.
\(\text { Verfor } S C_{i}=? \text { Verfor } S C ^{\prime}_{i}\) (44)
• Step 3. Ui는 랜덤값 Ni1을 선택하여 다음과 같이 Bi와 Ci를 계산하고 타임스탬프 Ts를 생성한다.
\(B_{i}=A_{i} \oplus U I_{i} \oplus N_{i 1}\) (45)
\(C_{i}=h\left(N_{i 1} \| h(y)\right)\) (46)
• Step 4. Ui는 Sj에게 로그인 요청 메시지 (Bi, Ci, Ts)를 전송한다.
3.1.3 인증 및 키동의 단계
인증 및 키동의 단계에서는 수신된 로그인 요청 메시지를 이용하여 사용자 Ui, 서비스 제공 서버 Sj, 인증 서버 CS 간의 검증을 수행한다.
• Step 1. Sj는 랜덤값 Ni2를 선택하고 다음과 같이 Ki와 Mi를 계산하여 CS에게 로그인 요청 메시지 (Bi, Ci, Ki, Mi, SIDi, Ts)를 전송한다.
\(K_{i}=h\left(S I D_{j} \| y\right) \oplus N_{i 2}\) (47)
\(M_{i}=h\left(h(x \| y) \| N_{i 2}\right)\) (48)
• Step 2. CS는 Ts′=Ts+1을 계산하여 ∆Ts ≧ Ts′-Ts를 확인한다. Ts′는 서버가 로그인 메시지를 수신하였을 때의 타임스탬프이며, ∆Ts는 로그인 메시지 전송 시간을 고려한 최소한의 인증 시간이다.
• Step 3. CS는 다음과 같이 Ni2의 계산을 통해 M′i을 도출할 수 있으며, 로그인 요청 메시지의 Mi와 CS가 도출한 M′i와 비교하여 일치하면 정당한 Sj로 인증된다.
\(N_{i 2}=K_{i} \oplus h\left(S I D_{j} \| y\right)\) (49)
\(M_{i}^\prime=h\left(h(x \| y) \| N_{i 2}\right)\) (50)
\(M_{i}=? M_{i} ^\prime\) (51)
• Step 4. CS는 UIi에 일치하는 UserVeri를 검증자 테이블에서 검색한다.
• Step 5. CS는 다음과 같이 Ni1를 계산하고 Ni1를 이용하여 C′i를 도출할 수 있으며, 로그인 요청 메시지의 Ci와 CS가 도출한 C′i를 계산하여 일치하면 정당한 Ui로 인증된다.
\(N_{i 1}=B_{i} \oplus h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right)\) (52)
\(C_{i}^\prime=h\left(h(y) \| N_{i 1}\right)\) (53)
\(C_{i}=? C_{i} ^\prime\) (54)
• Step 6. CS는 타임스탬프 Ts를 생성하고 랜덤값 Ni3을 선택한다. 이후, 다음과 같이 Qi, Ri, Vi, Wi를 계산하여 상호 인증 메시지 (Qi, Ri, Vi, Wi, Ts)를 Sj에게 전송한다.
\(Q_{i}=N_{i 1} \oplus N_{i 3} \oplus h\left(S I D_{j} \oplus N_{i 2}\right)\) (55)
\(R_{i}=h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right) \oplus h\left(\operatorname{SID}_{j} \| N_{i 2}\right)\) (56)
\(\begin{aligned} &V_{i}=h(h(\text { User Veri } \| h(x)) \| \\ &\left.h\left(N_{i 1} \oplus N_{i 2} \oplus N_{i 3}\right)\right) \end{aligned}\) (57)
\(W_{i}=N_{i 2} \oplus N_{i 3} \oplus h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right)\) (58)
• Step 7. Sj는 상호 인증 메시지를 수신하고 \(N_{i 1} \oplus N_{i 3}, \quad h\left(U_{s e r} \operatorname{Ver}_{i} \| h(x)\right)\)을 계산하여 V'i 를 도출할 수 있으며 상호 인증 메시지의 Vi와 자신이 생성한 Vi′와 비교하여 일치하면 정당한 서버로 인증된다.
\(N_{i 1} \oplus N_{i 3}=Q_{i} \oplus h\left(S I D_{j} \oplus N_{i 2}\right)\) (59)
\(h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right)=R_{i} \oplus h\left(S I D_{j} \| N_{i 2}\right)\) (60)
\(\begin{aligned} &V^\prime_{i}=h\left(h\left(U s e r \operatorname{Ver}_{i} \| h(x)\right)\right. \\ &\left.\| h\left(N_{i 1} \oplus N_{i 2} \oplus N_{i 3}\right)\right) \end{aligned}\) (61)
\(V_i = ?V^\prime _i\) (62)
• Step 8. Sj는 응답 메시지 (Vi, Wi, Ts)를 사용자 Ui에게 전송한다.
• Step 9. Sj는 응답 메시지를 수신하고 타임스탬프 Ts′ = Ts+1 계산하여 ∆Ts ≧ Ts′-Ts 을 확인한다. Ts′는 서버가 로그인 메시지를 수신하였을 때의 타임스탬프이며, ∆Ts는 로그인 메시지 전송 시간을 고려한 최소한의 인증 시간이다.
• Step 10. Ui는 \(h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right), \quad N_{i 2} \oplus N_{i 3}\) 의 계산을 통해 V′i를 도출할 수 있으며, 응답 메시지의 Vi와 Ui가 도출한 V′i와 비교하여 일치하면 Ui에 의해 정당한 Sj와 CS로 인증된다. 따라서 Ui, Sj, CS는 다음과 같이 동일한 세션키 SK을 생성함으로써 인증을 수행할 수 있다.
\(h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right)=A_{i} \oplus U I_{i}\) (63)
\(N_{i 2} \oplus N_{i 3}=W_{i} \oplus h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right)\) (64)
\(\begin{aligned} &V_{i}^\prime=h(h(\text { User Veri } \| h(x)) \\ &\left.\| h\left(N_{i 1} \oplus N_{i 2} \oplus N_{i 3}\right)\right) \end{aligned}\) (65)
\(V_i = ?V^\prime _i\) (62번과 동일) (66)
\(\begin{aligned} &S K= \\ &h\left(h\left(\operatorname{User} \operatorname{Ver}_{i} \| h(x)\right) \| h\left(N_{i 1} \oplus N_{i 2} \oplus N_{i 3}\right)\right) \end{aligned}\) (67)
3.1.4 패스워드 변경 단계
패스워드 변경 단계에서는 사용자가 자신의 패스워드를 새로운 패스워드로 변경하고자 할 때 수행하는 과정으로 5가지 단계로 구성되어 있다.
• Step 1. Ui는 자신의 패스워드를 변경하기 위해 스마트카드를 카드 리더기에 삽입하고 자신의 IDi, Pi를 입력한다.
• Step 2. 스마트카드는 \(U I_{i}=h\left(I D_{i} \| h\left(P_{i}\right)\right)\)를 계산하고 UIi값을 이용하여 \(\operatorname{VerforSC}_{i}=h\left(I D_{i}\right.\left.\|h(y)\| U I_{i}\right)\)를 생성한다.
\(\operatorname{VerforSC}^\prime_{i}=h\left(I D_{i}\|h(y)\| U I_{i}\right)\) (68)
• Step 3. 이후, 다음과 같이 자신이 생성한 VerforSC'i와 스마트카드에 포함된 VerforSCi를 비교하여 일치하면 정당한 스마트카드의 소유자로 검증된다.
\(\operatorname{VerforSC}_{i}=? \operatorname{VerforSC}_{i}^\prime\) (69)
• Step 4. 정당한 스마트카드의 소유자로 검증되면, 사용자는 변경하고자 하는 새로운 패스워드 NwPi를 삽입하고 스마트카드는 새로운 \(N w U I_{i} =h\left(I D_{i} \| h\left(N w P_{i}\right)\right)\)를 생성한다.
\(N w U I_{i}=h\left(I D_{i} \| h\left(N w P_{i}\right)\right)\) (70)
• Step 5. 생성된 NwUIi를 이용하여 새로운 NwVerforSCi를 계산할 수 있으며 기존의VerforSCi와 대체되어 스마트카드에 저장함으로써 패스워드 변경이 이루어진다.
\(N w \operatorname{Verfor} S C_{i}=h\left(I D_{i}\|h(y)\| N w U I_{i}\right)\) (71)
IV. 안전성 및 효율성 분석
4.1 안전성 분석
4.1.1 스마트카드 권한 문제
제안하는 인증 프로토콜에서는 인증 서버인 CS가 스마트카드에 대한 쓰기 권한을 가지고 있으며 사용자가 스마트카드에 대한 쓰기 권한을 가지고 있지 않 다. 따라서 인가된 사용자로 가장하는 공격자에 의한 스마트카드에 대한 위변조를 방지할 수 있다.
4.1.2 사용자 가장 공격
공격자가 이전 세션의 공개된 채널을 통해 로그인 요청 메시지 (Bi, Ci, Ts)를 안다고 가정할 때 악의적인 공격자는 랜덤값 Ni1과 Ai, UIi, h(y)를 계산할 수 없기 때문에 사용자로 가장하여 현재 세션의 로그인 요청 메시지 Bi, Ci, Ts를 도출할 수 없다. 따라서 제안 하는 인증 프로토콜은 사용자 가장 공격에 안전하다.
4.1.3 세션키 유출 공격
공격자가 이전 세션의 공개된 채널을 통해 Bi, Ci, Ki, Mi, SIDj, Ts와 Qi, Ri, Vi, Wi를 안다고 가정할 때, 공격자는 세션키를 도출할 수 없다.
공격자는 공개된 Bi를 통해 Ni1를 도출할 수 없으며, 공개된 Wi를 통해 \(N_{i 2} \oplus N_{i 3}\)을 도출할 수 없 으므로, 공격자는 공통 세션키인 \(h\left(h \left(\text { User Ver }_{i}\right.\right. \left.\| h(x)) \| h\left(N_{i 1} \oplus N_{i 2} \oplus N_{i 3}\right)\right)\)을 생성할 수 없다. 따라서 제안하는 인증 프로토콜은 세션키 유출 공격에 안전하다.
4.1.4 재전송 공격
제안하는 인증 프로토콜에서는 Ui, Sj와 CS간의 로그인 요청 메시지 및 인증 메시지에 대해 타임스탬프를 사용한다. 따라서 공격자가 전송되는 메시지에 대한 위변조 공격을 수행하기 위해 세션에 참여하였을 경우, 타임스탬프 Ts의 값이 변하기 때문에 재전 송 공격에 대응할 수 있다.
4.1.5 서비스 거부 공격
공격자 Uk가 자신의 스마트카드와 IDk, Pk, Ni1를 이용하여 많은 양의 동일한 로그인 요청 메시지를 생성하여 전송할 경우, 서비스를 제공하는 서버 Sj와 인증 서버 CS에 대한 서비스 가용성에 대한 문제가 발생할 수 있다.
하지만 제안하는 인증 프로토콜에서는 검증 테이블을 사용하여 상태 비트 값이 1로 저장되어 있다면 해당하는 로그인 요청 메시지를 받지 않기 때문에 서비스의 가용성을 침해하는 서비스 거부 공격에 안전 하다.
Table 4. Vulnerability comparison of our protocol and other related protocols
4.2 효율성 분석
본 절에서는 Xiong Li 등[11]의 인증 프로토콜과 본 논문에서 제안하는 인증 프로토콜의 효율성을 비교 분석하였으며 Table 5.와 같다.
Table 5. Performance Comparisons of our protocol and Xiong Li et al’s protocol
X : Exclusive OR h : Hash function
Xiong Li 등[11]의 인증 프로토콜에서 로그인 단계와 인증 및 키동의 단계의 연산량을 분석한 결과 28번의 XOR 연산과 33번의 해쉬 암호화 연산이 필요한 반면에 본 논문에서 제안하는 인증 프로토콜은 22번의 XOR 연산과 32번의 해쉬 암호화 연산이 필요하다.
따라서 제안하는 인증 프로토콜은 Xiong Li 등 [11]의 인증 프로토콜의 연산량보다 적은 연산량으로 인증 프로토콜을 수행할 수 있기 때문에 지속적으로 경량화를 요구하는 스마트기반 환경에서 효율적으로 활용될 수 있다.
V. 결론
다중 서버 환경에서 사용자는 원격으로 서버에 접속하여 서비스를 제공받는다. 하지만 악의적인 공격자에 의해 데이터 도청 및 위변조 공격에 노출될 수 있다. 따라서 서비스를 제공받고자 하는 사용자는 원격으로 서버에 접속하기 때문에 데이터 도청 및 위변조 공격에 노출될 수 있음으로 이를 방지하기 위한 안전한 인증 기술이 필요하다.
Chun-Ta Li 등[12]의 인증 프로토콜은 Xoing Li등[11]의 인증 프로토콜에 대한 문제점을 제기하고 개선된 인증 프로토콜을 제안하였지만 Chun-Ta Li 등[12]은 잘못된 방식으로 취약점을 분석하였으며 부적합한 인증 절차를 가진다.
따라서 본 논문에서는 Xoing Li 등[11]의 인증 프로토콜에 대한 새로운 문제점을 제기하고 이에 대한 안전성 및 효율성이 향상된 인증 프로토콜을 제안하였다.
본 논문에서 제안한 인증 프로토콜은 스마트카드를 이용한 키 교환 및 다양한 응용 분야에서 활용될 수 있을 것으로 기대한다.
* 이 논문은 2016년도 정부(미래창조과학부)의 재원으로 한국 연구재단의 지원을 받아 수행된 연구임(No.NRF-2014R1A2A1A11050818).
참고문헌
- Ashish Singh, Kakali Chatterjee, "An Efficient Three Factor Based Remote User Authentication Protocol for Distributed Networks" Computer Information Systems and Industrial Management, Vol 9842, pp 682-693, Sept. 2016.
- R. Abdellatif, H. K. Aslan and S. H. Elramly, "New real time multicast authentication protocol", International Journal of Network Security, Vol 12, pp. 13-20, 2011.
- C. C. Chang, H. L. Wu, Z. H. Wang, and Q. Mao, "An efficient smart card based authentication scheme using image encryption", Journal of Information Science and Engineering, Vol 29, pp. 1135-1150, Nov. 2013.
- E. El-Emam, M. Koutb, H. Kelash and O. S. Faragallah, "An authentication protocol based on Kerberos 5", International Journal of Network Security, Vol 12, pp. 159-170, May. 2011,
- D. He, J. Chen and J. Hu, "Weaknesses of a remote user password authentication scheme using smart card", International Journal of Network Security, Vol 13, pp. 58-60, Feb. 2011.
- M. S. Hwang, S. K. Chong and T. Y. Chen, "Dos-resistant ID-based password authentication scheme using smart cards", Journal of Systems and Software, Vol 83, pp. 163-172, Jan. 2010. https://doi.org/10.1016/j.jss.2009.07.050
- Y.P Liao, S. S. Wang, "A secure dynamic ID based remote user authentication scheme for multi-server environment" Computer Standards and Interfaces, Vol 31, pp. 24-29, Oct. 2009. https://doi.org/10.1016/j.csi.2007.10.007
- H. C. Hsiang, W. K. Shih, "Improvement of the secure dynamic ID based remote user authentication scheme for multi-server environment", Computer Standards and Interfaces, Vol 31, pp. 1118-1123, Nov. 2009. https://doi.org/10.1016/j.csi.2008.11.002
- S. K. Sood, A. K. Sarje and K. Singh, "A secure dynamic identity based authentication protocol for multi-server architecture", Journal of Network and Computer Applications, Vol 34, pp. 609-618, Mar. 2011. https://doi.org/10.1016/j.jnca.2010.11.011
- C. C. Lee, T. H. Lin and R. X. Chang, "A secure dynamic ID based remote user authentication scheme for multi-server environment using smart cards", Expert Systems with Applications, Vol 38, pp. 13863-13870, Oct. 2011.
- X. Li, Y. Xiong, J. Ma, W. Wang, "An efficient and security dynamic identity based authentication protocol for multi-server architecture using smart cards", Journal of Network and Computer Applications, Vol 35, pp. 763-769, Mar. 2012. https://doi.org/10.1016/j.jnca.2011.11.009
- Chun-Ta Li, Cheng-Chi Lee, Chi-Yao Weng, Chun-I Fan, "A Secure Dynamic Identity Based Authentication Protocol with Smart Cards for Multi-Server Architecture", Journal of Information Science and Engineering 31, 1975-1992, Oct. 2014.