KR100989185B1 - Rsa기반 패스워드 인증을 통한 세션키 분배방법 - Google Patents

Rsa기반 패스워드 인증을 통한 세션키 분배방법 Download PDF

Info

Publication number
KR100989185B1
KR100989185B1 KR1020080083240A KR20080083240A KR100989185B1 KR 100989185 B1 KR100989185 B1 KR 100989185B1 KR 1020080083240 A KR1020080083240 A KR 1020080083240A KR 20080083240 A KR20080083240 A KR 20080083240A KR 100989185 B1 KR100989185 B1 KR 100989185B1
Authority
KR
South Korea
Prior art keywords
session key
password
client
server
rsa
Prior art date
Application number
KR1020080083240A
Other languages
English (en)
Other versions
KR20100024605A (ko
Inventor
이광우
김승주
원동호
Original Assignee
충남대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 충남대학교산학협력단 filed Critical 충남대학교산학협력단
Priority to KR1020080083240A priority Critical patent/KR100989185B1/ko
Publication of KR20100024605A publication Critical patent/KR20100024605A/ko
Application granted granted Critical
Publication of KR100989185B1 publication Critical patent/KR100989185B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3273Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response for mutual authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

사용자 패스워드를 공유하는 서버와 클라이언트 간에 암호화 통신 세션을 위하여, 서버가 공개키를 생성하여 클라이언트에게 송부하면, 클라이언트는 임의로 생성한 제1 세션키 생성자를 공개키와 패스워드를 이용하여 암호화하고 전자서명하여 서버에 재송부하고, 서버는 개인키와 패스워드로 암호화되고 서명된 세션키 생성자를 복원하고 복호화하여 제2 세션키 생성자를 만들고, 각자 가진 제1 또는 제2 세션키 생성자와 패스워드를 이용하여 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 세션키를 생성하여 가지는 RSA기반 패스워드 인증을 통한 세션키 분배방법에 관한 것으로서, 서버에서 클라이언트에게 공개키를 직접 송부하지 않고 일방향 함수에 의하여 공개키를 생성하는 공개키 생성자를 송부하는 구성을 마련한다.
상기와 같은 방법에 의해, 종래의 RSA기반 패스워드 인증 키분배 방법이 취약했던 패스워드 공격방법인 e-residue 공격을 극복하면서, 공개키 생성 및 검증을 위한 계산량을 줄일 수 있다.
RSA, 패스워드, 키분배, EKE, Encrypted Key Exchange, 해쉬

Description

RSA기반 패스워드 인증을 통한 세션키 분배방법 { A password authenticated key exchange method using the RSA }
본 발명은 사용자 패스워드를 공유하는 서버와 클라이언트 간에 암호화 통신 세션을 위하여, 서버가 공개키를 생성하여 클라이언트에게 송부하면, 클라이언트는 임의로 생성한 제1 세션키 생성자를 공개키와 패스워드를 이용하여 암호화하고 전자서명하여 서버에 재송부하고, 서버는 개인키와 패스워드로 암호화되고 서명된 세션키 생성자를 복원하고 복호화하여 제2 세션키 생성자를 만들고, 각자 가진 제1 또는 제2 세션키 생성자와 패스워드를 이용하여 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 세션키를 생성하여 가지는 RSA기반 패스워드 인증을 통한 세션키 분배방법에 관한 것이다.
특히, 본 발명은 서버에서 클라이언트에게 공개키를 직접 송부하지 않고 일방향 함수에 의하여 공개키를 생성하는 공개키 생성자를 송부하는 RSA기반 패스워드 인증을 통한 세션키 분배방법에 관한 것이다.
일반적으로 암호화 통신을 하기 위해서는 통신 주체들은 세션키(또는 비밀 데이터)를 서로 공유하고 있고, 이 세션키로 통신 데이터를 암호화하여 통신한다. 이때 세션키는 외부에 알려지거나 알아내기 쉽지 않는 것을 전제로 한다.
그런데, 실제적으로 이 세션키는 통신주체들의 패스워드에 의해 생성되어 분배된다. 따라서 공격자가 패스워드를 알아낸다면 사실상 세션키를 알아낼 수 있고 암호화통신은 공격자에게 노출된다. 사람들은 자신들이 암기하기 쉽도록 6에서 10 정도의 길이를 가지는 숫자 또는 문자로 구성된 패스워드를 사용한다. 상기와 같은 길이의 패스워드의 경우 수를 모두 패스워드 후보군으로 정하여, 패스워드 후보군에 있는 모든 패스워드를 시도해보면 결국 패스워드를 알아낼 수 있다. 즉, 작은 길이를 가지는 패스워드로부터 생성된 세션키에 대하여 추측 가능한 모든 경우를 시도함으로써 공격이 성공될 수 있다.
이를 사전단어공격(dictionary attack)이라 한다. 패스워드 후보군이 너무 크면, 공격자는 시간적 제약으로 사실상 사전단어공격을 성공할 수 없다. 따라서 공격자는 여러 가지 정보를 취득하여 패스워드 후보군을 줄여 공격함으로써 성공 가능성을 높인다.
한편, 작은 길이의 패스워드를 이용하더라도 보다 강력하고 안전한 인증과 세션키 분배할 수 있는 프로토콜을 개발하고자 하는 노력이 있었다. 즉, 패스워드 인증 키분배(Password authenticated key exchange 또는 PAKE) 프로토콜이 제시되고 있다. PAKE 프로토콜은 대칭과 비대칭의 암호화 방식을 혼합하여 사용한다. 이를 통해, PAKE 프로토콜은 공격자에게 패스워드 후보군을 줄이기 위한 정보들을 불충분하게 제공하여 사전단어공격을 막는 방식을 취한다. 특히, 상기 대칭과 비대칭의 암호화 방식은 RSA 암호화 방식이 대표적이다.
종래의 PAKE 프로토콜의 기본적인 방식과 문제점을 도 1과 도 2를 참조하여 보다 구체적으로 설명한다. 도 1은 종래의 PAKE 프로토콜으로 RSA 암호화 방식을 이용하는 프로토콜의 플로우를 도시한 것이다. 도 1의 RSA기반 PAKE 프로토콜은 암호화통신을 하기 위한 두 주체 A(Alice 또는 서버)와 B(Bob 또는 클라이언트)는 서로 패스워드 w를 공유하는 것을 전제로 한다.
먼저, 도 1에서 보는 바와 같이, 서버(A)는 RSA 알고리즘에 의해 RSA 모듈러(modulus) n, 공개키 e, 개인키 d를 생성한다. 즉, 모듈러 n은 임의의 두 소수인 p와 q의 곱으로 구성되고, 공개키 e는 p-1과 q-1의 곱인 φ(n)과 서로 소가 되도록 선택된다. 그리고 d×e = 1 mod φ(n)이 되는 값 d를 개인키로 선택한다.
한편, 여기서 이용되는 해쉬함수는 H*, H1, H2가 있다. 상기 해쉬함수들은 서버(A)와 클라이언트(B) 모두 공유한다. H*는 입력되는 이진수 값을 RSA 모듈러 n과 서로 소이면서 음수가 아닌 정수로 매핑하는 해쉬함수이다. H1, H2는 입력되는 이진 수 값을 k비트의 이진수로 매핑하는 해쉬함수이다. 즉, H1, H2는 2k-1에서 2k 사이의 값을 갖는다.
서버(A)는 (n,e,d)를 생성한 후, 랜덤한 임의의 k비트 이진수인 rA를 생성한다. rA는 클라이언트가 생성하는 rB와 함께 세션을 식별하는 역할을 한다. 또, 서버와 클라이언트는 각각 A와 B로 각자를 식별한다. 즉, A와 B는 일종의 아이디로서 각자를 식별한다.
따라서 (A,B,rA,rB)는 세션마다 다르게 설정된다. (A,B,rA,rB)들이 이용되는 것은 상기 H*, H1, H2의 해쉬함수들이다. 이것은 동일한 패스워드(또는 세션키)를 해쉬하더라도 세션마다 다른 해쉬 값을 출력하기 위한 것이다. 이를 통해, 공격자에게 해쉬값을 통해 패스워드에 대한 정보를 주는 것을 차단할 수 있다. 한편, 도 1에서, (A,B,rA,rB)의 앞선 설명을 감안하면, 해쉬함수는 H*, H1, H2는 각각 패스워드 w, a, b를 해쉬하는 함수임을 알 수 있다. 이하에서 (A,B,rA,rB)에 대한 설명은 생략한다.
다시 도 1을 참조하면, 서버(A)는 생성된 RSA 모듈러 n과 공개키 e를 클라이언트(B)에 송부한다.
이를 수신한 클라이언트는 먼저 a를 생성한다. a는 모듈러 n과 서로 소이면서 음수가 아닌 임의의 정수이다. a는 일종의 세션키이다. 즉, 통신을 원하고자 하 는 클라이언트(B)는 암호화 통신을 위한 대칭키로서 세션키 a를 생성한다.
그리고 클라이언트는 패스워드 w를 해쉬하여 해쉬된 패스워드 λ를 구한다. λ는 모듈러 n과 서로 소이면서 음이 아닌 정수이다. 이것은 λ가 모듈러 n에 대한 역수가 존재하기 위한 조건이다.
또, 클라이언트는 세션키 a를 암호화하고 해쉬된 패스워드 λ를 곱한다. 상기 곱은 모듈러 n에 대한 합동 곱(modulus multiplication)이다. 즉, z = λae mod n 을 연산한다. 여기서 상기 모듈러 n에 대한 합동 곱 연산을 "세션키 a를 해쉬된 패스워드 λ로 전자서명한다."라고 표현한다. 세션키 a를 공개키 e로 암호화하였으므로 개인키 d를 가진 서버(A)만이 세션키 a를 복호화하여 그 값을 알 수 있고, 해쉬된 패스워드 λ로 서명하였으므로 서버(A)는 패스워드 w를 가진 클라이언트(B)에 의해 보내진 것임을 확인할 수 있다.
도 1의 2번째 화살표와 같이, 클라이언트가 암호화되고 전자서명한 세션키 z를 서버(A)에 송부한다. 서버(A)는 공유하는 해쉬함수 H*으로 해쉬된 패스워드 λ를 구하고 z를 복원하고 개인키로 복호화하여 복원된 세션키 b를 구한다.
즉, b = (λ-1z)d mod n 을 연산한다. 서버(A)와 클라이언트(B)가 동일한 패스워드 w를 공유한다면, a와 b는 동일하다. 이로써 세션키의 분배는 완료된다.
도 1에서, 해쉬함수 H1, H2를 이용하여 μ, η를 생성하여 상호 송부하는 것은 일종의 시도응답(challenge-response) 인증 프로토콜이다. 앞서와 같이, 서 버(A)와 클라이언트(B)는 서로 세션키를 분배하여 각각 동일한 a와 b를 갖는다. 그러나 이들은 상대방이 정확히 자신과 동일한 세션키를 가지고 있는지를 확신할 수 없다. 따라서 이들은 각기 상대방이 올바른 세션키를 가지고 있는지를 상호 인증하여야 한다. 이를 위해 해쉬함수 H1, H2를 이용하여 세션키(a 또는 b)를 해쉬한 다음 해쉬값을 상호 송부하여 비교한다. 동일하면 상대가 자신과 동일한 세션키를 가지는 것을 확신(또는 인증)할 수 있다.
다음으로, 도 2를 참조하여, PAKE 프로토콜을 쉽게 공격할 수 있는 e-Residue 공격을 설명한다.
공격자는 서버(A)를 가장하여 클라이언트(B)에게 공개키 e를 송부한다. 이때 공개키 e는 φ(n)과 서로 소가 아닌 e로 선정한다. 클라이언트(B)는 서버로부터 공개키 e를 받은 것으로 인식하여 패스워드 w를 암호화하고 서명하여 공격자에게 송부한다. 이때 공격자는 암호화되고 서명된 패스워드 z를 이용하여 패스워드의 경우 수(또는 패스워드 후보군의 크기)를 급격하게 줄일 수 있다.
즉, 공격자는 임의의 wE에 대하여, λE = H*(wE,rE,rB,A,B)를 계산한다. 그리고 z = λE xe mod n 의 식에서 x의 해가 있는지를 검증한다. 만약 공격자가 임의로 선정한 wE가 실제 패스워드 w라면 x는 클라이언트(B)가 생성한 세션키 a로서 상기 수식은 반드시 해가 있어야 한다.
그런데 공개키 e가 φ(n)과 서로 소이면, 상기 수식은 언제나 해가 존재하므로 공격자는 패스워드의 후보군의 크기를 줄일 수 없다. 그러나 공개키 e가 φ(n)과 서로 소가 아니면, 상기 수식에서 x의 해가 없는 경우가 무척 많아지고, x의 해가 존재하는 경우가 급격히 줄어든다. 즉, 해가 존재하는 패스워드만 골라내어 패스워드 후보군을 선정하면, 패스워드 후보군의 크기가 급격히 줄일 수 있다.
줄어든 패스워드 후보군 모두를 클라이언트(B)에 시도해보면, 클라이언트의 패스워드를 알아낼 수 있다. 이런 의미에서 e-Residue 공격은 일종의 사전단어공격(Dictionary attack)이다.
다시 말하면, 서버를 가장하는 공격자가 공개키 e가 φ(n)의 약수가 되도록 (n,e)쌍을 선택하게 되면. 패스워드 사전을 이용하여 유효한 패스워드를 구별해 내는 e-Residue 공격이 가능하다. 따라서 패스워드 기반 키 분배 방식에서는 공격자가 φ(n)의 약수가 되는 공개키 e를 찾는 것이 얼마나 어려운가 하는 문제에 의존하게 된다. 그리고 서버가 RSA 공개키를 생성하여 클라이언트에게 보내면, 클라이언트에서는 서버에서 생성된 공개키가 소수인지를 확인하는 소수성 검증이 필요한데, 소수성 검증은 검증해야 할 비트 수가 길어지면 클라이언트에서의 연산량이 매우 증가하게 된다.
다음으로, e-Residue 공격을 극복할 수 있는 종래의 키 분배방법을 도 3을 참조하여 설명한다. 도 3a는 Meckenize에 의해 제시된 종래의 SNAPI 프로토콜 방식이고[문헌 1 참조], 도 3b는 Zhang에 의해 제시된 PEKEP(Password enabled key exchange protocol) 프로토콜 방식을 제시하고 있다[문헌 2 참조].
도 3a에서 보는 바와 같이, 종래의 SNAPI 프로토콜 방식은 공개키 e를 n보다 큰 소수로 한정한다. 즉, 클라이언트(B)는 서버(A)(또는 공격자)로부터 공개키 e를 받으면 RSA 모듈러 n보다 크고 소수인가를 검증하여, 검증된 경우에만 세션키를 생성하여 송부한다.
공개키 e가 RSA 모듈러 n보다 크고 소수이면, 공개키 e는 φ(n)과 항상 서로 소이다. 따라서 공격자는 e-Residue 공격을 통하여 패스워드 후보군을 줄일 수 없게 된다. 즉, 종래의 SNAPI 프로토콜 방식은 e-Residue 공격에 대응할 수 있다.
그러나 공개키 e가 커지므로, 클라이언트가 연산해야 하는 양이 늘어난다. 즉, SNAPI에서는 RSA 모듈러 n값 보다 큰 소수 e를 공개키로 사용하기 때문에 서버는 매번 RSA 모듈러 n값 보다 큰 소수 e를 공개키로 사용하기 때문에 서버는 매번 RSA 모듈러 n과 n보다 큰 소수 공개키 e를 생성해야 한다. 따라서 클라이언트는 n보다 큰 e의 소수성을 체크하여야 하고, 큰 e로 지수승 연산을 수행해야 하므로 클라이언트에게 많은 부하가 걸리게 된다. 즉, e의 소수성을 검증하여야 하는 클라이언트의 계산량 또한 매우 크다는 문제점이 있다. 따라서 연산능력이 떨어지는 클라이언트에는 적용할 수 없다.
Zhang은 SNAPI가 n보다 큰 소수 공개키 e를 사용하는 것이 서버와 클라이인트에서의 계산량을 증가시킨다는 사실을 인식하고 작은 소수 q의 거듭제곱 형태로 공개키 e를 사용하는 PEKEP를 제안했다.
도 3b를 참조하면, Zhang에 의한 프로토콜 방식은 세션키를 다음과 같은 [수학식 1]에 의하여 암호화하고 서명한다. 즉, 암호화하고 서명한 세션키(λae)를 다시 공개키(e)로 반복하여 암호화한다.
[수학식 1]
Figure 112008060648691-pat00001
Zhang은 상기 [수학식 1]에서 a를 x로 치환한 수식에서 x는 언제나 해가 존재하는 것을 증명하였다. 따라서 상기 SNAPI 프로토콜 방식과 마찬가지로, 공격자는 e-Residue 공격을 통해 패스워드 후보군을 줄일 수 없다. 따라서 Zhang에 의한 프로토콜도 e-Residue 공격으로부터 안전하다. 또한, Zhang에 의한 프로토콜은 공개키 e를 RSA 모듈러 n보다 작게 정할 수 있다. 즉, SNAPI 프로토콜 방식에 비해, 공개키 e가 커짐에 따라 연산속도가 저하되는 단점은 극복된다.
그러나 Zhang의 PEKEP는 서버가 2회의 RSA 복호화 연산을 수행하여야 하며, 클라이언트는 n과 같은 크기의 공개키 e를 지수로 하는 지수승 연산을 1회 이상 수행하여야 하므로 여전히 계산량이 많다는 문제점이 있다. 도 3b에서, 상기 Zhang 프로토콜 방식은 RSA 암호화 과정을 m + 1 회를 반복하여 여전히 연산속도가 저하되는 단점이 있다.
[문헌 1] P. MacKenzie, S. Patel, and R. Swaminathan. Password-authenticated key exchange based on RSA. Proc. of Asiacrypt 2000, LNCS vol 1976, Springer-Verlag, pp.599-613, 2000
[문헌 2] M. Zhang. New approaches to password authenticated key exchange based on RSA. Proc. of Asiacrypt 2004, LNCS vol.3329, Springer-Verlag, pp.230-244, 2004
본 발명의 목적은 사용자 패스워드를 공유하는 서버와 클라이언트 간에 암호화 통신 세션을 위하여, 서버가 공개키를 생성하여 클라이언트에게 송부하면, 클라이언트는 임의로 생성한 제1 세션키 생성자를 공개키와 패스워드를 이용하여 암호화하고 전자서명하여 서버에 재송부하고, 서버는 개인키와 패스워드로 암호화되고 서명된 세션키 생성자를 복원하고 복호화하여 제2 세션키 생성자를 만들고, 각자 가진 제1 또는 제2의 세션키 생성자와 패스워드를 이용하여 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 세션키를 생성하여 가지는 RSA기반 패스워드 인증을 통한 세션키 분배방법을 제공하는 것이다.
본 발명의 다른 목적은 서버에서 클라이언트에게 공개키를 직접 송부하지 않고 일방향 함수에 의하여 공개키를 생성하는 공개키 생성자를 송부하는 RSA기반 패스워드 인증을 통한 세션키 분배방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 사용자 패스워드를 공유하는 서버와 클라이언트 간에 암호화 통신 세션을 위한 세션키를 분배하는 RSA기반 패스워드 인증을 통한 세션키 분배방법에 관한 것으로서, (a) 상기 서버가 제 1 랜덤수를 생성하고, 일방향 함수에 의해 공개키를 생성하는 공개키 생성자를 선정하고, 상기 공개키에 대응되는 개인키를 계산하는 단계; (b) 상기 서버가 상기 공개키 생성자, 상기 제 1 랜덤수를 상기 클라이언트에게 송부하는 단계; (c) 상기 클라이언트가 상기 일방향 함수를 이용하여 수신한 공개키 생성자로부터 공개키를 계산하고, 제 2 랜덤수를 생성하고, 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산하는 단계; (d) 상기 클라이언트가 제1 세션키 생성자를 생성하여 상기 공개키로 암호화하고, 상기 암호화된 세션키 생성자를 상기 해쉬된 패스워드로 전자서명하는 단계; (e) 상기 클라이언트가 상기 제 2 랜덤수와 상기 암호화되고 서명된 세션키 생성자를 상기 서버에게 송부하는 단계; (f) 상기 서버가 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산하고, 상기 암호화되고 서명된 세션키 생성자를 상기 해쉬된 패스워드로 암호화된 세션키 생성자로 복원하고, 복원된 암호화된 세션키 생성자를 개인키로 복호화하여 제2 세션키 생성자를 만드는 단계; (g) 상기 서버와 클라이언트는 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 상기 제1 또는 제2 세션키 생성자, 제 1 및 제 2 랜덤수, 해쉬된 패스워드, 공개키 생성자를 포함하여 해쉬하여 세션키를 생성하는 단계를 포함하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 (a)단계에서 소정의 비트수 L에 대하여 2L-1과 2L 사이의 값을 가지는 RSA modulus n 을 생성하고, 상기 (b)단계에서 상기 n을 더 포함하여 상기 클라이언트에게 송부하고, 상기 (d)단계에서 제1 세션키 생성자 a는 상기 n과 서로 소이고 음이 아닌 정수인 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 (a)단계에서 상기 공개키 생성자 s는 [식 1]을 만족하여야 하고, 상기 (b)단계에서 공개키 e는 e = 2H0(n,s) + 1 에 의해 구하는 것을 특징으로 한다.
[식 1]
e = 2H0(n,s) + 1, gcd(e, φ(n)) = 1,
상기 e는 소정의 비트수 k1 을 가지는 소수.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 제 1 랜덤수 r1과 제 2 랜덤수 r2는 소정의 비트수 k2이하인 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 제 4항에 있어서, 상기 (d)단계에서 상기 해쉬된 패스워드 λ로 제1 세션키 생성자 a를
Figure 112008060648691-pat00002
에 의해서 암호화되고 서명된 세션키 생성자 c를 구하고, 상기 (f)단계에서 해쉬된 패스워드 λ로 상기 암호화되고 서명된 세션키 생성자 c 를
Figure 112008060648691-pat00003
에 의하여 제2 세션키 생성자 b를 구하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 (d)단계 또는 상기 (f)단계에서, 상기 해쉬된 패스워드 λ가 n과 서로 소가 아니면, 각각 c 또는 b를 n과 서로 소이고 음이 아닌 소정의 정수로 정하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 서버와 클라이언트는 각각 고유 식별자 S와 C를 보유하고, 상기 (b)단계에서 서버는 고유 식별자 S를 더 포함하여 송부하고, 상기 (e)단계에서 클라이언트는 고유 식별자 C를 더 포함하여 송부하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 (c)단계 또는 (f)단계에서, 상기 사용자 패스워드 w를 λ = H1(w,S,C,n,s,r1,r2)에 의하여 해쉬하여 해쉬된 패스워드 λ를 계산하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상기 (c)단계에서, 수신한 n이 2L-1과 2L 사이의 홀수 값이 아니거나 구한 상기 공개키 e가 k1 비트수를 가지는 소수가 아니면 이하 단계를 수행하지 않고 거절하는 것을 특징으로 한다.
또, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서, 상 기 (g)단계는, (g1) 상기 서버가 μ= H2(b,S,C,n,s,r1,r2,c,λ)를 계산하여 S와 μ를 상기 클라이언트에게 송부하는 단계; (g2) 상기 클라이언트는 H2(a,S,C,n,s,r1,r2,c,λ)를 계산하여 수신한 상기 μ와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계; (g3) 상기 (g2)단계에서 동일하면, η= H3(a,S,C,n,s,r1,r2,c,λ)을 계산하여 C와 η를 상기 서버에게 송부하고, 세션키 skC = H4(a,S,C,n,s,r1,r2,λ)로 계산하는 단계; (g4) 상기 서버는 H3(b,S,C,n,s,r1,r2,c,λ)을 계산하여 수신한 상기 η와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계; (g5) 상기 (g4)단계에서 동일하면, 세션키 skS = H4(b,S,C,n,s,r1,r2,λ)로 계산하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 RSA기반 패스워드 인증을 통한 세션키 분배방법을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
상술한 바와 같이, 본 발명에 따른 RSA기반 패스워드 인증을 통한 세션키 분배방법에 의하면, 종래의 RSA기반 패스워드 인증 키분배 방법이 취약했던 패스워드 공격방법인 e-Residue 공격을 극복하면서, 공개키 생성 및 검증을 위한 계산량을 줄일 수 있는 효과가 얻어진다.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명에 따른 RSA 기반 패스워드 인증을 통한 키 분배방법을 실시하기 위한 전체 시스템의 구성의 일례에 대하여 도 1을 참조하여 설명한다.
도 4에서 보는 바와 같이, 본 발명에 따른 RSA 기반 패스워드 인증을 통한 키 분배방법은 네트워크(10)로 연결된 서버(30)와 클라이언트(20)간에 암호화 통신을 하기 위한 것이다.
서버(30)와 클라이언트(20)는 컴퓨팅 기능을 가진 장치이면 어느 것에 한정되지 않는다. 예를 들면, 서버(30)와 클라이언트(20)는 PC, PDA, 휴대폰, MP3P, 센서 네트워크의 센서, 전자카드, 보안카드, SIM카드 등이 될 수 있다. 또, 통신용 칩(chip) 등 부품으로도 구현될 수 있다.
이에 따라, 네트워크(10)도 상호 데이터를 송수신할 수 있으면 어느 것에 한정되지 않는다. 예를 들면, 인터넷, 무선통신망, 블루투스, WiFi, IrDA 등 모두에 적용될 수 있다.
그리고 클라이언트(20)와 서버(30)의 구분은 단지 누가 공개키를 생성하고 누가 세션키를 생성하는가로 이루어진다. 즉, 장치의 특성이 아니라 암호화 통신에 서의 역할에 의한 구분이다. 따라서 하나의 장치가 클라이언트(20)와 서버(30)의 역할을 동시에 수행할 수도 있다.
한편, 클라이언트(20)와 서버(30)는 패스워드를 공유한다. 클라이언트(20)와 서버(30)는 통신을 하기 위하여 세션을 형성한다. 암호화 통신을 하기 위하여 세션을 형성할 때 클라이언트(20)와 서버(30)는 세션키를 생성하여 분배한다.
즉, 서버(20)는 RSA알고리즘에 의하여 공개키를 생성하여 클라이언트(20)에게 송부하면 클라이언트(20)는 세션키를 생성하여 공개키로 암호화하고 패스워드로 전자서명을 하여 서버(20)에 송부한다. 서버(20)는 암호화되고 서명된 세션키를 자신이 보유한 패스워드로 서명을 복원하고 자신의 개인키로 복호화하여 원래의 세션키를 해독한다. 상기와 같이 비대칭 암호화 방식에 의하여 세션키는 생성하여 분배된다.
앞서 설명한 바와 같이, 세션키는 서버(20)의 공개키로 암호화되었기 때문에 개인키를 가지는 서버(20)만이 세션키를 복호화할 수 있고, 패스워드로 전자서명을 하였기 때문에 클라이언트(20)가 보낸 세션키임을 확인할 수 있다.
클라이언트(20)와 서버(30)간에 세션키의 분배가 완료되면, 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증(authentication)을 수행한다. 즉, 앞서와 기재한 바와 같이, 클라이언트(20)와 서버(30)는 각기 상대방이 올바른 세션키를 가지고 있는지를 상호 인증하기 위하여, 해쉬함수를 이용하여 세션키를 해쉬한 다음 해쉬값을 상호 송부하여 비교한다. 동일하면 상대가 자신과 동일한 세션키를 가지는 것을 확신(또는 인증)할 수 있다.
클라이언트(20)와 서버(30)가 서로 세션키를 분배하고 상호인증이 완료되면, 대칭키인 세션키를 통해 송수신하고자 하는 통신 데이터를 암호화 또는 복호화하여 암호화 통신을 수행한다.
한편, 상기 클라이언트(20)와 서버(30)는 자신들을 식별하기 위한 식별자 또는 아이디를 갖는다. 각각의 식별자를 C와 S로 정하기로 하고, 이하에서 C와 S는 각각 클라이언트(20)와 서버(30)의 식별자로 표기한다.
다음으로, 본 발명의 일실시예에 따른 RSA 기반 패스워드 인증을 통한 키 분배방법을 도 5를 참조하여 설명한다. 앞서 설명한 바와 같이, 상기 세션키 분배방법에서 클라이언트(20)와 서버(30)는 사용자 패스워드를 서로 공유한다.
도 5에서 보는 바와 같이, 본 발명에 따른 RSA 기반 패스워드 인증을 통한 키 분배방법은 (a) 서버가 일방향 함수에 의해 공개키를 생성하는 공개키 생성자를 선정하는 단계; (b) 상기 서버가 상기 공개키 생성자를 상기 클라이언트에게 송부하는 단계; (c) 상기 클라이언트가 상기 일방향 함수를 이용하여 수신한 공개키 생성자로부터 공개키를 계산하고, 사용자 패스워드를 해쉬하는 단계; (d) 상기 클라이언트가 제1 세션키 생성자를 생성하여 상기 공개키로 암호화하고, 상기 암호화된 세션키 생성자를 상기 해쉬된 패스워드로 전자서명하는 단계; (e) 상기 클라이언트가 상기 암호화되고 서명된 세션키 생성자를 상기 서버에게 송부하는 단계; (f) 상기 서버가 상기 사용자 패스워드를 해쉬하고, 상기 암호화되고 서명된 세션키 생성자를 상기 해쉬된 패스워드로 암호화된 세션키 생성자로 복원하고, 복원된 암호화 된 세션키 생성자를 개인키로 복호화하여 제2 세션키 생성자를 만드는 단계; (g) 상기 서버와 클라이언트는 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 상기 제1 또는 제2 세션키 생성자, 해쉬된 패스워드, 공개키 생성자를 포함하여 해쉬하여 세션키를 생성하는 단계로 구분된다.
상기 (a)단계는 상기 서버가 제 1 랜덤수를 생성하고, 일방향 함수에 의해 공개키를 생성하는 공개키 생성자를 선정하고, 상기 공개키에 대응되는 개인키를 계산한다.
구체적으로, 상기 (a)단계에서 서버(30)가 생성하는 것은 RSA 모듈러 n, 제 1 랜덤수 rA, 공개키 e와 공개키 생성자 s이다. 그리고 공개키 e로부터 개인키 d를 구한다.
RSA 모듈러 n은 소정의 비트수 L에 대하여 2L-1과 2L 사이의 값을 가지는 수에서 선택된다. n은 RSA 알고리즘에 의해 선택되므로, n은 임의의 두 소수인 p와 q의 곱으로 구성된다.
제 1 랜덤수 r1은 소정의 비트수 k2이하이다. 즉, r은 r ∈R {0,1}k2를 만족하는 임의의 수이다. 앞서 본 바와 같이, 제 1랜덤수 r1은 제 2랜덤수 r2, 서버와 클라이언트의 식별자 S, C와 함께 해쉬함수의 입력값으로 이용된다. 이 값들은 해쉬함수로부터 해쉬되는 값들이 세션마다 다르게 하는 역할을 한다. 한편, 상기 4개의 값들은 서버(30)와 클라이언트(20)의 상호 송수신에 의하여 공유되는 값들이다.
공개키 생성자 s는 다음 [수학식 1]을 만족하는 임의의 수로 선정된다.
[수학식 1]
e = 2H0(n,s) + 1, gcd(e, φ(n)) = 1,
상기 e는 소정의 비트수 k1 을 가지는 소수.
상기 [수학식 1]에서 두 번째 조건인 gcd(e, φ(n)) = 1은 RSA알고리즘에 의한 공개키 e에 대한 조건이다. 즉, 공개키 e는 p-1과 q-1의 곱인 φ(n)과 서로 소가 되도록 선택된다.
한편, H0(n,s)은 n과 s의 입력값을 해쉬하는 해쉬함수이다. 즉, H0(n,s)은 일방향 함수이므로, s를 알면 e = 2H0(n,s) + 1의 식에 의하여 e를 바로 알아낼 수 있다. 그러나 e를 안다고 하여도 s를 알 수 없게 된다.
따라서 s를 구하는 방법은 랜덤하게 임의의 수를 선정하여, e = 2H0(n,s) + 1에 대입하여 e를 구한다. 그리고 e가 gcd(e, φ(n)) = 1을 만족하는지를 확인한다.
여기서, 상기 e가 소정의 비트수 k1 인 경우, 소수정리(Prime number theorem)에 의하면, 소정의 비트수 k1 인 모든 숫자 중에서 gcd(e, φ(n)) = 1을 만족하는 숫자는 많다고 증명되고 있다. 따라서 s를 랜덤하게 임의의 숫자로 선정하지만, 선정된 s에 의해 생성된 e가 gcd(e, φ(n)) = 1을 만족할 가능성이 매우 높 다. 따라서 s를 임의로 선정하는 횟수를 적게 하여도, e = 2H0(n,s) + 1에 의해 구한 e가 gcd(e, φ(n)) = 1을 만족할 수 있다.
따라서 공개키 생성자 s를 생성하는 시간은 많이 소요되지 않는다.
한편, 앞서 설명에서 공개키 생성자 s로부터 구해진 e가 소정의 비트수 k1 인 것을 검증하여야 한다. 바람직하게는, 해쉬함수 H0(n,s)의 해쉬값이 소정의 비트수 k1-1 비트수로 제한되도록, 해쉬함수를 선정한다. 이렇게 해쉬함수를 선정하면 공개키 e가 소정의 비트수 k1 인 것을 검증할 필요는 없다.
공개키 d는 RSA알고리즘에 의하여 구한다.
즉, d = e-1 mod φ(n)에 의하여 구한다. 개인키 d는 클라이언트(20)가 공개키 e로 암호화한 데이터를 복호화할 때 이용된다.
상기 (b)단계는 상기 서버가 상기 공개키 생성자, 상기 제 1 랜덤수를 상기 클라이언트에게 송부한다.
앞서 (a)단계에서 RSA 모듈러 n, 제 1 랜덤수 r1, 공개키 e와 공개키 생성자 s를 구하면, 서버(30)는 이들을 상기 클라이언트(20)에 송부한다. 이와 더불어 서버(30)의 식별자인 S를 함께 전송한다. 즉, 서버(30)는 (S, n, s, r1)을 클라이언트(20)에게 송부한다.
상기 (c)단계는 상기 클라이언트가 상기 일방향 함수를 이용하여 수신한 공개키 생성자로부터 공개키를 계산하고, 제 2 랜덤수를 생성하고, 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산한다.
클라이언트(20)는 서버(30)로부터 (S, n, s, r1)을 송부받으면, 공개키 생성자 s로부터 공개키 e를 계산하고, RSA 모듈러 n과 공개키 e가 올바른지 검사한다. 즉, RSA 모듈러 n이 소정의 비트수 L에 대하여 2L-1과 2L 사이의 홀수 값이 아니거나, 공개키 e가 소정의 비트수 k1 을 가지는 소수가 아니면, 세션키 배분을 위한 통신을 더 이상 진행하지 않는다.
상기와 같이 n과 e에 대한 검사를 마치면, 클라이언트(20)는 제 2랜덤수 r2, 해쉬된 패스워드 λ를 구한다.
제 2랜덤수는 앞서 제 1팬덤수와 동일하게, 소정의 비트수 k2이하이다. 즉, r2는 r2R {0,1}k2를 만족하는 임의의 수이다.
한편, 클라이언트(20)는 사용자 패스워드 w를 해쉬함수에 의하여 해쉬하여 해쉬된 패스워드 λ를 구한다. 구체적으로, 상기 (c)단계에서, 상기 사용자 패스워드 w를 λ = H1(w,S,C,n,s,r1,r2)에 의하여 해쉬하여 해쉬된 패스워드 λ를 계산한 다. 해쉬함수 H1은 패스워드 w를 해쉬하는 것이 주된 목적이나, 다른 세션과 구별되도록 S, C, n, s, r1, r2 등의 인자들을 포함하여 해쉬한다.
상기 (d)단계는 상기 클라이언트가 제1 세션키 생성자를 생성하여 상기 공개키로 암호화하고, 상기 암호화된 세션키 생성자를 상기 해쉬된 패스워드로 전자서명한다.
제1 세션키 생성자 a는 상기 n과 서로 소이고 음이 아닌 임의의 정수 중에서 랜덤하게 선정된다. 즉, a는 a ∈R Zn * 를 만족하는 임의의 수이다. 제1 세션키 생성자 a는 서버(30)와 클라이언트(20)간에 암호화 통신을 하기 위해 생성되는 대칭키(또는 세션키)를 만들기 위한 것이다. 이하에서 설명하듯이, 제1 세션키 생성자 a는 해쉬함수에 의해 해쉬되어 세션키 sk를 만드는데 이용된다.
클라이언트(20)에 의해 생성된 제1 세션키 생성자 a는 서버(30)와 공유되어야 한다. 이를 위해, 클라이언트(20)는 제1 세션키 생성자 a를 공개키로 암호화하고 패스워드로 전자서명을 하여 서버(30)에 송부하여야 한다.
제1 세션키 생성자 a는 [수학식 2]에 의하여 암호화되고 서명된다.
[수학식 2]
Figure 112008060648691-pat00004
즉, ae가 곧 제1 세션키 생성자 a를 공개키 e로 암호화한 것이고, 여기에 해쉬된 패스워드 λ를 모듈러 n 곱연산(modulus multiplication)한 것이 전자서명을 한 것이다. 즉, c가 곧 암호화되고 서명된 세션키 생성자이다.
한편, 제1 세션키 생성자 a에 대한 암호화 및 전자서명은 해쉬된 패스워드 λ가 모듈러 n과 서로 소인 경우, 즉, gcd(λ, n) = 1 인 경우에만 수행된다. 상기 해쉬된 패스워드 λ가 n과 서로 소가 아니면, c를 n과 서로 소이고 음이 아닌 소정의 정수로 정한다. 즉, c는 c ∈R Zn * 를 만족하는 임의의 수이다.
공격자가 e-residue 공격을 통해 임의의 s를 보내는 경우, gcd(λ, n) = 1이 아닌 경우가 발생될 수 있다. 이때 gcd(λ, n) = 1이 아니기 때문에, 상기 [수학식 2]에서 a를 x로 치환한 방정식에서 해가 없을 수 있다. 따라서 이런 경우 공격자는 사전단어공격을 위한 패스워드 후보군을 줄일 수 있다. 이를 방지하기 위하여, 해가 없는 경우, 즉, gcd(λ, n) = 1이 아닌 경우에는 전자서명된 값을 보내지 않고 대신 n과 서로 소이고 음이 아닌 임의의 수를 송부한다.
상기 (e)단계는 상기 클라이언트가 상기 제 2 랜덤수와 상기 암호화되고 서명된 세션키 생성자를 상기 서버에게 송부한다. 즉, 클라이언트는 상기 (c)와 (d)단계에서 구한 제 2랜덤수 r2와 암호화되고 서명된 세션키 생성자 c를 서버에게 송 부한다. 추가적으로 서버(30)의 식별자 S를 송부한다.
상기 (f)단계는 상기 서버가 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산하고, 상기 암호화되고 서명된 세션키 생성자를 상기 해쉬된 패스워드로 암호화된 세션키 생성자로 복원하고, 복원된 암호화된 세션키 생성자를 개인키로 복호화하여 제2 세션키 생성자를 만든다.
제1 세션키 생성자 a는 [수학식 3]에 의하여 복원되고 복호화되어 제2 세션키 생성자 b로 만들어진다. 클라이언트와 서버가 동일한 패스워드 λ와 대응되는 공개키와 개인키를 나누어 가진다면, 상기 제1 세션키 생성자 a와 제2 세션키 생성자 b는 실질적으로 동일하다.
[수학식 3]
Figure 112008060648691-pat00005
즉, c·λ-1 가 해쉬된 패스워드 λ로 전자서명된 c를 복원한 것이다. 즉, 복원은 해쉬된 패스워드 λ의 역수가 모듈러 n 곱연산(modulus multiplication)되어 이루어진다. 이 연산에 의해 만들어지는 것이 제2 세션키 생성자 b이다.
(c·λ-1)d 이 c·λ-1 을 개인키 d로 복호화하는 것을 표시한다.
한편, 암호화되고 서명된 세션키 생성자 c에 대한 암호화 및 전자서명은 해쉬된 패스워드 λ가 모듈러 n과 서로 소인 경우, 즉, gcd(λ, n) = 1 인 경우에만 수행된다. 상기 해쉬된 패스워드 λ가 n과 서로 소가 아니면, 제2 세션키 생성자 b를 n과 서로 소이고 음이 아닌 소정의 정수로 정한다. 즉, b는 b ∈R Zn * 를 만족하는 임의의 수이다.
상기 (g)단계는 상기 서버와 클라이언트는 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 각자 상기 제1 또는 제2 세션키 생성자, 제 1 및 제 2 랜덤수, 해쉬된 패스워드, 공개키 생성자를 포함하여 해쉬하여 세션키를 생성한다.
시도응답(challenge-response) 인증 프로토콜, 앞서와 같이, 서버(30)와 클라이언트(20)는 서로 제1 또는 제2 세션키 생성자를 분배하여 각각 동일한 세션키 생성자 a와 b를 갖는다. 그러나 이들은 상대방이 정확히 자신과 동일한 세션키 생성자를 가지고 있는지를 확신할 수 없다. 따라서 이들은 각기 상대방이 올바른 세션키 생성자를 가지고 있는지를 상호 인증하여야 한다. 이를 위해 해쉬함수 H2, H3를 이용하여 제1 또는 제2 세션키 생성자(a 또는 b)를 해쉬한 다음 해쉬값을 상호 송부하여 비교한다. 동일하면 상대가 자신과 동일한 세션키 생성자를 가지는 것(또는 제1 과 제2 세션키 생성자가 동일하다는 것)을 확신(또는 인증)할 수 있다.
구체적으로, 상기 (g)단계는, (g1) 상기 서버가 μ= H2(b,S,C,n,s,r1,r2,c,λ)를 계산하여 S와 μ를 상기 클라이언트에게 송부하는 단계; (g2) 상기 클라이언 트는 H2(a,S,C,n,s,r1,r2,c,λ)를 계산하여 수신한 상기 μ와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계; (g3) 상기 (g2)단계에서 동일하면, η= H3(a,S,C,n,s,r1,r2,c,λ)을 계산하여 C와 η를 상기 서버에게 송부하고, 세션키 skC = H4(a,S,C,n,s,r1,r2,λ)로 계산하는 단계; (g4) 상기 서버는 H3(b,S,C,n,s,r1,r2,c,λ)을 계산하여 수신한 상기 η와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계; (g5) 상기 (g4)단계에서 동일하면, 세션키 skS = H4(b,S,C,n,s,r1,r2,λ)로 계산하는 단계로 구분된다.
상기 (g)단계에서, H2와 H3은 해쉬함수로서, 제1 또는 제2 세션키 생성자 a또는 b를 이용하여 해쉬값을 구한다. 즉, 해쉬값이 동일한지를 비교하여 상호 인증을 하게 된다.
상호인증이 완료되면, 해쉬함수 H4를 이용하여 세션키 sk를 생성한다. 서버(30)가 생성한 세션키는 sks이고, 클라이언트(20)가 생성한 세션키는 skc이다. 각각은 제1 또는 제2 세션키 생성자 a또는 b에 의해서 해쉬된 값들이다. 따라서 b와 c가 동일하면 세션키는 sks와 skc도 동일하다. 동일한 세션키 sks와 skc는 대칭키로서 기능을 하여, 서버와 클라이언트간의 암호화 통신에 이용된다.
앞서 본 바와 같이, 서버(30)는 n보다 크지 않은 k1비트 공개키 e ( = 2H0(n,s) + 1 )를 생성하여 클라이언트에게 전송하는데, 공격자는 잘 알려진 소수 정리에 의하여 φ(n)의 약수가 되는 e를 찾는 것이 현실적으로 어렵다. 따라서 서버와 클라이언트의 계산량을 효과적으로 줄이면서 프로토콜을 안전하게 설계할 수 있다. 또, 본 발명에서는 소수 정리에 기반하여 효율적으로 개선하였기 때문에 연산 능력이 제한된 기기에서 안전한 통신을 위한 키 분배에 사용될 수 있다
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
본 발명은 사람이 기억할 수 있는 패스워드를 이용하여 안전한 암호화된 통신을 하기 위한 시스템에 적용이 가능하다. 특히, 본 발명은 연산능력이 제한되어 공개키 생성 및 검증을 위해 많은 계산량을 할 수 없는 기기에서 안전한 통신을 위한 키 분배 시스템을 개발하는데 사용될 수 있다.
도 1은 종래의 RSA 기반 패스워드 인증 키분배(PAKE) 프로토콜을 설명한 흐름도이다.
도 2는 상기 도 1의 키 분배방법의 e-Residue 공격을 설명하는 흐름도이다.
도 3은 e-Residue 공격을 극복하려는 종래의 다른 키 분배방법을 설명한 흐름도이다.
도 4는 본 발명에 따른 RSA 기반 패스워드 인증을 통한 세션키 분배방법을 실시하기 위한 전체 시스템의 구성의 일례를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 RSA 기반 패스워드 인증을 통한 세션키 분배방법을 설명한 흐름도이다.

Claims (11)

  1. 사용자 패스워드를 공유하는 서버와 클라이언트 간에 암호화 통신 세션을 위한 세션키를 분배하는 RSA기반 패스워드 인증을 통한 세션키 분배방법에 있어서,
    (a) 상기 서버가 제 1 랜덤수를 생성하고, 일방향 함수에 의해 공개키를 생성하는 공개키 생성자를 선정하고, 상기 공개키에 대응되는 개인키를 계산하는 단계;
    (b) 상기 서버가 상기 공개키 생성자, 상기 제 1 랜덤수를 상기 클라이언트에게 송부하는 단계;
    (c) 상기 클라이언트가 상기 일방향 함수를 이용하여 수신한 공개키 생성자로부터 공개키를 계산하고, 제 2 랜덤수를 생성하고, 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산하는 단계;
    (d) 상기 클라이언트가 제1 세션키 생성자를 생성하여 상기 공개키로 암호화하고, 상기 암호화된 세션키 생성자를 상기 해쉬된 패스워드로 전자서명하는 단계;
    (e) 상기 클라이언트가 상기 제 2 랜덤수와 상기 암호화되고 서명된 세션키 생성자를 상기 서버에게 송부하는 단계;
    (f) 상기 서버가 상기 공개키 생성자와 상기 제 1 및 제 2 랜덤수를 포함하여 상기 사용자 패스워드를 해쉬하여 해쉬된 패스워드를 계산하고, 상기 암호화되고 서명된 세션키 생성자를 상기 해쉬된 패스워드와 개인키로 복원하고 복호화하여 제2 세션키 생성자를 만드는 단계;
    (g) 상기 서버와 클라이언트는 시도응답(challenge-response) 인증 프로토콜에 의하여 상호 인증하고, 상기 서버는 상기 제2 세션키 생성자, 제 1 및 제 2 랜덤수, 해쉬된 패스워드, 및 공개키 생성자를 포함하여 해쉬하여 세션키를 생성하고, 상기 클라이언트는 상기 제1 세션키 생성자, 제 1 및 제 2 랜덤수, 및 해쉬된 패스워드, 공개키 생성자를 포함하여 해쉬하여 세션키를 생성하는 단계를 포함하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  2. 제 1항에 있어서,
    상기 (a)단계에서 소정의 비트수 L에 대하여 2L-1과 2L 사이의 값을 가지는 RSA 모듈러(modulus) n 을 생성하고,
    상기 (b)단계에서 상기 모듈러 n을 더 포함하여 상기 클라이언트에게 송부하고,
    상기 (d)단계에서 제1 세션키 생성자 a는 상기 모듈러 n과 서로 소이고 음이 아닌 정수인 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  3. 제 2항에 있어서,
    상기 (a)단계에서 상기 공개키 생성자 s는 [식 1]을 만족하여야 하고,
    상기 (b)단계에서 공개키 e는 e = 2H0(n,s) + 1 에 의해 구하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
    [식 1]
    e = 2H0(n,s) + 1, gcd(e, φ(n)) = 1,
    단, H0는 해쉬함수이고, 상기 e는 소정의 비트수 k1 을 가지는 소수이다.
  4. 제 3항에 있어서,
    상기 제 1 랜덤수 r1과 제 2 랜덤수 r2는 소정의 비트수 k2이하인 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  5. 제 4항에 있어서,
    상기 (d)단계에서 상기 해쉬된 패스워드 λ로 제1 세션키 생성자 a를
    Figure 112008060648691-pat00006
    에 의해서 암호화되고 서명된 세션키 생성자 c를 구하고,
    상기 (f)단계에서 해쉬된 패스워드 λ로 상기 암호화되고 서명된 세션키 생성자 c를
    Figure 112008060648691-pat00007
    에 의하여 제2 세션키 생성자 b를 구하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  6. 제 5항에 있어서, 상기 (d)단계 또는 상기 (f)단계에서,
    상기 해쉬된 패스워드 λ가 모듈러 n과 서로 소가 아니면, 각각 상기 암호화되고 서명된 세션키 생성자 c 또는 제2 세션키 생성자 b를 모듈러 n과 서로 소이고 음이 아닌 소정의 정수로 정하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  7. 제 6항에 있어서,
    상기 서버와 클라이언트는 각각 고유 식별자 S와 C를 보유하고,
    상기 (b)단계에서 서버는 고유 식별자 S를 더 포함하여 송부하고,
    상기 (e)단계에서 클라이언트는 고유 식별자 C를 더 포함하여 송부하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  8. 제 7항에 있어서, 상기 (c)단계 또는 (f)단계에서,
    상기 사용자 패스워드 w를 λ = H1(w,S,C,n,s,r1,r2)(H1은 해쉬함수)에 의하여 해쉬하여 해쉬된 패스워드 λ를 계산하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  9. 제 8항에 있어서, 상기 (c)단계에서,
    수신한 모듈러 n이 2L-1과 2L 사이의 홀수 값이 아니거나 구한 상기 공개키 e가 k1 비트수를 가지는 소수가 아니면 이하 단계를 수행하지 않고 거절하는 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  10. 제 9항에 있어서, 상기 (g)단계는,
    (g1) 상기 서버가 μ= H2(b,S,C,n,s,r1,r2,c,λ)를 계산하여 S와 μ를 상기 클라이언트에게 송부하는 단계;
    (g2) 상기 클라이언트는 H2(a,S,C,n,s,r1,r2,c,λ)를 계산하여 수신한 상기 μ와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계;
    (g3) 상기 (g2)단계에서 동일하면, η= H3(a,S,C,n,s,r1,r2,c,λ)을 계산하여 C와 η를 상기 서버에게 송부하고, 세션키 skC = H4(a,S,C,n,s,r1,r2,λ)로 계산하는 단계;
    (g4) 상기 서버는 H3(b,S,C,n,s,r1,r2,c,λ)을 계산하여 수신한 상기 η와 비교하여 동일하지 않으면 인증 과정을 거절하는 단계;
    (g5) 상기 (g4)단계에서 동일하면, 세션키 skS = H4(b,S,C,n,s,r1,r2,λ)로 계산하는 단계를 포함하고,
    상기 H2, H3, H4는 해쉬함수인 것을 특징으로 하는 RSA기반 패스워드 인증을 통한 세션키 분배방법.
  11. 제 1항 내지 제 10항 중 어느 한 항의 RSA기반 패스워드 인증을 통한 세션키 분배방법을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020080083240A 2008-08-26 2008-08-26 Rsa기반 패스워드 인증을 통한 세션키 분배방법 KR100989185B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080083240A KR100989185B1 (ko) 2008-08-26 2008-08-26 Rsa기반 패스워드 인증을 통한 세션키 분배방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080083240A KR100989185B1 (ko) 2008-08-26 2008-08-26 Rsa기반 패스워드 인증을 통한 세션키 분배방법

Publications (2)

Publication Number Publication Date
KR20100024605A KR20100024605A (ko) 2010-03-08
KR100989185B1 true KR100989185B1 (ko) 2010-10-20

Family

ID=42176384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080083240A KR100989185B1 (ko) 2008-08-26 2008-08-26 Rsa기반 패스워드 인증을 통한 세션키 분배방법

Country Status (1)

Country Link
KR (1) KR100989185B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101133093B1 (ko) * 2010-11-23 2012-04-04 세종대학교산학협력단 하나의 인증서를 이용하여 암호화와 전자 서명을 제공하는 방법
KR101330867B1 (ko) * 2012-12-27 2013-11-18 신한카드 주식회사 결제 디바이스에 대한 상호인증 방법
KR101501508B1 (ko) * 2013-09-16 2015-03-12 김정훈 데이터 암호화를 통한 인증방법 및 시스템
GB2547025A (en) * 2016-02-05 2017-08-09 Thales Holdings Uk Plc A method of data transfer, a method of controlling use of data and a cryptographic device
WO2019212236A1 (ko) * 2018-04-30 2019-11-07 주식회사 원키 차량 개폐 및 시동을 제어하는 스마트 키 시스템에서 비대칭키 방식을 기초로 암호화된 초음파를 사용한 단계적 사용자 인증 방법 및 장치
CN111464289B (zh) * 2020-01-13 2021-07-27 华中科技大学 一种后量子密钥交换协议的实现方法、设备及系统
CN114070549B (zh) * 2020-07-31 2024-07-19 马上消费金融股份有限公司 一种密钥生成方法、装置、设备和存储介质
CN113626794B (zh) * 2021-07-22 2024-03-08 西安电子科技大学 客户/服务器模式下的认证及密钥协商方法、系统及应用
CN115913561A (zh) * 2022-09-26 2023-04-04 北京大学 一种面向泄露检测的口令认证方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010090167A (ko) * 2000-03-23 2001-10-18 윤종용 패스워드를 기반으로 한 상호 인증 및 키 교환방법과 그장치
KR20030032327A (ko) * 2001-10-17 2003-04-26 엘지전자 주식회사 타원 곡선 암호를 이용한 사용자 인증 방법
KR20030050620A (ko) * 2001-12-19 2003-06-25 한국전자통신연구원 대화형 영 지식 증명을 이용한 패스워드 기반의 인증 및키 교환 프로토콜 설계 방법
KR20040050625A (ko) * 2002-12-10 2004-06-16 한국전자통신연구원 대칭형 및 비대칭형 인증 키 교환을 이용한 인증방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010090167A (ko) * 2000-03-23 2001-10-18 윤종용 패스워드를 기반으로 한 상호 인증 및 키 교환방법과 그장치
KR20030032327A (ko) * 2001-10-17 2003-04-26 엘지전자 주식회사 타원 곡선 암호를 이용한 사용자 인증 방법
KR20030050620A (ko) * 2001-12-19 2003-06-25 한국전자통신연구원 대화형 영 지식 증명을 이용한 패스워드 기반의 인증 및키 교환 프로토콜 설계 방법
KR20040050625A (ko) * 2002-12-10 2004-06-16 한국전자통신연구원 대칭형 및 비대칭형 인증 키 교환을 이용한 인증방법

Also Published As

Publication number Publication date
KR20100024605A (ko) 2010-03-08

Similar Documents

Publication Publication Date Title
CN107948189B (zh) 非对称密码身份鉴别方法、装置、计算机设备及存储介质
CN108352015B (zh) 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移
US7814320B2 (en) Cryptographic authentication, and/or establishment of shared cryptographic keys, using a signing key encrypted with a non-one-time-pad encryption, including (but not limited to) techniques with improved security against malleability attacks
US10673631B2 (en) Elliptic curve isogeny-based cryptographic scheme
KR100989185B1 (ko) Rsa기반 패스워드 인증을 통한 세션키 분배방법
US8437473B2 (en) Small public-key based digital signatures for authentication
US8464058B1 (en) Password-based cryptographic method and apparatus
US9571274B2 (en) Key agreement protocol
US9705683B2 (en) Verifiable implicit certificates
EP2334008A1 (en) A system and method for designing secure client-server communication protocols based on certificateless public key infrastructure
JP2001313634A (ja) 通信方法
CN104301108A (zh) 一种从基于身份环境到无证书环境的签密方法
Ho A versatile suite of strong authenticated key agreement protocols for body area networks
JP2019537349A (ja) 複合デジタル署名
Shukla et al. A new secure authenticated key agreement scheme for wireless (mobile) communication in an EHR system using cryptography
US20160352689A1 (en) Key agreement protocol
KR20080005344A (ko) 인증서버가 사용자단말기를 인증하는 시스템
KR20070035342A (ko) 패스워드 기반의 경량화된 상호 인증 방법
JP4307589B2 (ja) 認証プロトコル
WO2016187690A1 (en) Key agreement protocol
CN110572788B (zh) 基于非对称密钥池和隐式证书的无线传感器通信方法和系统
Hsu et al. Password authenticated key exchange protocol for multi-server mobile networks based on Chebyshev chaotic map
Kilciauskas et al. Authenticated key agreement protocol based on provable secure cryptographic functions
Hsu et al. A dynamic identity end-to-end authentication key exchange protocol for IoT environments
US11438146B1 (en) System and method for performing key exchange while overcoming a malicious adversary party

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180921

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190926

Year of fee payment: 10