Nothing Special   »   [go: up one dir, main page]

KR20040068499A - 공유키 교환방법과 통신기기 - Google Patents

공유키 교환방법과 통신기기 Download PDF

Info

Publication number
KR20040068499A
KR20040068499A KR1020040004476A KR20040004476A KR20040068499A KR 20040068499 A KR20040068499 A KR 20040068499A KR 1020040004476 A KR1020040004476 A KR 1020040004476A KR 20040004476 A KR20040004476 A KR 20040004476A KR 20040068499 A KR20040068499 A KR 20040068499A
Authority
KR
South Korea
Prior art keywords
communication device
shared key
time
response
key
Prior art date
Application number
KR1020040004476A
Other languages
English (en)
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 마쯔시다덴기산교 가부시키가이샤
Publication of KR20040068499A publication Critical patent/KR20040068499A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Prepayment Telephone Systems (AREA)

Abstract

본 발명은 공유키 교환방법과 통신기기에 관한 것으로서, 기기A로부터 공개값(X)을 수신하면 기기B는 공개값(Y)의 산출에 걸리는 시간 및 공유키(K)의 산출에 걸리는 시간을 추정하고, 키교환처리를 위해 기기B측에서 필요로 하는 연산소요시간(Tb)을 구하고, 기기A에 송신하여 응답 지연시간을 예고한다(S306, S307). 그 후, 기기B는 실제로 공개값(Y) 및 공유키(K)를 산출한다(S309, S310). 기기A는 연산소요시간(Tb)을 수신하고, 기기B로부터의 응답 대기 기한(타임아웃 시간)을 이 수신으로부터 연산소요시간(Tb)이 경과된 시점으로 연장하여 설정한다(S311).

Description

공유키 교환방법과 통신기기{COMMON KEY EXCHANGING METHOD AND COMMUNICATION DEVICE}
본 발명은 공유키 교환방법과 통신기기에 관한 것으로서, 보다 특정적으로는 네트워크를 통해 비익성(秘匿性)이 높은 데이터를 송수신하는 기기사이에서 암호화/인증용 비밀키를 교환 및 공유하기 위한 공유키 교환방법에 관한 것이다.
최근, 인터넷의 보급에 따라 전자메일이나 전자상거래 등의 네트워크를 통한 서비스도 증대하고, 가정내에도 네트워크에 접속할 수 있는 전화제품, 이른바 「네트가전」이 늘어나고 있다. 이 네트가전은 에어콘이나 전자렌지 등의 백색가전에도 보급되고 있고, 집밖에서 에어콘을 제어하거나 전자렌지의 조리 프로그램을 서버에서 다운로드할 수 있는 서비스 등이 제안되어 있다. 그러나, 이 네트워크의 보급 확대에 따라 악의를 가진 제 3 자가 네트워크상의 전자데이터를 개찬(改竄)이나 남용(무단시청)하거나 타인인 양 행세하여 서비스를 받는 문제가 부상되고 있다. 이 때문에 네트워크상의 보안대책이 중요해지고 있다.
네트워크상의 보안기능을 실현하는 방식으로 암호화 기술이나 인증 기술을 사용한 프로토콜이 여러가지로 규격화 또는 실용화되어 있다. 예를 들면, IP패킷의 레벨에서의 보안기능을 규정한 프로토콜로서, IPsec(IP Security Protocol)가 있다. IPsec라는 것은 인터넷 기술 태스크 포스(IETF:Internet Engineering Task Force)에 의해 표준화된 프로토콜이고, 그 내용은 IETF의 사양서「RFC2401」(비특허문헌 1) 등에 의해 규정되어 있다. 이 IPsec에서는 IP패킷 그 자체를 암호화하여 남용자로부터 통신내용을 보호하고, 비밀의 누설을 방지할 수 있다. 또, IP패킷에 인증(완전성 체크)용의 값을 추가하여 통신경로에서 데이터가 개찬되지 않은 것을 보증할 수 있다.
그런데, IPsec 등의 프로토콜을 사용하여 기기간에 암호화/인증처리가 된 데이터를 송수신하는 경우, 데이터 송수신에 앞서 암호화/인증처리에 이용하는 키(이하, 세션 공유키라고 함)를 양쪽 기기에서 공유할 필요가 있다. 여기서, 사용자가 수동으로 세션 공유키를 설정하는 것은 번잡하고, 많은 기기사이에서 통신하는 시스템에는 적합하지 않다. 또, 1개의 세션 공유키를 장시간에 걸쳐 계속 사용하면 제 3 자가 세션 공유키를 해독해버릴 가능성이 높기 때문에 필요에 따라서 세션 공유키를 갱신할 필요가 있다. 이와 같기 때문에 세션 공유키를 기기간에 공유하기 위해 필요한 생성, 배포, 교환 및 갱신 처리를 안전하고 간단히 실시하는 것이 바람직하고, 이에 대해 여러가지 수법이 제안되어 있다.
예를 들면, 2개의 기기간에 1개의 비밀 대칭키(세션 공유키)를 교환시키는 방법으로서 널리 사용되고 있는 기본 기술에 디피헬만(DH법)의 키 교환방법이 있다. 이 디피헬만의 키 교환방법(이하, DH법이라고 함)은 상기한 IPsec의 키 교환 및 관리 프로토콜로서 표준 사용이 규정되어 있는 IKE(Internet Key Exchange)에도 이용되고 있다. 이 IKE의 개요는 IETF의 사양서「RFC2407」∼「RFC2409」(비특허문헌 2∼4)에 개시되어 있다.
이하, 종래의 공유키교환(공유 및 신호분배) 방법의 구체예로서, DH법을 설명한다.
도 18은 IETF의 사양서「RFC2631」(비특허문헌 5)에서 규정되어 있는 DH법을 설명하기 위한 도면이다. 또, 도 18의 기기A 및 기기B는 암호통신 및 키 교환을 실시하는 기기의 세트이다. 또, 기기A와 기기B가 키 교환을 실시하기 전에 변수(g) 및 변수(n)의 값을 미리 알고 있는 것으로 한다(단계(S1801), (S1802)). 이 변수(g) 및 변수(n)는 키 교환처리의 연산에 이용되는 변수이지만, 그 값은 제 3 자(남용자)에게 알려져 있어도 좋다.
우선, 기기A는 자기기 고유의 비밀값(a)을 생성한다(단계(S1803)). 계속해서 기기A는 이 비밀값(a)과 변수(g) 및 변수(n)를 이용하여 하기 수학식 1에 의해 공개값(X)을 산출한다(단계(S1804)). 하기 수학식 1은 변수(g)를 비밀값(a)의 수만큼 곱하고(멱승연산), 그 값을 변수(n)로 나눈 나머지(모듈러연산)를 공개값(X)으로 하는 것을 의미한다. 그리고, 기기A는 산출한 공개값(X)을 기기B에 송신한다(단계(S1805)).
한편, 기기B는 기기A로부터 공개값(X)을 수신하면 자기기 고유의 비밀값(b)을 생성한다(단계(S1806)). 계속해서 기기(B)는 이 비밀값(b)과 변수(g) 및 변수(n)을 이용하여 하기 수학식 2에 의해 공개값(Y)을 산출한다(단계(S1807)). 또, 기기B에서는 기기A로부터 수신한 공개값(X), 비밀값(b) 및 변수(n)를 이용하여 하기 수학식 3에 의해 세션 공유키(K)를 산출한다(단계(S1808)). 그리고, 기기(B)는 산출한 공개값(Y)을 기기A로 송신한다(단계(S1809)).
마지막으로 기기A는 기기B로부터 공개값(Y)을 수신하면 이 공개값(Y) 및 비밀값(a)을 이용하여 하기 수학식 4에 의해 세션 공유키(K)를 산출한다(단계(S1810)).
여기서, 상기 수학식 3 및 수학식 4는 하기 수학식 5의 관계가 성립한다.
이 때문에 기기A 및 기기B는 세션공유키(K)로서 같은 값을 산출할 수 있다. 따라서, 각 기기에서 세션 공유키(K)를 산출한 후에는 이 세션 공유키(K)를 이용하여 암호화/인증 처리한 데이터를 송수신할 수 있다(단계(S1811)).
남용자가 기지인 변수(g), 변수(n), 공개값(X) 및 공개값(Y)에 기초하여 세션 공유키(K)를 발견하는 것은, 이른바 이산대수 문제라고 말하여지고 있고, 매우 어려운 것은 주지된 사실이다. 특히 변수(n)를 매우 크게(수백비트에서 수천비트) 설정한 경우에는 이산대수를 푸는 것은 사실상 불가능하다. 이상과 같이 DH법을 사용하여 기기A와 기기B의 사이에서 안전하게 세션 공중키(K)를 공유시킬 수 있다.
또, 상기한 IKE의 경우에는 DH법의 순서뿐만 아니라 그 전후에 기기간에 주고받는 순서도 규정되어 있다. 이하, 도 19를 이용하여 IKE에서의 키 교환방법을 간단히 설명한다. 또, IKE에서는 최초로 키 교환의 요구를 상대에게 보내는 측의 기기를 이니세이터라고 하고, 그 요구를 접수하는 측의 기기를 레스폰더라고 한다. 또 IKE에서는 Phase1과 Phase2라는 2단계의 키 교환을 규정하고 있다.
우선, Phase1의 단계에서 이니세이터와 레스폰더는 처음으로 키 교환과 암호화/인증처리에 이용하는 각종 매개변수를 절충한다(단계(S1901)). 예를 들면 DH법에서 이용하는 변수(g) 및 변수(n)의 값이나, 단계(S1903)에서 이용하는 암호화/인증의 알고리즘도 이 단계(S1901)에서 정해진다. 변수(g) 및 변수(n)의 값에 대해서는 값 그 자체, 또는 변수(g) 및 변수(n)의 값을 특정할 수 있는 소정 그룹번호 등으로 결정하면 좋다. 계속해서 상기한 DH법의 키 교환을 실시하여 세션 공유키(K_Phase1)를 공유한다(단계(S1902)). Phase1의 최후에는 이니세이터와 레스폰더가 서로 바른 상대인지 여부를 인증(본인성 확인)하기 위한 순서를 실시한다(단계(S1903)). 이 단계(S1903)의 인증에서 사용하는 메시지는 세션 공유키(K_Phase1)에 기초한 키에 의해 암호화/인증처리된 후, 송수신된다. 서로의 기기를 인증하기 위한 정보로서는 ID나 해시값 등을 사용할 수 있다. 예를 들면 세션 공유키(K_Phase1)와 단계(S1902)에서 교환한 데이터 등을 연결하고, 그것을 키 부착 해시함수의 입력값으로서 계산한 해시값을 단계(S1903)에서 메시지의 암호화/인증을 실시하는 키로서 사용할 수 있다.
계속해서 Phase2의 단계에서, 이니세이터와 레스폰더 사이에서 실제로 송수신하고 싶은 데이터에 실시하는 암호화/인증처리를 결정한다. 이 Phase2의 메시지에는 단계(S1903)와 마찬가지로 세션 공유키(K_Phase1)에 기초한 키로 암호화/인증처리가 실시된다. Phase2의 최초의 2메시지에서는 변수(g) 및 변수(n)의 값의 제안 또는 통지, 암호화/인증의 알고리즘 등의 절충과, DH법의 공개값(X) 및 공개값(Y)의 교환이 실시된다(단계(S1904)). Phase2에서는 매개변수(변수(g), 변수(n), 비밀값(a) 및 비밀값(b))의 값을 Phase1의 매개변수와 다른 값으로 할 수있다. 이니세이터와 레스폰더는 단계(S1904)의 DH법으로 계산되는 세션 공유키(K_Phase2)에 기초하여 실제 데이터에 적용하는 암호화/인증처리의 키를 생성하고, 암호화/인증처리 완료의 데이터를 송수신한다(단계(S1905)).
또, IKE에서는 상기한 순서 이외에도 한쪽의 메시지가 다른쪽 기기에 도달하지 않은 경우의 메시지의 재송신이나 세션 공유키의 갱신 순서 등도 규정되어 있다.
[비특허문헌 1] 표준사양서「RFC2401」, IETF, [평성15년 12월 9일 검색], 인터넷〈URL:http://ietf.org/rfc/rfc2401.txt〉
[비특허문헌 2] 표준사양서「RFC2407」, IETF, [평성15년 12월 9일 검색], 인터넷〈URL:http://ietf.org/rfc/rfc2407.txt〉
[비특허문헌 3] 표준사양서「RFC2408」, IETF, [평성15년 12월 9일 검색], 인터넷〈URL:http://ietf.org/rfc/rfc2408.txt〉
[비특허문헌 4] 표준사양서「RFC2409」, IETF, [평성15년 12월 9일 검색], 인터넷〈URL:http://ietf.org/rfc/rfc2409.txt〉
[비특허문헌 5] 표준사양서「RFC2631」, IETF, [평성15년 12월 9일 검색], 인터넷〈URL:http://ietf.org/rfc/rfc2631.txt〉
상기한 바와 같이 DH법은 멱승연산과 모듈러연산을 포함하고 있고, 자리수가 큰 수치를 사용하는 경우의 처리 부하가 매우 큰 것이 알려져 있다. 예를 들면 IKE에서 규정되어 있는 DH그룹(2)의 경우에는 g=2, n=1024(비트)의 값을 사용하여 공개값(X), 공개키(Y) 및 세션 공유키(K)가 계산된다. 그러나, 네트가전과 같이저비용의 CPU를 탑재하는 기기에서는 높은 계산 능력을 기대할 수 없고, 이하와 같은 3가지 과제가 발생한다고 생각된다.
우선, 제 1 과제로서는 대향하는 (상대측의) 기기의 타임아웃 검출에 의해 키 교환처리가 실패할 우려가 있는 것을 들 수 있다. 도 20은 이 과제를 설명하기 위한 순서도이다. 도 20의 단계(S2001∼S2006)는 도 18의 단계(S1801∼S1806)와 동일한 처리이고, 기기A로부터 기기B에 DH법의 공개값(X)이 송신된다. 계속해서, 기기B는 도 18의 단계(S1807, S1808)와 마찬가지로 공개값(Y) 및 세션 공유키(K)의 산출을 실시하지만, CPU의 계산 능력이 낮기 때문에 매우 긴 처리시간을 요한다(단계(S2007, S2008)).
기기A는 자신의 공개값(X)을 송신한 후(단계(S2005)), 기기B로부터의 응답, 즉 공개값(Y)의 수신을 기다리고 있는데, 통상 통신경로중의 패킷로스나 대향하는 기기의 장해 등의 사태에 대비하여 재송신이나 타임아웃의 처리를 갖고 있다. 도 20의 기기A의 경우는 기기B로부터의 응답이 없으면 재송신 간격(T)[초]시간마다 공개값(X)의 메시지를 재송신한다(단계(S2010∼S2012)). 그래도 기기B로부터의 응답이 없는 경우에는 소정 시간(도 20의 예에서는 T×4[초])이 경과된 후에 타임아웃을 검출하여 키 교환이 실패했다고 판단한다(단계(S2013)).
그 후, 기기B에서 공개값(Y) 및 세션 공유키(K)의 산출이 종료되고, 기기A에 공개값(Y)을 송신했다고 해도(단계(S2009)), 그 때에는 기기A에서는 이미 기기B와의 키 교환 처리 실행상태를 재설정하고 있다. 이 때문에 공개값(Y)을 포함하는 메시지는 무효한 메시지라고 판단하여 폐기되어 버린다(단계(S2014)).
계속해서 제 2 과제로서는 키의 수명이 설정되어 있는 경우, 수명 만료까지 키의 갱신이 완료되지 않을 우려가 있는 것을 들 수 있다. 동일한 키를 장시간에 걸쳐 사용하면 그 동안에 키가 해독되는 일이 전혀 없다고는 할 수 없다. 따라서, IKE에서는 키에 수명을 설치해두고, 적당한 시간이 지나면 그때까지의 키의 사용을 종료하고, 별도의 새로운 키를 사용할 수 있도록 하고 있다. 구체적으로는 키 교환성공에 의해 키가 작성되면 그 키에 수명이 설정된다. 또는 키 교환의 순서를 개시할 때, 그 키에 부여하는 수명 만료의 시각을 기기A와 기기B의 사이에서 결정해둔다. 그 키의 수명이 만료되기전에 다음의 새로운 키를 작성하고, 사용 중인 키의 수명이 만료되기 전에 이 새로운 키로 전환한다. 이와 같은 키의 갱신처리를 리키처리라고 한다. DH법에 따른 연산에 시간이 걸리면 리키처리가 지연되고, 오래된 키의 수명만료까지 키의 갱신을 할 수 없어, 오래된 키를 계속 사용하는 동안에 그 수명이 만료되면 패킷의 암호화가 불가능해진다.
계속해서, 제 3 과제로서는 기기상의 다른 어플리케이션의 실행을 방해할 우려가 있는 것을 들 수 있다. 네트가전과 같이 저성능의 CPU를 탑재하고 있는 기기에서 DH법 등의 고부하인 연산처리를 연속해서 실행하면 장시간에 걸쳐 네트가전의 CPU를 이 연산만으로 점유해버려 CPU리소스가 고갈되게 된다. 이 때문에 네트가전상에서 동작하는 다른 어플리케이션의 실행이 방해받아 정상으로 동작하지 않게 될 가능성이 있다.
따라서, 본 발명의 제 1 목적은 저성능 CPU를 탑재한 기기를 사용하는 경우라도 기기에 타임아웃 검출을 시키지 않고 키 교환을 성공시키는 것이 가능한 공유키 교환방법과 그 통신기기를 제공하는데 있다. 또, 본 발명의 제 2 목적은 저성능 CPU를 탑재한 기기를 사용하는 경우에도 리키처리를 정상을 실시하는 것이 가능한 공유키 교환방법 및 그 통신기기를 제공하는 것이다. 또, 본 발명의 제 3 목적은 저성능 CPU를 탑재한 기기에서는 다른 어플리케이션의 실행을 방해하지 않는 동시에 키 교환도 성공시키는 것이 가능한 공유키 교환방법 과 그 통신장치를 제공하는 것이다.
도 1a는 본 발명의 공유키 교환방법이 적용되는 네트워크 구성의 일례를 나타내는 도면,
도 1b는 본 발명의 공유키 교환방법이 적용되는 네트워크 구성의 일례를 나타내는 도면,
도 2a는 본 발명의 공유키 교환방법이 실장되는 기기의 기능블록의 일례를 나타내는 도면,
도 2b는 도 2a의 공유키교환부의 상세한 구성의 일례를 나타내는 블록도,
도 3은 본 발명의 제 1 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 4는 본 발명의 제 2 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 5는 본 발명의 제 3 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 6은 본 발명의 제 4 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 7은 본 발명의 제 5 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 8a 및 도 8b는 본 발명의 제 6 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 9a 및 도 9b는 본 발명의 제 7 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 10a 및 도 10b는 본 발명의 제 8 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 11은 본 발명의 제 9 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 12는 본 발명의 제 10 및 제 11 실시형태의 키갱신 처리(리키처리)의 타임차트를 나타내는 도면,
도 13은 본 발명의 제 10 실시형태에 따른 공유키 교환방법을 설명하는 처리순서도,
도 14는 본 발명의 제 11 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 15는 본 발명의 제 12 실시형태에 따른 공유키 교환방법을 설명하는 처리 순서도,
도 16은 본 발명의 공유키 교환방법을 키 교환 이외의 통신형태에 적용시킨 경우의 처리 순서도,
도 17은 본 발명의 공유키 교환방법을 키 교환 이외의 통신형태에 적용시킨 경우의 처리 순서도,
도 18은 종래의 기본적인 공유키 교환방법(DH법)을 설명하는 처리 순서도,
도 19는 RFC(2407)∼(2409)에서 개시되어 있는 IKE의 처리 순서의 개요를 나타내는 순서도 및
도 20은 종래의 공유키 교환방법의 문제점을 설명하기 위한 도면이다.
*도면의 주요 부분에 대한 부호의 설명
101, 102 : GW형 기기 107 : 공중망
109 :LAN 110, 111 : 호스트형 기기
203 : 데이터베이스부 204 : 암호화/인증처리부
205, 206 : 통신 프로토콜 처리부 208 : WAN인터페이스
본 발명은 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 2개의 통신기기사이에서 실시되는 공유키를 교환하는 공유키 교환방법 및 그 방법을 실행하는 통신기기이다. 그리고, 상기 제 1 목적을 달성시키기 위해 본 발명의 공유키 교환방법에서는 각 통신기기가 이하의 단계를 실행하는 것을 특징으로 하며, 본 발명의 통신기기에서는 그 단계를 실행 가능한 구성을 구비하고 있는 것을 특징으로 하고 있다.
적어도 한쪽의 통신기기는 대향하는 다른쪽 통신기기가 공유키를 취득하기 위해 필요한 정보를 상기 다른쪽 통신기기로 송신하는 정보 송신 단계(정보송신부)와, 다른쪽 통신기기가 다음 응답 타이밍까지 실시하는 소정 연산에 걸리는 시간에 기초하여 다른쪽 통신기기로부터의 응답 대기 기한을 설정하는 설정 단계(설정부)를 실행한다(구비한다). 그리고, 다른쪽 통신기기는 소정의 연산을 실시하여 정보에서 공유키를 취득하는 취득 단계(취득부)와, 응답 타이밍으로 한쪽의 통신기기로소정 응답을 송신하는 응답 송신 단계(응답 송신부)를 실행한다(구비한다).
여기서, 각각의 통신기기가 자기의 공개값을 산출하여 상대의 통신기기로 송신하고, 또 상대의 통신기기로부터 상대의 공개값을 수신하여 상기 상대의 공개값에 기초하여 공유키를 산출하는 것에 의해 공유키의 교환을 실현하는 경우에는 한쪽의 통신기기의 설정 단계가 다른쪽 통신기기에서 공개값의 산출까지 걸리는 시간 또는 공유키의 산출까지 걸리는 시간의 적어도 어느 하나에 기초하여 응답 대기의 기한을 설정한다.
또, 한쪽의 통신기기는 자기기에서 생성한 공유키 또는 공유키를 생성하기 위한 정보에 소정의 암호화를 실시하여 다른쪽 통신기기로 송신하고, 다른쪽 통신기기는 한쪽의 통신기기에서 수신하는 암호화된 공유키를 복호 또는 공유키를 생성하기 위한 정보를 복호하여 공유키를 생성하고, 공유키 취득의 응답을 한쪽 통신기기에서 송신하여 공유키의 교환을 실현하는 경우에는 한쪽의 통신기기의 설정 단계가 다른쪽 통신기기에서 암호화된 공유키의 복호에 걸리는 시간 또는 공유키를 생성하기 위한 정보의 복호 및 공유키의 생성에 걸리는 시간에 기초하여 응답 대기의 기한을 설정한다.
또, 다른쪽 통신기기는 한쪽의 통신기기로부터 요구 메시지를 수신한 후, 공유키 또는 공유키를 생성하기 위한 정보를 한쪽의 통신기기에서 수신하는 공개키를 이용하여 암호화하여 한쪽의 통신기기로 송신하는 것에 의해 공유키의 교환을 실현할 경우에는 한쪽의 통신기기의 설정 단계가 다른쪽 통신기기에서 공유키 또는 공유키를 생성하기 위한 정보의 암호화에 걸리는 시간에 기초하여 응답 대기의 기한을 설정한다.
또, 소정 연산은 공유키의 취득에 따른 인증 처리를 위한 연산 또는 공유키의 취득에 따른 인증처리를 위한 연산, 또 공유키를 취득하기 위한 연산이라도 좋다. 전형적으로는 한쪽의 통신기기가 인증을 위한 디지털 서명이 된 데이터 또는 공개키 암호를 이용한 데이터를 다른쪽 통신기기로 송신하고, 다른쪽 통신기기는 한쪽의 통신기기에서 수신하는 디지털 서명이 된 데이터 또는 공개키 암호를 이용한 데이터에 따라서 본인성 인증처리를 실시하는 것에 의해 인증처리를 실현하는 경우, 한쪽의 통신기기의 설정 단계가 다른쪽 통신기기에 있어서 본인성 인증처리에 걸리는 시간에 기초하여 응답 대기의 기한을 설정하면 좋다.
한쪽의 통신기기의 설정부는 상대의 통신기기로부터 수신하는 소정 연산에 걸리는 시간을 추정한 연산 소요시간에 기초하여 소정의 연산에 걸리는 시간을 취득하면 좋다. 바람직한 취득방법으로서는 다른쪽 통신기기가 소정의 연산에 걸리는 연산 소요시간을 추정하는 추정 단계(추정부)와, 추정한 연산 소요시간을 한쪽 통신기기로 송신하는 시간 송신 단계(시간송신부)를 추가로 실행한다(구비한다). 그리고, 한쪽의 통신기기가 연산 소요시간을 다른쪽 통신기기로부터 수신하는 수신 단계를 실행한다.
이 때, 한쪽의 통신기기는 다른쪽 통신기기에 연산 소요시간의 문의를 실행하고(문의부), 다른쪽 통신기기는 한쪽의 통신기기로부터의 문의에 따라서 추정 단계 및 시간 송신 단계를 실행해도 좋다.
다른쪽 통신기기가 추정하는 연산 소요시간은 사전에 보존되어 있어도 좋다.또, 이 사전에 보존하는 연산 소요시간은 과거의 소정의 연산에 걸렸던 최대시간으로 하는 것이 바람직하다.
또, 상기 이외의 방법으로서, 다른쪽 통신기기가 다음 응답 타이밍까지 응답이 지연되는 내용의 통지를 한쪽의 통신기기에 적어도 1회 송신하는 단계를 실행해도 좋다. 이 경우, 한쪽의 통신기기는 다른쪽 통신기기로부터 통지를 수신하는 단계를 추가로 실행하고, 설정 단계에서 통지에 기초하여 응답 대기 기한을 설정하면 좋다. 또, 한쪽의 통신기기가 메시지를 송신하고나서 다른쪽 통신기기에서 소정 연산 후의 응답을 수신하기까지의 시간을 계측하여 소정 연산에 걸리는 시간을 취득하도록 해도 좋다.
또, 통신기기가 상대의 공개값에 기초하여 공유키를 산출하는 공유키 교환처리에 있어서, 다른쪽 통신기기가 다음 응답 타이밍까지 공개값 및/또는 공유키의 산출을 실행하는 경우(공개값 산출부, 공유키 산출부), 한쪽의 통신기기의 설정 단계가 다른쪽 통신기기가 공개값 및/또는 공유키를 산출하기까지 걸리는 합계 시간에 기초하여 공개값의 송신 또는 공유키의 제출 완료에 관한 응답 대기 기한을 설정하는 것이 바람직하다.
여기서, 통신기기는 공유키의 산출 완료후에 완료 통지를 상대의 통신기기에 송신하는 단계와, 상대의 통신기기로부터 완료 통지를 받기까지 키 교환처리 실패의 판단을 실시하지 않는 단계를 실행해도 좋다. 또, IKE의 메시지 순서에서 정보 송신 단계, 설정 단계, 취득 단계 및 응답 송신 단계가 실행되어도 좋다.
한편, 상기 제 2 및 제 3 목적을 달성시키기 위해 본 발명의 공유키 교환방법에서는 각 통신기기가 이하의 단계를 실행하는 것을 특징으로 하고, 본 발명의 통신기기에서는 그 단계를 실행 가능한 구성을 구비하고 있는 것을 특징으로 하고 있다.
각각의 통신기기가 공유키를 산출하기 위해 실시하는 소정의 연산에 걸리는 연산 소요시간을 추정하는 추정 단계(추정부)와, 상대의 통신기기와의 사이에서 공유키의 교환을 완료해야 하는 시각까지 공유키의 교환처리를 완료시키기 위한 처리 개시 시각을 연산 소요시간에 기초하여 산정하는 산정 단계(추정부)를 실행한다(구비한다). 그리고, 어느 한쪽의 통신기기가 처리 개시 시각에 키 교환 처리를 개시하는 개시 단계(개시부)를 추가로 실행한다(구비한다).
이 경우, 다른쪽 통신기기가 추정 단계에서 추정한 연산 소요시간을 한쪽의 통신기기로 송신하는 시간 송신 단계(시간 송신부)를 추가로 실행한다(구비한다). 그리고, 한쪽의 통신기기가 다른쪽 통신기기로부터 연산 소요시간을 수신하는 단계(수신부)를 추가로 실행하고(구비하고), 산정 단계에서 자기의 연산 소요시간과 다른쪽 통신기기의 연산 소요시간에 기초하여 처리 개시 시각을 산정해도 좋다.
또, 한쪽의 통신기기가 다른쪽 통신기기에 연산 소요시간의 문의를 실시하는 단계(문의부)를 추가로 실행하고(구비하고), 다른쪽 통신기기가 한쪽의 통신기기로부터의 문의에 따라서 추정 단계 및 시간 송신 단계를 실행해도 좋다.
또, 산정 단계에서 산정한 처리 개시시각이 빠른 쪽의 통신기기가 그 처리 개시시각에 개시 단계를 실행하는 것이 바람직하다.
또, 통신기기가 공유키의 산출이 신규인지 갱신인지를 판정하는 판정 단계(판정부)를 추가로 실행하고(구비하고), 갱신인 경우에는 공유키를 산출하기 위해 실시하는 소정의 연산이 소정의 소단위로 분할되어 시간적으로 부하 분산되는 것이 바람직하다. 이 부하 분산은 공유키를 산출하기 위해 실시하는 소정 연산에 걸리는 시간이 긴 쪽의 통신기기를 실행하면 좋다.
또, 추정 단계는 공유키를 산출하기 위해 자기기가 실시하는 소정 연산에 걸리는 실시간의 2배의 시간을 연산소요시간으로서 추정하는 것이 바람직하다.
바람직하게는 이 공통키 교환방법은 일련의 처리 순서를 통신기기에 실행시키기 위한 프로그램의 형식으로 제공된다. 이 프로그램은 컴퓨터 판독 가능한 기록매체에 기록되어도 좋다.
상기와 같이 본 발명의 공유키 교환방법에 의하면, 어느 하나의 통신기기가 공개값 및 공유키의 산출에 소정 이상의 시간을 요하는(저성능인) 경우라도 연산의 지연에 따라서 영향받는 시간 또는 지연한다는 통지를 대향하는 통신기기에 미리 추정하여 통지한다. 이에 의해 저성능의 기기가 아직 키 교환처리의 연산을 하고 있는 동안에 대향하는 기기가 응답이 없다고 판단해버리는 종래의 과제가 발생하지 않으므로 문제없이 키 교환을 성공시킬 수 있다. 또, 공유키 갱신시의 키 교환처리도 공유키의 수명이 만료하기 전에 실시할 수 있다. 또, 이 공유키 갱신시에는 고부하의 연산을 시간적으로 부하 분산시키는 것이 가능해지고, 저성능의 기기라도 키 교환의 처리가 장기간에 걸쳐 CPU를 점유하는 것이 없어진다.
본 발명의 상기 및 다른 목적, 특징, 국면, 효과는 첨부도면을 조합(照合)하고, 이하의 상세한 설명으로 더욱 명확해질 것이다.
(바람직한 실시형태의 설명)
본 발명이 제공하는 공유키 교환방법을 설명하기 전에, 우선 공유키 교환방법을 설명하는 기기에 의한 네트워크 구성에 대해 설명한다.
도 1a 및 도 1b는 본 발명의 공유키 교환방법이 적용되는 네트워크 구성의 일례를 나타내는 도면이다. 본 발명의 공유키 교환방법에 적합한 실장 형태는 네트가전과 인터넷 등의 공중망(WAM)과의 접속을 중계하는 GW형 기기(라우터나 게이트웨이(GW) 등)에 실장되는 케이스(도 1a)와, 네트가전에 상당하는 호스트형 기기에 실장되는 케이스(도 1b)와의 2종류로 분류할 수 있다.
우선, 도 1a에서는 본 발명의 공유키 교환방법은 GW형 기기(101, 102)에 실장되어 있다. GW형 기기(101)와 GW형 기기(102)는 공중망(107)을 통해 접속되어 있다. 또, GW형 기기(101)는 자신의 LAN(108)내의 단말(103, 104)과도 접속되어 있다. 마찬가지로 GW형 기기(102)는 자신의 LAN(109)내의 단말(105, 106)과도 접속되어 있다.
LAN(108)내의 단말과 LAN(109)의 단말은 GW형 기기(101, 102)를 중단하여 통신할 수 있다. 암호화/인증처리는 GW형 기기(101)와 GW형 기기(102)와의 사이를 오가는 데이터에 대해 실행된다. 즉, 암호화/인증처리는 이 2개의 GW형 기기사이에서 종단(終端)하고 있다. GW형 기기(101)는 LAN(108)내의 단말로부터 수신하는 데이터를 암호화/인증처리하여 대향하는 GW형 기기(102)에 송신하고, 또 GW형 기기(102)로부터 수신하는 암호화/인증처리후의 데이터를 복호화/인증처리하여 LAN(108)내의 단말에 송출한다. GW형 기기(102)는 LAN(109)내의 단말로부터 수신하는 데이터를 암호화/인증처리하여 대향하는 GW형 기기(101)에 송신하고, 또 GW형 기기(101)로부터 수신하는 암호화/인증처리후의 데이터를 복호화/인증처리하여 LAN(109)내의 단말에 송출한다. 또, 공유키의 교환처리도 GW형 기기(101)와 GW형 기기(102)와의 사이에서 실시된다.
한편, 도 1b에서는 본 발명의 공유키 교환방법은 호스트형 기기(110, 111)에 실장되어 있다. 호스트형 기기(111)는 공중망(107)을 통해 GW형 기기(101) 또는 호스트형 기기(110)와 접속되어 있다. 또, GW형 기기(101)는 상기와 마찬가지로 자신의 LAN(108)내의 단말(103, 104)과도 접속되어 있다.
호스트형 기기(111)와 LAN(108)내의 단말은 GW형 기기(101)를 중계하여 통신할 수 있다. 암호화/인증처리는 호스트형 기기(111)와 GW형 기기(101)와 사이를 오가는 데이터에 대해 실행된다. 호스트형 기기(111)는 GW형 기기(101)와는 달리 자신 내부의 발착 데이터를 스스로 암호화/인증처리한다. 또, 호스트형 기기(111)는 동일한 기능을 가진 호스트형 기기(110)와의 사이에서 암호화/인증처리 완료의 데이터를 통신할 수 있다. 또, 공유키의 교환처리에 관해서는 호스트형 기기(111)와 GW형 기기(101)와의 사이 및 호스트형 기기(111)와 호스트형 기기(110)와의 사이에서 각각 독립해서 실시된다.
계속해서 본 발명의 공유키 교환방법이 실장된 기기의 기능 블록에 대해 도 2a 및 도 2b를 참조하여 설명한다. 도 2a는 도 1a에서 설명한 GW형 기기(102)의 기능블록의 일례를 나타내는 도면이다. 도 2a에 있어서, GW형 기기(102)는 공유키 교환부(201)와 데이터베이스(DB)관리부(202), 데이터베이스(DB)부(203), 암호화/인증처리부(204), 통신 프로토콜처리부(205, 206), LAN인터페이스(I/F)(207) 및 WAN인터페이스(I/F)(208)를 구비한다. 도 2b는 도 2a의 공유키 교환부(201)의 상세한 구성의 일례를 나타내는 블록도이다. 또, 도 2b는 본 실시형태에서 설명하는 모든 처리를 나타낸 기능블록이다. 따라서, 각 실시형태에서 설명하는 기기A 및 기기B가 구성에 포함하는 기능 블록 및 데이터의 흐름은 그 처리내용에 따라서 각각 다르게 된다. 설정부는 연산 소요시간의 설정, 소처리 단위의 설정 등의 각종의 설정 처리를 주로 실시한다. 추정부는 연산 소요시간의 추정 처리를 주로 실시한다. 취득부는 연산이나 복호화에 의해 공개값, 공유키 또는 공개키를 취득하는 취득처리를 주로 실시한다. 판단부는 공유키 교환처리에 대해 신규/갱신을 판단하는 판단처리를 실시한다. 이것들의 처리는 이후에 상세히 설명한다.
GW형 기기(102)는 WAN인터페이스(208)를 통해 공중망(WAN)에 접속되어 있고, 다른 GW형 기기 등과 통신할 수 있다. 또, GW형 기기(102)는 LAN인터페이스(207)를 통해 LAN에 접속되어 있고, LAN내의 단말 등과 통신할 수 있다. 통신 프로토콜 처리부(205, 206)는 IP층이나 TCP층 등의 통신 프로토콜을 처리하는 부분이고, LAN내의 단말과 공중망을 통한 기기와의 사이에서 송수신되는 패킷의 라우팅 처리 등도 실시한다.
공유키 교환부(201)는 본 발명의 공유키 교환방법에 기초한 처리를 실시하는 구성부분이다. 공유키 교환부(201)에서는 대향기기인 GW형 기기(101)와 키교환용의 통신을 실시하여 GW형 기기(101)와 세션 공유키를 공유한다. 세션 공유키는 데이터베이스 관리부(202)를 통해 데이터베이스부(203)에 기록된다.
데이터베이스부(203)는 암호화/인증처리에 이용하는 세션 공유키를 보존하는 기록부이고, 키 뿐만 아니라 암호 알고리즘 등의 정보도 보존한다. 데이터베이스부(203)로의 정보의 등록이나 삭제 등의 처리는 데이터베이스 관리부(202)가 실시한다. 암호화/인증처리부(204)는 데이터베이스부(203)의 키 정보등을 참조하여 패킷의 암호화·복호화/인증(완전성 체크)의 처리를 실시한다. 구체적으로는 암호화/인증처리부(204)는 LAN인터페이스(207) 및 통신 프로토콜 처리부(205)를 통해 LAN내의 단말로부터 평문의(암호화되지 않은) 송신 패킷을 수취한다. 이 송신 패킷을 수취하면 암호화/인증처리부(204)는 데이터의 암호화/인증처리용 데이터 추가 등의 처리를 실시하여 통신 프로토콜 처리부(206) 및 WAN인터페이스(208)를 통해 공중망에 송출한다. 따라서, 암호화/인증처리부(204) 이후의 통신 프로토콜 처리부(206) 및 WAN인터페이스(208)를 통해 송신되는 패킷은 암호화 완료가 된다. 또, 공중망측으로부터 도착한 암호화 완료의 수신 패킷에 대해서는 상기와는 반대의 순서로 암호화/인증처리부(204)에서 암호화 처리를 실시하여 LAN내의 단말에 대해 평문의 데이터를 송출한다.
이하, 본 발명이 제공하는 공유키 교환방법의 실시형태를 DH법에 의한 키 교환처리에 적용시킨 경우를 일례로 들어 설명한다. 또, 각 실시형태의 기기A 및 기기B는 암호화/인증처리와 공유키 교환처리를 실행하는 기기의 세트로 한다. 구체적으로는 도 1a의 GW형 기기(101)와 GW형 기기(102)의 세트, 도 1b의 GW형 기기(101)와 호스트형 기기(111)의 세트, 또는 호스트형 기기(110)와 호스트형 기기(111)의 세트 중 어느 하나에 대응한다. 또, 각 실시형태의 처리 순서로 나타내는 기기의 처리는 도 2a의 공유키 처리부(201)에서 실시된다.
(제 1 실시형태)
이하에 설명하는 제 1∼제 9 실시형태는 발명이 해결하고자 하는 과제에서 설명한 종래의 공유키 교환방법에 잔존하는 제 1 과제를 해결하기 위한 방법이다. 본 발명에서는 제 1 과제를 해결하기 위해 시간이 걸리는 연산처리가 있는 경우에 그 처리에 관한 응답 대기 기한(타임아웃 시간)을 연장하는 제어를 실시한다. 본 발명은 키 교환처리의 순서에 따라서 최적인 제어형태를 실현하는 것이 가능하지만, 그 중에서 대표적인 9개의 제어형태를 제 1∼제 9 실시형태에서 차례로 설명한다.
도 3은 본 발명의 제 1 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 3에서, 기기B는 기기A에 비해 처리능력이 떨어지는(예를 들면 낮은 성능의 CPU를 탑재하고 있는) 저성능의 기기라고 한다. 또, 기기A(이니세이터)로부터의 키 교환처리가 개시되어 기기B(레스폰더)와의 사이에서 키의 공유가 실현되는 것으로 한다. 또, 기기A 및 기기B는 키교환처리를 실행하기 전에 키교환처리의 연산에 이용되는 변수(g) 및 변수(n)의 값을 미리 알고 있는 것으로 한다(단계(S301, S302)).
키교환처리를 개시하면 기기A는 우선 자기기 고유의 비밀값(a)을 생성한다(단계(S303). 계속해서 기기A는 이 비밀값(a)과 변수(g) 및 변수(n)를 이용하여 상기 수학식 1의 연산에 의해 공개값(X)을 산출한다(단계(S304)). 그리고, 기기A는 산출한 공개값(X)을 기기B에 송신한다(단계(S305)). 여기까지의 처리는 상기한 종래의 처리(도 18의 단계(S1803∼S1805))와 동일하다. 이것들의 처리는 기기A측의 취득부 및 송신부에 의해 실시된다(도 2b 참조).
기기A로부터 공개값(X)을 수신하면 기기B는 상기 수학식 2의 연산에 의한 공개값(Y)의 산출에 걸리는 시간(Tb1)(비밀값(b)의 처리에 걸리는 시간도 포함) 및 상기 수학식 3의 연산에 의한 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb(=Tb1+Tb2)을 구한다(단계(S306)). 상기 처리는 기기B측의 수신부 및 추정부에 의해 실시된다(도 2b 참조). 이 연산 소요시간(Tb)은 공개값의 송신이 지연하는 것에 관한 정보이고, 저성능인 기기B가 기기A에 대해 공개값 및 공유키의 산출에 소정 이상의 시간을 요하는 것을 통지하기 위한 정보이다. 연산 소요시간(Tb)은 예를 들면 다음과 같이 하여 구해진다. 사전에 기기B상에서 기지의 변수(g) 및 변수(n)에 의한 공개값(Y) 및 공유키(K)의 산출을 시험적으로 실행해두고, 그 값(Time[g, n])을 보존해둔다. 그리고, 하기 수학식 6과 같이 이 값에 미리 정해둔 고정값(α)을 더한 것을 연산 소요시간(Tb)으로서 구한다. 고정값(α)은 기기A와 기기B사이에서 실시되는 메시지 송수신에 의한 지연시간과 변동을 고려한 값이다(이하의 각 실시형태와 동일).
기기B는 구한 연산 소요시간(Tb)을 기기A에 송신하여 이 연산소요시간(Tb)이 경과하기까지 공개값(Y)을 응답할 것을 기기A에 예고한다(단계(S307)). 이 송신 후 기기B는 자기기 고유의 비밀값(b)을 생성한다(단계(S308)). 그리고, 기기B는이 비밀값(b)과 변수(g) 및 변수(n)을 이용하여 상기 수학식 2의 연산에 의해 공개값(Y)을 산출한다(단계(S309)). 또, 기기B는 공개값(X)을 이용하여 상기 수학식 3의 연산에 의해 공유키(K)를 산출한다(단계(S310)). 그리고, 기기B는 산출한 공개값(Y)을 기기A에 송신한다(단계(S312)). 이것들의 처리는 기기B측의 취득부 및 송신부에 의해 실시된다(도 2b 참조).
기기A는 기기B로부터 연산 소요시간(Tb)을 수신하면(단계(S307)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을 이 수신으로부터 연산 소요시간(Tb)이 경과된 시점으로 연장하여 설정한다(단계(S311)). 즉, 기기A는 기기B로부터 공개값(Y)를 수신할 수 없었다는 판단을 최대 연산 소요시간(Tb)이 경과하기까지 대기하도록 한다. 그리고, 기기A는 타임아웃 시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S312)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측에서도 비밀값(a), 변수(n) 및 공개값(Y)을 이용하여 상기 수학식 4의 연산에 의해 공유키(K)를 바르게 계산할 수 있고(단계(S313)), 기기A 및 기기B의 양쪽에서 키 교환이 성공된다. 상기 처리는 기기A측의 설정부 및 취득부에 의해 실시된다(도 2b 참조).
이상과 같이, 본 발명의 제 1 실시형태에 따른 공유키 교환방법에 의하면 저성능의 기기는 키 교환처리에 필요한 연산 소요시간을 사전에 추정하고, 응답 메시지의 최대 지연시간을 대향하는 기기에 예고한다. 그리고, 예고를 받은 기기는 수신한 연산 소요시간에 따라서 응답 메시지의 유무를 판단하는 타임아웃 시간을 연장하여 설정한다. 이에 의해 어느 하나의 기기가 저성능이라도 저성능의 기기가아직 키 교환처리의 연산을 하고 있는 동안에 대향하는 기기가 응답 없음이라고 판단해버리는 종래의 과제가 발생하지 않으므로 문제없이 키 교환을 성공시킬 수 있다.
(제 2 실시형태)
도 4는 본 발명의 제 2 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 4에 있어서 기기A와 기기B의 관계는 상기 제 1 실시형태와 동일하다. 또, 도 4의 단계(S401∼S404, S407)의 처리는 상기 도 3의 단계(S301∼S305)의 처리와 동일하다.
본 제 2 실시형태에서는 기기B가 기기A로부터 공개값(X)을 수신하기까지 비밀값(b)을 생성하고(단계(S405)), 상기 수학식 2의 연산에 의해 공개값(Y)을 산출하고 있다(단계(S406)). 그리고, 기기A로부터 공개값(X)을 수신하면(단계(S407)), 기기B는 상기 수학식 3의 연산에 의한 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb=(Tb2))을 구한다(단계(S408)). 연산 소요시간(Tb2)은 예를 들면 상기 수학식 6의 연산을 이용하여 구할 수 있다. 그리고, 기기 B는 구한 연산 소요시간(Tb2)을 기기A에 송신하고, 이 연산 소요시간(Tb2)이 경과하기까지 공개값(Y)을 응답할 것을 기기A에 예고한다(단계(S409)). 이 송신 후, 기기B는 상기 수학식 3의 연산에 의해 공유키(K)를 산출하고(단계(S410)), 산출한 공개값(Y)을 기기A에 송신한다(단계(S412)).
기기A는 기기B로부터 연산 소요시간(Tb2)을 수신하면(단계(S409)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을, 이 수신으로부터 연산 소요시간(Tb2)이 경과한 시점으로 연장하여 설정한다(단계(S411)). 그리고, 기기A는 타임아웃 시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S412)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측이라도 공유키(K)를 바르게 계산할 수 있고(단계(S413)), 기기A 및 기기B의 양쪽에서 키 교환이 성공된다.
이상과 같이, 본 발명의 제 2 실시형태에 따른 공유키 교환방법에 의하면 저성능의 기기는 자신의 공개값의 산출이 대향하는 기기의 공개값을 수신하기까지 완료되어 있는 경우에는 공유키의 산출에 필요한 시간만을 고려한 연산 소요시간을 사전에 추정하면 상기 제 1 실시형태와 마찬가지로 키 교환을 성공시킬 수 있다.
(제 3 실시형태)
도 5는 본 발명의 제 3 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 5에서, 기기A와 기기B의 관계는 상기 제 1 실시형태와 동일하다. 또, 도 5의 단계(S501∼S505)의 처리는 상기 도 3의 단계(S301∼S305)의 처리와 동일하다.
기기A로부터 공개값(X)을 수신하면(단계(S505)), 기기B는 상기 수학식 2의 연산에 의해 공개값(Y)의 산출에 걸리는 시간(Tb1)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb(=Tb1))을 구한다(단계(S506)). 연산 소요시간(Tb1)은 예를 들면 상기 수학식 6의 연산을 이용하여 구할 수 있다. 그리고, 기기B는 구한 연산 소요시간(Tb1)을 기기A에 송신하여 이 연산 소요시간(Tb1)이 경과하기까지 공개값(Y)을 응답하는 것을 기기A에예고한다(단계(S507)). 이 송신 후, 기기B는 비밀값(b)을 생성하고(단계(S508)), 상기 수학식 2의 연산에 의해 공개값(Y)을 산출하고(단계(S509)), 산출한 공개값(Y)을 기기A에 송신한다(단계(S511)). 그리고, 공개값(Y)의 송신 후에 기기B는 상기 수학식 3의 연산에 의해 공유키(K)를 산출한다(단계(S512)).
기기A는 기기B로부터의 연산 소요시간(Tb1)을 수신하면(단계(S507)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을 이 수신으로부터 연산 소요시간(Tb1)이 경과한 시점으로 연장하여 설정한다(단계(S510)). 그리고, 기기A는 타임아웃 시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S511)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측에서도 공유키(K)를 바르게 계산할 수 있어(단계(S513)), 기기A 및 기기B의 양쪽에서 키 교환이 성공된다.
이상과 같이, 본 발명의 제 3 실시형태에 따른 공유키 교환방법에 의하면 저성능의 기기는 산출후 즉시 공개값을 대향하는 기기로 송신할 경우에는 공개값의 산출에 필요한 시간만을 고려한 연산 소요시간을 사전에 추정하면 상기 제 1 실시형태와 마찬가지로 키 교환을 성공시킬 수 있다.
(제 4 실시형태)
상기 제 1∼제 3 실시형태에서는 기기A로부터 기기B에 공개값(X)이 송신된 후에 기기B로부터 기기A에 연산 소요시간(Tb)이 송신되는 기본 순서를 설명했다. 그러나, 연산 소요시간(Tb)이 송신된 후에 공개값(X)이 송신되는 응용 순서라도 동일한 효과를 얻을 수 있다. 이하, 상기 제 1 실시형태에서 나타낸 기본 순서를 이 응용 순서로 대신한 실시형태를 설명한다.
도 6은 본 발명의 제 4 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 6에서 기기A와 기기B의 관계는 상기 제 1 실시형태와 동일하다.
키 교환처리를 개시하면 기기A는 우선 기기B에 대해 연산 소요시간의 문의를 실시한다(단계(S601)). 기기A로부터 문의를 받으면 기기B는 공개값(Y)의 산출에 걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb(=Tb1+Tb2))을 구한다(단계(S602)). 기기B는 구한 연산 소요시간(Tb)을 기기A에 송신하여 공개값(X)을 수신하고 나서 이 연산 소요시간(Tb)이 경과하기까지 공개값(Y)을 응답할 것을 기기A에 예고한다(단계(S603)).
기기A는 기기B로부터 연산소요시간(Tb)을 수신하면 비밀값(a)을 생성하고, 상기 수학식 1의 연산에 의해 공개값(X)을 산출하고, 산출한 공개값(X)을 기기B에 송신한다(단계(S606)∼(S608)). 또, 기기B는 기기A로부터 공개값(X)을 수신하면 비밀값(b)을 생성하고, 상기 수학식 2 및 수학식 3의 연산에 의해 공개값(Y) 및 공유키(K)를 각각 산출하고, 산출한 공개값(Y)을 기기A에 송신한다(단계(S609∼S611, S613)). 기기A는 기기B로부터 연산 소요시간(Tb)을 수신하면(기기(S603)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을 공개값(X)의 송신시부터 연산 소요시간(Tb)이 경과된 시점으로 연장하여 설정한다(단계(S612)). 그리고, 기기A는 타임아웃시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S613)), DH법에 의한 공개값의 응답이라고 판단한다.
또, 이 제 4 실시형태에서는 상기 제 1 실시형태에서 나타낸 기본 순서를 응용 순서로 대신한 경우를 설명했지만, 상기 제 2 및 제 3 실시형태에 대해서도 마찬가지로 기본 순서를 응용순서로 대신하는 것이 가능하다. 즉, 단계(S609, S610)를 단계(S608)전에 실행해도 좋고, 단계(S611)를 단계(S613)후에 실행해도 좋다. 또, 제 4 실시형태에서는 기기B의 연산 소요시간만을 기기A에 통지하는 순서를 설명했지만, 기기A도 연산 소요시간을 추정하고, 기기A와 기기B가 서로의 연산 소요시간을 서로 통지하는 순서로 해도 좋다.
(제 5 실시형태)
상기 제 1∼제 4 실시형태에서는 기기A 및 기기B의 양쪽에서 변수(g) 및 변수(n)의 값이 기지인 경우를 설명했다. 그러나, 변수(g) 및 변수(n)의 값이 키 교환처리전에 네고시에이션(negotiation)되는 경우도 생각할 수 있다. 이 경우에 있어서 상기 제 4 실시형태와 같이 최초로 연산 소요시간의 문의가 발생하는 순서이면 연산 소요시간의 추정방법이 바뀌어진다. 따라서, 본 제 5 실시형태에서는 변수(g) 및 변수(n)의 값이 미지이고, 또 최초로 연산 소요시간의 문의가 발생하는 순서에 의한 공유키 교환방법을 설명한다.
도 7은 본 발명의 제 5 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 7에서, 기기A와 기기B와의 관계는 변수(g) 및 변수(n)가 미지인 것 이외에는 상기 제 4 실시형태와 동일하다.
키 교환처리를 개시하면 기기A는 우선 기기B에 대해 연산 소요시간의 문의를 실시한다(단계(S701)). 기기A로부터 문의를 받으면 기기B는 공개값(Y)의 산출에걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb=(Tb1+Tb2))을 구한다(단계(S702)). 이 연산 소요시간(Tb)은 예를 들면 다음과 같이 하여 구해진다. 사전에 기기B상에서 변수(g) 및 변수(n)의 취할 수 있는 값의 여러가지 조합에 의한 연산을 복수회 시험적으로 실행하고, 그 최대값(Time_max_all)을 보존해둔다. 그리고, 하기 수학식 7과 같이 이 최대값에 미리 정해둔 고정값(α)을 더한 것을 연산 소요시간(Tb)으로서 구한다.
기기B는 구한 연산소요시간(Tb)을 기기A로 송신하고, 공개값(X)을 수신하고나서 이 연산 소요시간(Tb)이 경과하기까지 공개값(Y)을 응답할 것을 기기A에 예고한다(단계(S703)). 기기A는 기기B로부터 연산 소요시간(Tb)을 수신하면 변수(g) 및 변수(n)를 생성하여 기기B에 통지한다(단계(S704, S705)). 이에 대해 기기B는 기기A로부터 변수(g) 및 변수(n)를 취득하여 요해(了解)의 응답을 반송한다(단계(S706, S707)). 기기A가 기기B로부터 변수(g) 및 변수(n)에 대해 요해의 응답을 수신한 이후의 처리(단계(S709∼S716))는 상기 도 6의 단계(S607∼S614)와 동일하다.
이상과 같이, 본 발명의 제 5 실시형태에 따른 공유키 교환방법에 의하면 연산 소요시간의 문의 처리 이후에 변수(g) 및 변수(n)의 값이 네고시에이션되는 경우라도 최대 연산 소요시간을 추정하여 문제없이 키 교환을 성공시킬 수 있다.
또, 이 제 5 실시형태에서는 상기 제 4 실시형태(도 6)에서 나타낸 응용 순서에 있어서 변수(g) 및 변수(n)의 값이 네고시에이션된 경우를 설명했지만, 제 4 실시형태의 또 수기로 기재한 응용 순서에 대해서도 동일하게 적용시키는 것이 가능하다. 또, 연산 소요시간의 취득처리(단계(S701)∼(S703))를 변수(g) 및 변수(n)의 취득처리(단계(S704)∼(S707)) 이후에 실시해도 좋다. 또, 기기A로부터 기기B로의 변수(g) 및 변수(n)의 통지는 공개값(X)의 생성 후에 단계(S710)에서 공개값(X)과 동시에 통지하도록 해도 좋다.
(제 6 실시형태)
상기 제 2 실시형태(도 4)에서는 기기A에 의한 공개값(X)의 산출과 기기B에 의한 공개값(Y)의 산출이 병렬적으로 실시되는 순서를 설명했다. 그러나, 이 병렬적 순서의 경우에는 저성능인 기기B가 공개값(X)을 수신하기까지 공개값(Y)의 산출을 완료하지 않은 것도 생각할 수 있다. 예를 들면 상기 제 5 실시형태에서 설명한 바와 같이 키 교환처리 전에 변수(g) 및 변수(n)의 값이 네고시에이션되는 경우이다. 따라서, 본 제 6 실시형태에서는 변수(g) 및 변수(n)의 값이 미지인 경우에 있어서, 공개값(X) 및 공개값(Y)의 산출이 병렬적으로 실시되고, 또 최초로 연산 소요시간의 문의가 발생하는 순서에 의한 공유키 교환방법을 설명한다.
도 8a 및 도 8b는 본 발명의 제 6 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 8a 및 도 8b에 있어서, 기기A와 기기B의 관계는 변수(g) 및 변수(n)가 미지인 것 이외는 상기 제 2 실시형태와 동일하다.
도 8a에 있어서, 키 교환처리를 개시하면 기기A는 우선 기기B에 대해 연산소요시간의 문의를 실시한다(단계(S801)). 기기A로부터 문의를 받으면 기기B는 공개값(Y)의 산출에 걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산 소요시간(Tb(=Tb1+Tb2))을 구한다(단계(S802)). 이 연산 소요시간(Tb)은 예를 들면 다음과 같이 하여 구해진다. 사전에 기기(B)상에서 변수(n) 및 변수(g)를 취할 수 있는 값의 여러가지 조합에 의한 연산을 복수회 시험적으로 실행하고, 공개값(Y)의 산출에 관한 최대값(Time_maxY_all) 및 공유키(K)의 산출에 관한 최대값(Time_maxK_all)을 개별로 보존해둔다. 그리고, 하기 수학식 8a, 수학식 9a과 같이 이것들의 최대값으로 미리 정해둔 고정값(α)을 더한 것을 각각 연산 소요시간(Tb1, Tb2)으로서 구하고, 이것들을 가산하여 연산 소요시간(Tb)을 구한다.
기기B는 구한 연산 소요시간(Tb)을 기기A에 송신하여 연산 소요시간(Tb)이 경과하기까지 공개값(Y)을 응답할 것을 기기A에 예고한다(단계(S803)). 기기A는 기기B로부터 연산 소요시간(Tb)을 수신하면 변수(g) 및 변수(n)을 생성하여 기기(B)에 통지한다(단계(S804, S805)). 이에 대해 기기B는 기기A로부터 변수(g) 및 변수(n)을 취득하여 요해의 응답을 반송한다(단계(S806, S807)). 그 후, 기기B는 비밀값(b)을 생성하고, 상기 수학식 2의 연산에 의해 공개값(Y)을 산출한다(단계(S811, S812)).
기기A는 기기B로부터 변수(g) 및 변수(n)에 대해 요해의 응답을 수신하면 비밀값(a)을 생성하고, 상기 수학식 1의 연산에 의해 공개값(X)을 산출한다(단계(S808, S809)). 그리고, 기기A는 산출한 공개값(X)을 기기B에 송신한다(단계(S813)). 공개값(X)의 수신 후, 기기B는 공유키(K)를 산출한 후, 공개값(Y)을 기기A에 송신한다(딴계(S814, S816)).
기기A는 공개값(X)을 기기B로 송신하면(단계(S813)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을 공개값(X)의 송신시부터 연산 소요시간(Tb)이 경과된 시점으로 연장하여 설정한다(단계(S815)). 그리고, 기기A는 타임아웃 시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S816)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측에서도 공유키(K)를 바르게 계산할 수 있고(단계(S817)), 기기A 및 기기B의 양쪽에서 키 교환이 성공된다.
이상과 같이 본 발명의 제 6 실시형태에 따른 공유키 교환방법에 의하면 기기A에 의한 공개값(X)의 산출과 기기B에 의한 공개값(Y)의 산출이 병렬적으로 실시되는 경우라도 확실히 키 교환처리를 성공시킬 수 있다.
또, 이 제 6 실시형태에 의한 응용 순서는 기기A에 의한 공개값(X)의 산출과 기기B에 의한 공개값(Y)의 산출이 병렬적으로 실시되는 순서이면 적용 가능하다. 따라서, 도 8의 단계(S814)를 단계(S816) 이후에 실행해도 좋다. 또, 연산 소요시간의 취득처리(단계(S801∼S803))를 변수(g) 및 변수(n)의취득처리(단계(S804∼S807))이후에 실시해도 좋다.
또, 도 8b에 도시한 바와 같이 기기B에서의 공유키(K)의 산출처리(단계(S838)) 전에 공개값(Y)의 송신처리(단계(S836))를 실시해도 좋다. 이 경우에는 기기B는 공개값(Y)의 산출에 걸리는 연산 소요시간(Tb1)만을 추정하여 기기A에 송신해둔다(단계(S822, S823)). 그리고, 기기A는 공개값(X)의 송신 후, 기기(B)로부터의 응답 대기 기한(타임아웃 시간)을 이 송신으로부터 연산 소요시간(Tb1)이 경과된 시점으로 연장하여 설정한다(단계(S835)). 이 처리에 의해 기기A는 기기B로부터의 공개값(Y)을 타임아웃을 생기게 하지 않고 수신할 수 있다(단계(S836)).
(제 7 실시형태)
현상(現狀)의 IKE에서는 기기B가 공개값(Y)을 기기A에 통지했을 때, 공유키(K)의 산출까지 완료되었는지 여부의 규정은 없고, 기기B의 공유키(K)의 산출 완료를 기기A측에서 타임아웃 시간을 설치하여 기다리는 규정도 없다. 그러나, 상기 제 3 실시형태(도 5)와 같이 저성능인 기기B가 공개값(Y)의 송신 후에 공유키(K)를 시간을 들여 생성하는 경우, 다음과 같은 문제가 생기는 경우가 있다. 예를 들면, 기기A측이 공유키(K)를 산출한 후에 데이터를 공유키(K)로 암호화하여 송신한 경우, 기기B에서 공유키(K)의 산출이 완료되지 않으면 기기B는 수신한 암호화 데이터를 폐기해버리는 경우가 있는 문제가 있다. 또, 기기A가 공유키(K)를 산출한 후에 기기B에 어떤 메시지를 송신하고, 공유키(K)를 사용한 응답을 기기B로부터 대기하고 있는 경우, 기기B에서 공유키(K)의 산출이 지연되면 기기A에서의 응답대기의 타임아웃이 발생해버리는 문제가 있다. 따라서, 본 제 7 실시형태에서는 공개값(Y)의 송신 후에 기기B가 공유키(K)를 생성하기까지 타임아웃 시간을 설치하는 공유키 교환방법을 설명한다.
도 9a 및 도 9b는 본 발명의 제 7 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 9a 및 도 9b에 있어서, 기기A와 기기B의 관계는 상기 제 1 실시형태와 동일하다. 또, 도 9a 및 도 9b의 단계(S901∼S905)의 처리는 상기 도 3의 단계(S301∼S305)의 처리와 동일하다.
기기A로부터 공개값(X)을 수신하면(단계(S905)), 기기B는 공개값(Y)의 산출에 걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 키 교환처리를 위해 기기B측에서 필요로 하는 연산소요시간(Tb1, Tb2)을 구한다(단계(S906)). 이 연산소요시간(Tb1, Tb2)은 상기 수학식 8b 및 수학식 9b에 따라서 기지의 변수(g) 및 변수(n)를 이용한 사전의 시험적인 공개값(Y) 및 공유키(K)의 산출에 의해 구해진다.
그리고, 기기B는 구한 연산소요시간(Tb1, Tb2)을 기기A에 송신하고, 연산 소요시간(Tb1)이 경과하기까지 공개값(Y)을 응답하는 것, 및 그 응답에서 또 연산소요시간(Tb2)이 경과하기까지 공유키(K)의 산출이 완료되는 것을 기기A에 예고한다(단계(S907)). 그 후, 기기B는 비밀값(b)을 생성하고, 상기 수학식 2의 연산에 의해 공개값(Y)을 산출하고, 산출한 공개값(Y)을 기기A에 송신한다(단계(S908),(S909),(S911)). 그리고, 기기B는 공개값(Y)의 송신 후에 공유키(K)를 산출한다(단계(S912)).
기기A는 기기B로부터 연산 소요시간(Tb1, Tb2)을 수신하면(단계(S907)), 기기B로부터의 응답 대기 기한(타임아웃 시간)을 이 수신에서 연산 소요시간(Tb1)이 경과된 시점으로 연장하여 설정한다(단계(S910)). 그리고, 기기A는 타임아웃 시간까지 기기B가 공개값(Y)을 수신하면(단계(S911)), DH법에 의한 공개값의 응답이라고 판단하여, 자신의 공유키(K)를 생성한다(단계(S913)).
도 9a의 예는 암호화 데이터가 폐기되는 문제에 대응한 방법이다. 이 방법에서는 기기A는 공유키(K)를 생성한 후는 공개값(Y)을 수신한 시점에서 연산 소요시간(Tb2)의 경과를 기다리고, 기기B에 암호화된 데이터를 송신한다(단계(S914, S915)). 이 처리에 의해 기기B측에서 암호화데이터가 폐기되는 것도 해소할 수 있다.
도 9b의 예는 기기A측에서 응답 대기가 타임아웃하는 문제에 대응한 방법이다. 이 방법에서는 기기A는 공유키(K)를 생성한 후에 어떤 메시지를 송신한 후, 기기B로부터의 응답 대기 기한(타임아웃 시간)을 이 송신에서 연산 소요시간(Tb2)이 경과된 시점으로 연장하여 설정한다(단계(S924, S925)). 이 처리에 의해 기기A는 기기B로부터 응답 메시지를 수신할 수 있다(단계(S926)).
이상과 같이, 본 발명의 제 7 실시형태에 따른 공유키 교환방법에 의하면 기기B에 의한 공유키(K)의 산출이 공개값(Y)의 송신 후에 실시되는 경우라도 확실히 키 교환처리를 성공시킬 수 있다.
또, 이 제 7 실시형태에 의한 응용 순서는 저성능인 기기B에 의한 공유키(K)의 산출이 공개값(Y)의 송신 후에 실시되는 순서이면 적용가능하다. 따라서, 도 9a 및 도 9b의 단계(S906, S907)를 단계(S901)전에 실행해도 좋을 뿐만 아니라 또 단계(S908, 909)를 단계(S905)전에 실행해도 좋다.
(제 8 실시형태)
상기 제 1∼제 7 실시형태에서는 기기B(레스폰더)측이 저성능인 경우를 설명했지만, 본 제 8 실시형태에서는 키 교환처리를 개시하는 기기A(이니세이터)를 저성능인 경우의 공유키 교환방법을 설명한다.
도 10a 및 도 10b는 본 발명의 제 8 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 10a 및 도 10b에 있어서, 기기A는 기기B에 비해 처리능력이 떨어지는 저성능의 기기라고 한다. 또, 기기A(이니세이터)로부터 키 교환처리가 개시되고, 기기B(레스폰더)사이에서 키의 공유가 실현되는 것으로 한다.
우선, 도 10a에 있어서 키 교환처리를 개시하면 기기A는 상기 수학식 1의 연산에 의한 공개값(X)의 산출에 걸리는 시간(Ta1)(비밀값(a)의 생성에 걸리는 시간도 포함)을 추정하고, 키교환처리를 위해 기기A측에서 필요로 하는 연산 소요시간(Ta(=Ta1))을 구한다(단계(S1001)). 이 연산 소요시간(Ta1)은, 예를 들면 다음과 같이 하여 구해진다. 사전에 기기A상에서 변수(g) 및 변수(n)을 취할 수있는 값의 여러가지 조합에 의한 연산을 복수회 시험적으로 실행하고, 그 최대값(Time_max_all)를 보존한다. 그리고, 다음 수학식 10과 같이 이 최대값에 미리 정해둔 고정값(α)을 더한 것을 연산소요시간(Ta1)으로서 구해진다.
기기A는 구한 연산 소요시간(Ta1)을 기기B에 송신하여 이 연산 소요시간(Ta1)이 경과하기까지 공개값(X)을 송신하는 것을 기기B에 예고한다(단계(S1002)). 계속해서 기기A는 변수(g) 및 변수(n)를 생성하여 기기B에 통지한다(단계(S1003, S1004)). 이에 대해 기기B는 기기A로부터 변수(g) 및 변수(n)를 취득하여 요해의 응답을 반송한다(단계(S1005, S1006)). 기기(B)로부터 변수(g) 및 변수(n)에 대해 요해의 응답을 수신하면 기기A는 비밀값(a)을 생성하고, 상기 수학식 1의 연산에 의해 공개값(X)을 산출하고, 산출한 공개값(X)을 기기B에 송신한다(단계(S1007, S1008, S1010)).
기기B는 기기A에 변수(g) 및 변수(n)에 대해 요해의 응답을 송신하면(단계(S1006)), 기기A로부터의 응답 대기 기한(타임아웃 시간)을 이 송신으로부터 연산 소요시간(Ta1)이 경과한 시점으로 연장하여 설정한다(단계(S1009)). 즉, 기기B는 기기A로부터 공개값(X)을 수신할 수 없다는 판단을 최대 연산 소요시간(Ta1)이 경과하기까지 대기하도록 한다. 그리고, 기기B는 타임아웃 시간까지 기기A로부터 공개값(X)을 수신하면(단계(S1010)). 비밀값(b)을 생성하고, 상기 수학식 2 및 수학식 3의 연산에 의해 공개값(Y) 및 공유키(K)를 각각 산출한다(단계(S1011∼S1013)). 그리고, 기기B는 산출한 공개값(Y)을 기기A에 송신한다(단계(S1014)).
도 10a의 예에서는 공유키(K)의 산출에 대해 메시지 송신이 발생하지 않는 경우를 나타낸 것이다. 이 예에서는 기기A는 기기B로부터 공개값(Y)을 수신하면(단계(S1014)). DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측이라도 공유키(K)를 바르게 계산할 수 있고(단계(S1015)), 기기A 및 기기B의 양쪽에서 키 교환이 성공한다.
계속해서 도 10b의 예는 공유키(K)의 산출에 대해 메시지 송신이 발생하는 경우를 나타낸 것이며, 기기A가 공개값(Y)의 수신 후에 공유키(K)를 시간을 들여 생성하는 경우에 생기는 문제에 대응시킨 방법이다. 즉, 기기B가 공개값(Y)을 송신한 후에 기기A로부터 공유키(K)의 산출 완료의 통지를 기다리고 있는 경우이다.
이 경우에는 기기A는 연산 소요시간(Ta1)과 동일하게 하여 상기 수학식 4의 연산에 의한 공유키(K)의 산출에 걸리는 연산 소요시간(Ta2)을 추가로 추정하고(단계(S1021)), 연산소요시간(Ta2)도 기기B에 송신해둔다(단계(S1022)). 기기B는 공개값(Y)의 송신 후, 기기A로부터의 응답 대기 기한(타임아웃 시간)을, 이 송신으로부터 연산 소요시간(Ta2)이 경과된 시점으로 연장하여 설정한다(단계(S1034, S1036)). 이 처리에 의해 기기B는 기기A로부터의 공유키(K)의 산출 완료의 응답 메시지를 타임아웃을 생기게 하지 않고 수신할 수 있다(단계(S1037)).
이상과 같이, 본 발명의 제 8 실시형태에 따른 공유키 교환방법에 의하면 키교환처리를 개시하는 기기측이 저성능이라도 이 기기가 아직 키 교환처리의 연산을 하고 있는 동안에 대향하는 기기가 응답없음이라고 판단해버리는 종래의 과제가 생기지 않으므로 문제없이 키 교환을 성공시킬 수 있다.
또, 제 8 실시형태에서는 상기 제 5 실시형태(도 7)에서 나타낸 응용 순서에 대응시켜 키 교환처리를 개시하는 기기측이 저성능인 경우의 순서를 설명했다. 그러나, 이 순서는 저성능의 기기측의 공개값(X) 및 공유키(K)의 산출 전에 대향하는 기기가 연산 소요시간을 취득할 수 있는 순서이면(제 6 실시형태 등), 동일하게 적용시키는 것이 가능하다.
계속해서, 제 8 실시형태에서는 키 교환처리를 개시하는 기기A(이니세이터)가 저성능인 경우의 공유키 교환방법을 설명했지만, 기기A(이니세이터) 및 대향하는 기기B의 양쪽이 저성능인 경우도 생각할 수 있고, 이 경우에는 상기한 각 실시형태를 적절히 조합하여 실현할 수 있다.
(제 9 실시형태)
상기 제 1∼제 8 실시형태는 저성능의 기기가 연산 소요시간이라는 시간 정보를 대향하는 기기로 통지하고, 대향하는 기기가 통지에 따라서 타임아웃 시간을 연장시키는 공유키 교환방법을 설명했다. 계속해서 본 제 9 실시형태에서는 연산 소요시간의 통지를 실시하지 않는 공유키 교환방법을 설명한다.
도 11은 본 발명의 제 9 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 11에 있어서 기기A와 기기B의 관계는 상기 제 1 실시형태와 동일하다. 또, 도 11의 단계(S1101∼S1105)의 처리는 상기 도 3의단계(S301∼S305)의 처리와 동일하다.
기기A로부터 공개값(X)을 수신하면(단계(S1105), 기기B는 후에 공개값(Y)을 송신하는 것의 통지를 기기A에 응답한다(단계(S1106)). 이 통지 후, 기기B는 비밀값(b)의 생성을 개시하여 상기 수학식 2 및 수학식 3의 연산에 의해 공개값(Y)의 산출 및 공유키(K)의 산출(단계(S1107∼S1109)을 차례로 실행한다. 또, 이 산출과 병행하여 기기B는 공개값(Y)의 산출 및 공유키(K)의 산출이 완료되기까지 기기A로부터 후술하는 상황 확인/재송신 요구를 받을때마다 상기 통지를 실시한다(단계(S1111, S1113, S1115).
기기A는 기기B로부터 공개값(Y)을 수신하기까지(단계(S1116)), 기기B로부터 후에 공개값(Y)이 송신되는 것의 통지를 받을때마다(단계(S1106, S1111, S1113, S1115)) 소정의 재송신 간격(T)[초]으로 상황 확인/재송신 요구를 실시한다(단계(S1110, S1112, S1114)). 구체적으로는 기기A는 재송신 간격(T)[초]을 소정 타임아웃 시간보다 짧게 설정하고, 기기B로부터 후에 공개값(Y)이 송신되는 것의 통지를 받으면 그때까지의 시간 계측을 재설정하여 새롭게 시간 계측을 개시하는 것을 실시한다. 이와 같이 설정하면 타임아웃의 발생은 없어진다. 또는 후에 공개값(Y)이 송신되는 것의 통지를 기기B에서 한번 받으면 기기A가 재송신 간격(T)을 설정하지 않고 한정없이 공개값(Y)의 수신을 기다리는 처리로 전환하도록 해도 좋다.
그리고, 기기A는 기기B로부터 공개값(Y)을 수신하면(단계(S1116)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측에서도 공유키(K)를 바르게계산할 수 있고(단계(S1117)), 기기A 및 기기B의 양쪽에서 키 교환이 성공한다.
이상과 같이, 본 발명의 제 9 실시형태에 따른 공유키 교환방법에 의하면 저성능의 기기에서 키교환처리에 필요한 연산 소요시간을 사전에 추정하지 않고 키 교환을 성공시킬 수 있다.
또, 이 제 9 실시형태에서는 상기 제 1 실시형태에 의한 순서로 상황 확인/재송신 요구 및 후에 공개값(Y)이 송신되는 것의 통지를 적용시킨 경우를 설명했지만, 제 2∼제 8 실시형태에 의한 순서에 적용시켜도 동일한 효과를 가질 수 있다. 여기서, 제 3 실시형태(도 5) 등과 같이 공개값(Y)의 산출 후(단계(S509), 즉시 공개값(Y)을 송신하는(단계(S511) 경우에는, 공개값(Y)을 수신한 기기A는 그 후 기기B에 대해 공유키(K)의 산출이 완료되었는지 여부의 상황 확인을 실시하고, 이에 대해 기기B는 공유키(K)의 연산중인 것을 기기A에 회답하면 좋다.
또, 도 11의 단계(S1105, S1106)에서 송수신의 실패(패킷 로스)가 발생하는 경우도 있다. 따라서, 기기A가 이후에 공개값(Y)이 송신되는 것의 통지(단계(S1106))를 기다리지 않고 공개값(X)의 송신 후(단계(S1105)), 즉시 재송신 간격(T)의 시간 계측을 개시하도록 해도 좋다.
또, 상기 제 1∼제 9 실시형태에서는 DH법의 키 교환시에 사용하는 연산이 이산대수 문제를 이용한 멱승연산/모듈러연산인 경우를 설명했지만, 본 발명의 적용범위는 이 연산에 한정되지 않는다. 예를 들면 DH법의 변형으로서 타원곡선에 기초한 수학적 집합을 이용한 연산방법을 이용해도 좋다. 또, DH법에 관한 연산 소요시간의 추정방법으로서 사전에 계산한 결과를 보존하는 방법을 설명했지만, 이방법에 한정되지 않는다. 예를 들면 그 시점의 CPU사용율을 측정하고, CPU사용률이 다른 어플리케이션 등의 실행에 의해 높은 경우에는 연산 소요시간을 길게 추정해도 좋다. 또 복수의 기기와의 사이의 키 교환이 동시기에 집중할 가능성이 있는 경우에는 복수의 DH법의 처리가 대기열(queue)에 머무를 가능성이 있다. 이 때문에 DH법의 사용 대기열 등을 설치하고, 처리 순번에 따라서 연산 소요시간을 길게 추정해도 좋다.
또, 상기 제 1∼제 9 실시형태에서 설명한 처리 순서에서는 본 발명의 적용을 DH법의 연산과 공개값의 수수(授受) 부분에 한정하여 설명했지만, 그외의 DH법을 이용하는 키교환 프로토콜 부분에 적용해도 좋다. 예를 들면 도 19에서 설명한 바와 같이 IKE의 순서에서는 2군데(Phasel, 2)에서 DH법의 키 교환을 이용하고 있지만, 각 실시형태에서 설명한 메시지를 IKE의 그외의 메시지와 연휴시켜 실행해도 좋다. 구체적으로는 도 6의 단계(S601, S603)에서 실시하고 있는 연산 소요시간(Tb)의 문의 및 통지는 IKE의 Phase1의 각종 매개변수의 절충(도 19의 단계(S1901))중에 실시해도 좋다.
또, 상기 제 1∼제 9 실시형태에서는 고성능인 기기가 저성능인 기기측에서 연산 소요시간의 통지 또는 이후에 응답을 송신하는 것의 통지를 받은 경우를 설명했다. 그러나, 고성능인 기기는 저성능인 기기측에서 이와 같은 통지를 받지 않고 저성능인 기기로부터의 응답 대기 기한(타임아웃 시간)의 제어를 실시하는 것도 가능하다. 이하에 이 방법에 대해 설명한다.
이 방법에서는 고성능인 기기가 저성능인 기기로 소정 메시지(공개값의 송신등)를 송신하고나서 저성능인 기기로부터 응답을 수신하기까지의 시간을 계측하는 것을 실시한다. 구체예로서는 고성능인 기기가 저성능인 기기로 소정 메시지를 송신할 때 메시지 송신 시각(T1), 저성능인 기기를 특정하는 정보(IP어드레스 등), 및 처리 중의 키 교환의 종류를 특정하는 정보(식별ID 등)를 키교환 정보로서 기록해둔다. 그 후, 고성능인 기기가 저성능인 기기로부터 응답 메시지를 수신했을 때의 메시지 수신 시각(T2)을 취득한다. 고성능인 기기는 응답 메시지에 포함되는 키 교환정보를 추출하여 미리 기록해둔 대응하는 키 교환정보의 시각(T1)을 이용하여 시간(T1-T2)을 산출하여 기록해둔다. 이 시간(T1-T2)의 산출은 응답 메시지의 수신 기한을 만료한 후(타임아웃으로서 키 교환이 실패한 경우)라도 실시된다. 그리고, 고성능인 기기는 이후에 같은 종류의 키교환처리를 실행할 경우에는 이 산출한 시간(T1-T2)에 기초하여 타임아웃 시간을 설정한다.
또, 이 방법에서는 시간(T1-T2)을 산출하기까지의 동안은 미리 정해져 있는 타임아웃 시간의 디폴트값에 의해 교환처리가 실패하는 경우도 있지만, 다음회부터 실패하지 않도록 타임아웃 시간을 조정할 수 있다. 또, 실패할 것을 피하고 싶은 경우에는 타임아웃 시간의 디폴트값을 충분히 크게 설정해두면 좋다. 또, 최초에 산출한 시간(T1-T2)을 계속해서 사용해도 좋고, 키 교환처리를 실시할 때마다 상기한 계측을 실시하여 갱신해도 좋다. 또, 산출한 시간(T1-T2)을 반드시 사용할 필요가 없고, 디폴트값 보다도 긴 경우에만 타임아웃 시간을 조정해도 좋다. 또, 산출한 시간(T1-T2)이 디폴트값보다도 짧은 경우에는 타임아웃 시간을 단축해도 좋다.
이 방법이면 기존의 키 교환 프로토콜과의 호환성이 있으므로 1개의 통신기기에만 본 발명을 실장시키는 것만으로(다른 한쪽의 통신기기는 기존의 기기를 사용해도) 타임아웃에 의한 키교환 실패의 문제를 방지할 수 있다.
(제 10 실시형태)
이하에 설명하는 제 10 및 제 11 실시형태는 상기한 제 1 과제를 해결하고, 또 제 2 과제를 해결하기 위한 방법이다. 본 발명에서는 제 2 과제를 해결하기 위해 리키처리(후술)의 개시 타이밍을 제어하는 것을 실시하고 있고, 키 교환처리의 개시 이전에 연산 소요시간의 수수가 실시되는 순서(제 4 실시형태 등)로 적용가능하다. 그 중에서 특징적인 2가지 제어형태를 제 10 및 제 11 실시형태에 의해 설명한다.
실시형태의 설명 이전에 리키처리의 개요를 도 12를 참조하여 설명한다.
배경기술에서도 설명한 바와 같이, 같은 공유키를 장시간에 걸쳐 사용하면 그 동안에 공유키가 제 3 자에 의해 해독되는 것이 전혀 없다고는 할 수 없다. 따라서, 이에 대응하기 위해 작성하는 공유키에 수명을 설정한다. 그리고, 현재 사용중인 공유키의 수명이 만료되기 전에 소정의 리키처리에 의해 다음의 새로운 공유키를 작성하고, 사용중인 공유키의 수명이 만료하기 전에 이 새로운 공유키로 전환하는 것을 실시한다. 본 제 10 실시형태에서는, 이 리키처리의 완료시각(t_ end)이 현재 사용 중인 공유키의 수명 만료 시각(end)보다도 앞이 되도록 리키처리의 개시시각(t_ start)을 산출하여, 리키처리를 개시하는 방법이다. 또, 본 발명을 실현하기 위해서는 키 수명이 리키처리의 개시부터 완료까지 필요한 시간(처리순서에 따라서 상기한 연산소요시간(Ta1, Ta2, Tb1, Tb2) 중 어느 하나 또는 조합으로 정한다)이상으로 설정되어 있을 필요가 있다. 이 키 수명의 설정은 일반적으로 도 19의 각종 매개변수의 절충처리(단계(S1901))에서 실시된다.
도 13은 본 발명의 제 10 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 13에서, 기기B는 기기A에 비해 처리능력이 떨어지는 저성능의 기기라고 한다. 또, 기기A(이니세이터)로부터 리키처리가 개시되고, 기기B(레스폰더)와의 사이에서 새로운 키의 공유가 실현되는 것으로 한다. 또, 기기A 및 기기B는 리키처리를 실행하기 전에 리키처리의 연산에 이용되는 변수(g) 및 변수(n)의 값을 미리 알고 있는 것으로 한다(단계(S1306, S1307)).
리키처리를 개시하는데 있어서, 기기A는 우선 기기B에 대해 연산소요시간의 문의를 실시한다(단계(S1301)). 이와 함께 기기A는 공개값(X)의 산출에 걸리는 시간(Ta1) 및 공유키(K)의 산출에 걸리는 시간(Ta2)을 추정하고, 리키처리를 위해 기기A측에서 필요로 하는 연산소요시간(Ta(Ta1, Ta2))을 구한다(단계(S1302)). 이 연산 소요시간(Tb1, Tb2)은 예를 들면 다음과 같이 구해진다. 사전에 기기A상에서 변수(g) 및 변수(n)의 취할 수 있는 값의 여러가지 조합에 의한 연산을 복수회 시험적으로 실행하고, 공개값(X)의 산출에 관한 최대값(Time_maxX_all) 및 공유키(K)의 산출에 관한 최대값(Time_ maxK_all)을 개별로 보존해둔다. 그리고 하기 수학식 11 및 수학식 12와 같이 이것들의 최대값에 미리 정해둔 고정값(α)을 더한 것을 각각 연산소요시간(Ta1, Ta2)으로서 구한다.
한편, 기기A로부터 문의를 받은 기기B는 공개값(Y)의 산출에 걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 리키처리를 위해 기기B측에서 필요로 하는 연산소요시간(Tb(Tb1, Tb2))을 구한다(단계(S1303)). 이 연산소요시간(Tb1, Tb2)은 예를 들면 상기 수학식 8a 및 수학식 9a에 의해 구해진다. 그리고, 기기B는 구한 연산 소요시간(Tb1, Tb2)을 기기A에 송신한다(단계(S1304)).
기기A는 기기B로부터 연산소요시간(Tb1, Tb2)을 수신하면(단계(S1304)), 연산소요시간(Tb1, Tb2)과 자신의 연산소요시간(Ta1, Ta2)에 기초하여 하기 수학식 13을 만족하는 임의의 리키처리의 개시시각(T_Start)을 산정한다(단계(S1305)).
여기서, end는 현재 사용중인 공유키의 수명만료시각이고, 일반적으로는 기기A와 기기B와 같은 시각으로 설정된다. 그러나, 이 시각이 다른 것은 드물게 있고, 그 경우에는 기기A의 키의 수명 만료 시각(t_endA)과, 기기B의 키의 수명만료시각(t_endB)의 차의 절대값(│t_endB-t_endA│)만 계산값에 여유를 더하면 좋다. 일반적으로는 비밀값, 공개값 및 공유키의 연산에 요하는 시간의 수배에서 10배 이상의 시간을 키 수명으로 설정하는 경우가 많기 때문에 대부분 문제는 생기지 않는다.
이 때문에 기기A는 연사소요시간의 문의를 단계(S1301∼S1305)의 처리에 필요한 시간(t_AB)을 예상하여 빨리 개시하지 않으면 안되게 된다. 이를 실현하기 위해서는 현재의 공유키를 생성한 직후에 단계(S1301∼S1305)를 실행하여 다음 리키처리의 개시시각(t_start)을 미리 산정해두면 좋다. 그리고, 시각(t_start-t_AB)이 오면 단계(S1301∼S1305)를 다시한번 실행하여 그 때의 최신의 연산 소요시간을 문의하여 개시시각(t_start)을 다시 산정하도록 해도 좋다.
기기A는 산정된 개시시각(t_start)이 오면 리키처리를 개시한다. 우선, 기기A는 비밀값(a)을 생성하고, 상기 수학식 1의 연산에 의해 공개값(X)을 산출하고, 산출한 공개값(X)을 기기B에 송신한다(단계(S1308∼S1310)). 한편, 기기B는 기기A로부터 공개값(X)을 수신하면 비밀값(b)을 생성하고, 상기 수학식 2 및 수학식 3의 연산에 의해 공개값(Y)을 산출 및 새로운 공유키(K)를 산출한다(단계(S1311∼S1313)). 그리고, 기기B는 산출한 공개값(Y)을 기기A에 송신한다(단계(S1315)).
기기A는 기기B로부터 수신한 연산소요시간(Tb)에 기초하여 기기B로부터의 응답 대기 기한(타임아웃 시간)을 공개값(X)의 송신으로부터 연산소요시간(Tb(=Tb1+Tb2))이 경과된 시점으로 연장하여 설정한다(단계(S1314)). 그리고, 기기A는 타임아웃시간까지 기기B로부터 공개값(Y)을수신하면(단계(S1315)), DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기A측이라도 새로운 공유키(K)를 바르게 계산할 수 있고(단계(S1316)), 현재 사용중인 공유키의 수명이 만료되기 전(t_end)에 기기A 및 기기B의 양쪽에 새로운 키 교환, 즉 리키처리가 성공한다. 이 이후는 이 새로운 공유키(K)가 사용된다.
이상과 같이, 본 발명의 제 10 실시형태에 따른 공유키 교환방법에 의하면 각 기기에서 키교환처리에 필요한 연산소요시간을 사전에 추정하고, 한쪽의 기기가 이 추정값에 기초하여 리키처리의 개시시각을 산정한다. 이에 의해 현재 사용중인 공유키의 수명이 만료되기 전에 리키처리를 성공시킬 수 있다.
또, 연산소요시간(Ta1)에 의한 공개값(X)의 연산(단계(S1308, S1309))과 연산 소요시간(Tb1)에 의한 공개값(Y)의 연산(단계(S1311, S1312))이 병렬적으로 실시되는 경우에는 상기 수학식 13에 대신하여 하기 수학식 14를 이용할 수 있다. 또, MAX(Ta1, Tb1)는 Ta1과 Tb1의 큰 쪽의 값을 나타낸다.
또, 연산소요시간(Ta2)에 의한 공유키(K)의 연산(단계(S1316))과 연산 소요시간(Tb2)에 의한 공유키(K)의 연산(단계(S1313))이 병렬적으로 실시되는 경우에는 상기 수학식 13에 대신하여 하기 수학식 15를 이용할 수 있다. 또, MAX(Ta2, Tb2)는 Ta2와 Tb2의 큰 쪽의 값을 나타낸다.
또, 상기 공개값의 연산과 공유키의 연산과의 양쪽이 병렬적으로 실시되는 경우에는 하기 수학식 16을 이용할 수 있다.
(제 11 실시형태)
도 14는 본 발명의 제 11 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리 순서도이다. 도 14에서, 기기B는 기기A에 비해 처리능력이 떨어지는 저성능의 기기라고 한다. 이 제 11 실시형태에서는 각각의 기기가 자신의 연산 소요시간에만 기초하여 리키처리의 개시 시각(t_start)을 추정한다. 따라서, 저성능의 기기가 결과적으로 리키처리의 이니세이터가 된다.
기기A는 공개값(X)의 산출에 걸리는 시간(Ta1) 및 공유키(K)의 산출에 걸리는 시간(Ta2)을 추정하고, 리키처리를 위한 기기A측에서 필요로 하는 연산소요시간(Ta(Ta1, Ta2))을 구한다(단계(S1401). 이 연산소요시간(Ta1, Ta2)은 예를 들면 상기 수학식 11 및 12에 의해 구해진다. 또, 기기B는 공개값(Y)의 산출에 걸리는 시간(Tb1) 및 공유키(K)의 산출에 걸리는 시간(Tb2)을 추정하고, 리키처리를 위해 기기B측에서 필요로 하는 연산소요시간(Tb(Tb1, Tb2))을 구한다(단계(S1402)). 이 연산소요시간(Tb1, Tb2)은 예를 들면 상기 수학식 8a 및수학식 9a에 의해 구해진다.
기기A는 추정한 연산소요시간(Ta1, Ta2)에 기초하여 하기 수학식 17을 만족하는 임의의 리키처리의 개시시각(t_startA)을 산정한다(단계(S1403)). 또, 기기B는 추정한 연산소요시간(Tb1, Tb2)에 기초하여 하기 수학식 18을 만족하는 임의의 리키처리의 개시 시각(t_startB)을 산정한다(단계(S1404)). 이 수학식 17 및 수학식 18에서는 대응하는 기기가 동일한 성능인 경우를 가정하고, 각 식의 우변에서 연산 소요시간을 각각 2배로 하고 있다. 또, 상기한 바와 같이 키의 수명 만료 시각이 기기A와 기기B에서 다른 경우에는 하기 수학식 17 및 수학식 18의 「end」를 각각 「end_A」와 「end_B」로서 연산하면 좋다.
이 예에서는 기기B가 기기A보다도 저성능이므로, 통상 상기 수학식 17의 우변보다도 수학식 18의 우변쪽이 빠른 시간이 된다. 따라서, 이 경우, 개시 시각(t_startB)이 오면 기기B에 의해 리키처리가 개시된다. 기기B는 변수(g)및 변수(n)를 생성하여 기기A에 통지하여, 리키처리를 개시한 것을 선언한다(단계(S1405, S1406)). 이 선언에 의해 기기A는 산정한 자신의 리키처리의 개시시각(t_startA)에 구속받지 않고 각 처리 단계를 실시하게 된다. 기기A는 기기B로부터 변수(g)및 변수(n)을 취득하여 요해의 응답을 반송한다(단계(S1407, S1408)). 기기A로부터 변수(g) 및 변수(n)에 대해 요해의 응답을 수신하면 기기B는 비밀값(b)을 생성하고, 상기 수학식 2의 연산에 의해 공개값(Y)을 산출하고, 산출한 공개값(Y)을 기기A에 송신한다(단계(S1407, S1408, S1410)). 또, 새로운 변수(g) 및 변수(n)를 사용하지 않는(앞의 수치를 사용할) 경우는, 리키처리 개시의 통지와 그 요해의 응답을 실시하는 것만으로 좋다.
기기A는 기기B에 변수(g) 및 변수(n)에 대해 요해의 응답을 송신하면(단계(S1408)), 기기B로부터의 응답 대기 기한(리얼타임 시간)을 이 송신으로부터 연산 소요시간(Tb1)이 경과된 시점으로 연장하여 설정한다(단계(S411)). 그리고, 기기A는 타임아웃시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S1412)), 비밀값(a)을 생성하고, 상기 수학식 1 및 수학식 4의 연산에 의해 공개값(X) 및 공유키(K)를 산출하고, 산출한 공개값(X)을 기기B로 송신한다(단계(S1411∼S1414)).
기기B는 기기A로부터 공개값(X)을 수신하면 DH법에 의한 공개값의 응답이라고 판단한다. 따라서, 기기B측에서도 공유키(K)를 바르게 계산할 수 있고(단계(S1415)), 현재 사용중인 공유키의 수명이 만료되기 전에 기기A 및 기기B의 양쪽에서 새로운 키 교환, 즉 리키처리가 성공한다. 이 이후는 이 새로운 공유키(K)가 사용된다.
이상과 같이, 본 발명의 제 11 실시형태에 따른 공유키 교환방법에 의하면 각 기기에서 키 교환처리에 필요한 연산 소요시간을 사전에 추정하고, 각각의 기기가 이 추정값에 기초하여 리키처리의 개시시각을 산정하여 개시시각이 빠른 기기가 처리를 개시한다. 이에 의해 서로 대향하는 기기의 연산소요시간을 알지 못하고, 현재 사용중인 공유키의 수명이 만료되기 전에 리키처리를 성공시킬 수 있다.
또, 연산소요시간의 추정은 기기A 및 기기B에서 현재 사용중 또는 과거에 사용하는 키 교환처리시에 실시한 처리시간 또는 CPU부하값을 소정의 기억부(도 2의 데이터베이스부(203))에 각각 기억해두고, 그 수치에 기초하여 실시해도 좋다. 또, 연산소요시간은 도 14의 단계(S1401, S1402))의 추정처리시의 기기A 및 기기B의 각 CPU부하값과, 상기 처리시간 또는 CPU부하값으로부터 추정해도 좋다.
또, 이제까지 키의 수명이 시간의 단위로 규정되는 것을 전제로 설명했지만, 시간이외의 단위로 키의 수명을 규정하는 시스템도 있다. 예를 들면 키를 사용하여 암호화한 패킷의 바이트수(누적수)의 상한을 설치하고, 바이트수 단위로 키의 수명을 규정하는 시스템이다. 이 경우, 수명 만료 시각을 바이트수로부터 추정하고, 상기한 처리에 의해 리키처리의 개시시각을 결정할 수 있다. 구체적으로는 과거의 이력으로부터 단위시간당 암호 통신 패키의 송수신 바이트수를 구하고, 키의 수명의 바이트수분만큼 송수신에 걸리는 시간을 구하고, 수명만료시각으로서 추정한다.
(제 12 실시형태)
이하에 설명하는 제 12 실시형태는 상기한 제 1 및 제 2 과제를 해결하고, 또 제 3 과제를 해결하기 위한 방법이다. 본 발명에서는 제 3 과제를 해결하기 위해 리키처리의 경우에 한하여 시간이 걸리는 연산처리를 부하 분산시키는 것을 실시한다. 본 발명은 상기 제 10 및 제 11 실시형태와 마찬가지로 키 교환 처리의 개시 이전에 연산 소요시간의 수수가 실시되는 순서로 적용 가능하다. 본 제 12 실시형태에서는 대표적인 제어형태를 설명한다.
우선, 제 12 실시형태에서 실시하는 제어의 개념을 설명한다. 상기 해결하고자 하는 과제에 있어서 네트가전과 같이 저성능의 기기이고, DH법 등의 고부하인 연산처리를 실행하면 다른 어플리케이션의 실행에 영향을 준다고 설명했다. 그러나, 이것은 DH법의 연산처리를 연속시켜 실시하는 경우의 이야기이며, 실제의 키 교환처리는 항상 연속 실행시켜 최단시간에 완료시킬 필요는 없다. 구체적으로는 패킷 통신을 실시하는 단말의 요청 등에 의해 키를 신규로 교환할 경우에는 키 교환의 지연시간이 단말의 어플리케이션에서의 지연으로서 사용자에게 지각되어버리므로, 가능한한 빨리 키교환을 완료시킬 필요가 있다. 한편, 일단 키를 교환한 후에 정기적으로 키를 갱신하는 리키처리의 경우는 현재의 키를 사용한 통신을 실시하면서 새로운 키의 교환을 실시하므로, 수명만료까지 완료하면 키 교환처리의 개시부터 완료까지의 시간은 길어도 좋다. 이 때문에 제 12 실시형태에서는 키교환 처리를 최단시간에 완료시키는지 여부를 판정하고, 최단시간에 의한 처리가 필요하지 않는 리키처리의 경우는 고부하의 처리를 소단위로 나눠 실행하고, 시간적으로 부하 분산시키는 것을 실시한다.
도 15는 본 발명의 제 12 실시형태에 따른 공유키 교환방법을 설명하기 위한 처리순서도이다. 도 15에 있어서, 기기B는 기기A에 비해 처리 능력이 떨어지는 저성능의 기기라고 한다. 또, 기기A(이니세이터)로부터 키교환처리가 개시되고, 기기B(레스폰더)와의 사이에서 키의 공유가 실현되는 것으로 한다. 또, 기기A 및 기기B는 키 교환처리를 실행하기 전에 키교환처리의 연산에 이용되는 변수(g) 및 변수(n)의 값을 미리 알고 있는 것으로 한다(단계(S1506, S1507)).
우선, 저성능인 기기B에서는 사전에 DH법의 공개값(Y) 및 공유키(K)의 연산에 따른 전처리를 복수의 균등한 처리 단위(이하, 소처리 단위라고 함)로 나눈다. 또, 소정의 단위시간에 1소처리 단위를 실행했을 때의 CPU사용율(Ucpu)을 실측한 결과를 기록해두기로 한다. 또, 기기B가 실시해야 하는 모든 소처리 단위의 수를 Total로 한다. 또, 기기A와 기기B와의 사이에서 현재 공유하고 있는 키의 수명이 시각(end)으로 만료되는 것을 알고 있는 것으로 한다.
도 15에서, 기기A는 기기B의 키 갱신시의 연산소요시간을 문의한다(단계(S1501)). 이 문의의 타이밍은 시각(end)에서 충분히 여유를 가진 타이밍으로 실시하는 것이 바람직하고, 새롭게 키 교환처리를 개시하는 시점이라도 좋고, 키 교환이 완료된 정상 상태중이라도 좋다. 기기B는 기기A로부터 연산 소요시간의 문의를 받으면 그 시점에서의 다른 어플리케이션의 평균적인 CPU사용율(Acpu)을 측정한다. 그리고, 기기B는 다른 어플리케이션의 처리를 유지한 채, DH법의 연산에 사용할 수 있는 나머지 CPU사용율(Dcpu) 및 단위시간의 실행 가능한 소처리 단위의 수(num)를 추정하고, 하기 수학식 19∼수학식 21의 연산에 의해 연산 소요시간(Tbb)을 구한다(단계(S1503)).
기기B는 구한 연산소요시간(Tbb)을 기기A에 송신한다(단계(S1504)).
한편, 기기A측이라도 상기 수학식 19∼수학식 21의 연산에 준하여 자신의 DH법에 따라 연산 소요시간(Taa)을 구한다(단계(S1502)). 그리고, 기기A는 기기B로부터 연산소요시간(Tbb)을 수신하면 연산소요시간(Tbb)과 연산소요시간(Taa)에 기초하여 하기 수학식 22를 만족하는 키 교환처리의 개시시각(t_start)을 산정한다(단계(S1505)).
이 산출이 끝나면 기기A는 개시시각(t_start)이 도래하기까지 대기하고, 도래한 시점에서 비밀값(a)을 생성하고, 상기 수학식 1의 연산에 의해 공개값(X)을 산출하고, 산출한 공개값(X)을 기기B에 송신한다(단계(S1508∼S1510)).
기기B는 기기A로부터 공개값(X)을 수신하면 그 공개값(X)에 기초하여 이미 존재하는 키의 갱신이 요구되어 있는지, 신규로 키를 작성하는 것이 요구되어 있는지를 판정한다(단계(S1511)). 구체적으로는 기기B는 키의 정보를 기억하여 데이터베이스(도 2중의 데이터베이스(203)에 대응)를 검색하고, 대응하는 키가 존재하는경우는 「갱신」, 존재하지 않는 경우는 「신규작성」이라고 판정한다. 이 처리는 기기B측의 판정부에 의해 실시된다(도2b 참조). 기기B는 판정결과에 따라서 이후의 DH법의 연산의 실행방법을 바꾼다. 즉, 키의 「신규작성」이라고 판정된 경우에는 기기B로서의 최단 시간으로 실행하고, 「키의 갱신」이라고 판정된 경우에는 기기A에 통지한 연산소요시간(Tbb)의 시간을 들여 천천히 처리한다. 도 15의 처리 순서에서는 요구가 「키의 갱신」이라고 판정된 경우를 나타내며, 기기B는 단위시간당 Dcpu/Ucpu개의 소처리 단위를 실행하고, 연산소요시간(Tbb)의 시간을 들여 공개값(Y)을 산출하여 기기A에 송신한다(단계(S1512∼1514)).
한편, 기기A는 기기B로부터의 응답 대기 기한(타임아웃 시간)을, 공개값(X)의 송신에서 연산소요시간(Tbb)이 경과된 시점으로 연장하여 설정한다(단계(S1515)). 그리고, 기기A는 타임아웃시간까지 기기B로부터 공개값(Y)을 수신하면(단계(S1516)), 상기 수학식 4의 연산에 의해 새로운 공유키(K)를 산출한다(단계(S1517)).
이상과 같이, 본 발명의 제 12 실시형태에 의하면 키 교환처리를 최단시간에 완료시켜야하는지 여부를 판정하고, 최단시간에 완료시킬 필요가 없는 키갱신과 같은 처리에 한정하여 키교환처리에 따른 고부하의 연산을 시간적으로 부하 분산시킨다. 이에 의해 저성능의 기기라도 키교환의 처리가 장기간에 걸쳐 CPU를 점유하는 일이 없어지고, 같은 CPU상에서 동작하는 다른 어플리케이션도 바르게 동작할 수 있게 된다. 또, 고부하의 연산을 시간적으로 부하분산할 때 키의 수명을 고려하여 키교환의 처리 지연시간이 통상보다 길어져도 현재 실시하고 있는 암호화/인증처리등에 의한 통신을 문제없이 계속할 수 잇다. 또, 대향하는 기기로의 응답으로서 공개값을 송신하기까지의 지연시간이 길어지지만, 키 갱신과 같이 키교환의 처리 지연의 길이가 사용자의 패킷 송수신에 영향을 미치지 않으므로 특별히 문제가 되지 않는다.
또, 일례로서 기기B에서 DH법의 연산에 필요한 CPU의 처리량이 Im-200MI(MI=메가인스트럭션)이고, 복수의 균등한 처리 단위, 즉 소처리 단위로서 2MI로 나누는 경우, Total의 값은 100(처리단위)이다. 기기B의 CPU의 처리능력이 100MIPS(MIPS=MI/초)의 경우, 소처리 단위의 2MI를 단위시간동안에 실행할 때의 CPU사용율(Ucpu)은 2%이다. 기기B의 CPU의 처리능력을 다른 어플리케이션에 50MIPS만큼 사용하는 경우, 나머지 CPU사용율(Dcpu)은 50%이다. 따라서, 단위시간에 실행가능한 DH법의 사용 단위수(Dcpu/ Ucpu)는 25(처리 단위/초)이다. 따라서, Total×Ucpu/Dcpu는 100/25=4초가 된다. 20%의 변동 등의 여유를 예상하면 지연시간은 4.8초로 하면 좋다.
또, 처리의 부하 분산을 효율적으로 실시할 수 있는 방법을 이하에 설명한다.
이 방법에서는 키 교환이 종료하면 기기A 및 기기B는 가능한한 빨리 다음 리키처리에 들어간다. 우선, 기기B는 CPU사용량(Im)의 추정을 실시한다(단계(S1503)). CPU 사용량(Im)은, 예를 들면 기기B가 실시한 키의 작성처리의 실행 명령수(단위;MI)로 나타낼 수 있다. 전회의 CPU사용량(Im)을 기억해두고, 그 값을 사용해도 좋다. 기기A는 현재 시각으로부터 키의 수명 만료시각(end)까지의 나머지 시간부터 연산 소요시간(Taa)을 뺀 시간(TWb)을 구하고(단계(S1505)), 이것을 기기B로의 할당 시간(TWb)으로서 공개값(X)과 함께 기기B에 통지한다(단계(S1510)). 기기B는 단위시간당 CPU사용율(Im/TWb+β)을 CPU에 할당하여(단계(S1511)), 비밀값(b)의 생성, 공개값(Y)의 연산 및 공유키(K)의 연산을 실시한다(단계(S1512∼S1514)). β는 처리의 변동이나 전후에 필요한 처리를 실시하기 위한 여유분이다. 일반적으로 시간(TWb)을 크게 하면 단위시간당의 CPU 사용율(Im/TWb+β)을 100%보다 충분히 작은 값으로 할 수 있다. 그렇게 하면, 남은 CPU사용율의 부분을 키교환 처리 이외의 어플리케이션에 할당하는 여유가 생긴다. 연산소요시간(Tbb)대신에 기기B용의 할당시간(TWb+α)이 타임아웃 대기시간으로서 설정된다. 이 경우, 단계(S1501)는 불필요해진다.
이와 같이 하면, 기기B에서 키교환처리로 할당되는 단위시간당의 CPU처리량을 항상 낮게 할 수 있으므로 다른 어플리케이션에 할당할 CPU처리량을 많이 확보해둘 수 있다. 또, 상기 단위시간당 CPU사용율(Im/TWb+β)을 할당의 최소량으로 하고, 다른 어플리케이션의 구동이 적어 CPU처리능력에 여유가 있는 시간대에는 보다 큰 CPU 사용율을 할당하여 빨리 키교환처리를 진행하도록 해도 좋다.
또, 도 15의 순서가 기기A와 기기B에서 공개값의 연산 및 공유키의 연산이 병렬적으로 실시되는 순서가 되어도 상기와 마찬가지로 처리의 부하분산을 효율적으로 실시할 수 있다. 이 경우에는 기기B가 CPU사용량(Im)의 추정을 실시하고, 현재 시각에서 키의 수명 만료시각까지의 나머지 시간(TYb)을 산출하고, 단위시간당 CPU사용율(Im/TYb+β)을 CPU에 할당한다. 그리고, 기기B가 비밀값(b)의 생성, 공개값(Y)의 연산 및 공유키(K)의 연산을 실시한다. 일반적으로 나머지 시간(TYb)을 크게 하면 단위시간당 CPU사용율(Im/TYb+β)을 100% 보다 충분히 작은 값으로 할 수 있다. 그렇게 하면 남은 CPU사용율의 부분을 키 교환 처리 이외의 어플리케이션으로 할당하는 여유가 생긴다. 한편, 기기A는 자신의 CPU사용량의 추정을 실시한다. 전회의 CPU사용량은 기기A에서도 Im이다. 기기A는 현재 시각에서 키의 수명 만료 시각까지의 나머지 시간(TYa)을 산출하고, 단위시간당 CPU사용율(Im/TYa+β)을 CPU에 할당한다. 그리고, 기기A는 비밀값(a)의 생성, 공개값(X)의 연산 및 공유키(K)의 연산을 실시한다. 또, 기기A의 CPU사용량이 기기B의 경우와는 다른 경우에는 기기A의 CPU사용량을 이용하면 좋다.
또, 기기A 및 기기B의 연산 진행속도가 거의 동일해지므로 공개값(X)의 통지 및 공개값(Y)의 통지는 거의 같은 시각으로 실시되게 된다. 따라서, 기기B의 CPU처리능력이 낮아도 기기B의 공유키(K)의 연산완료가 키의 수명만료시각에 맞게 된다.
(그외의 응용 실시형태)
상기 제 1∼제 12에서 설명한 실시형태는 암호화/인증처리를 실시한 데이터를 송수신하는 2개의 통신기기의 사이에서 공유키로 교환하는 경우의 공유키 교환방법에 대해 설명했다. 특히 DH법의 방법이나 IKE방법으로 특화하여 설명했지만, 상대의 기기에서 수신한 공개값과 자신이 생성한 비밀값에 기초하여 공유키를 계산할 수 있으면 DH법이나 IKE 이외의 공유키 교환방법에 대해서도 적용 가능하다.
예를 들면, 도 16에 도시한 세션 공유키(또는 세션 공유키를 교환하기 위한정보)를 공유키로 암호화하여 배포하는 경우이다. 이 경우, 기기B(사용자측)가 저성능이면 단계(S1607(빗금친 부분))에서 실시되는 처리의 시간이 길어지고, 기기A(키 발행국측)에서 응답수신이 타임아웃할 가능성이 있다. 따라서, 이 경우에는, 예를 들면 기기B가 단계(S1603)를 실행하기까지 공개키 암호처리에 걸리는 연산소요시간을 기기A에 통지하거나, 단계(S1603)후에 공개키에 의한 암호화데이터의 송신이 늦어지는 것을 통지하면 좋다.
또, 도 17에 도시한 키 관리 센터를 경유시켜 기기A 및 기기B에 키를 배포하는 경우이다. 이 경우, 도 17의 단계(S1702∼S1705, S1713, S1715, S1716, S1718(빗금친 부분))의 처리에서 처리 시간이 길어지고, 대향하는 기기에서 응답수신이 타임아웃할 가능성이 있다. 따라서, 이 경우에는 각 기기가 상기하는 단계를 실행하기까지 그 처리에 걸리는 연산소요시간 또는 처리가 늦어지는 것을 통지하면 좋다.
또, 상기 각 실시형태에서는 본 발명의 타임아웃 시간의 지연제어를 높은 부하가 드는 처리로서 키교환처리를 일례로 설명했지만, 키교환처리에 따른 디지털 서명에 의한 인증이나 공개암호키를 이용한 인증 등에도 적용시킬 수 있다. 이것들에 응용한 경우에도 인증처리에 있어서 연산에 시간이 걸려 응답이 늦어지는 처리의 타임아웃시간을 미리 구한 연산소요시간에 기초하여 연장할 수 있다.
전형적으로는 상기 각 실시형태에서 설명한 공유키 교환방법은, 기억장치(ROM, RAM, 하드디스크 등)가 저장된 상기한 처리순서를 실행 가능한 소정의 프로그램 데이터가 CPU에 의해 해석 실행되는 것으로 실현된다. 이 경우, 프로그램 데이터는 기록매체를 통해 기억장치내에 도입되어도 좋고, 기록매체상에서 직접 실행되어도 좋다. 또, 이 기록매체는 ROM, RAM, 플렉시블디스크, CD-ROM, DVD, 메모리카드, 하드디스크 등의 기록매체를 말한다. 또, 기록매체는 전화 회선이나 반송로 등의 통신매체를 포함하는 개념이다.
방법 1. 상기 다른쪽의 통신기기는,
상기 소정의 연산에 걸리는 연산 소요시간을 추정하는 추정단계와,
상기 추정한 연산소요시간을 상기 한쪽의 통신기기로 송신하는 시간 송신 단계를 추가로 구비하며,
상기 한쪽의 통신기기는 상기 연산소요시간을 상기 다른쪽의 통신기기로부터 수신하는 수신 단계를 추가로 구비하는 것을 특징으로 하는 청구항 2∼5에 기재된 공유키 교환방법.
방법 2. 상기 한쪽의 통신기기는 상기 다른쪽 통신기기에 상기 연산소요시간의 문의를 실시하는 단계를 추가로 구비하며,
상기 다른쪽의 통신기기는 상기 한쪽의 통신기기로부터 문의에 따라서 상기 추정 단계 및 상기 시간 송신단계를 실행하는 것을 특징으로 하는 방법 1에 기재된 공유키 교환방법.
방법 3. 상기 다른쪽의 통신기기는 추정하는 상기 연산소요시간을 사전에 보존하고 있는 것을 특징으로 하는 방법 1에 기재된 공유키 교환방법.
방법 4. 상기 사전에 보존하고 있는 상기 연산소요시간은 과거의 상기 소정의 연산에 걸렸던 최대시간인 것을 특징으로 하는 방법 3에 기재된 공유키 교환방법.
방법 5. 상기 다른쪽의 통신기기는 다음 응답 타이밍까지 응답이 지연되는 내용의 통지를, 상기 한쪽의 통신기기에 적어도 1회 송신하는 단계를 추가로 구비하고,
상기 한쪽의 통신기기는 상기 다른쪽 통신기기로부터 상기 통지를 수신하는 단계를 추가로 구비하며, 상기 설정 단계에서 상기 통지에 기초하여 상기 응답 대기기한을 설정하는 것을 특징으로 하는 청구항 2∼5에 기재된 공유키 교환방법.
방법 6. 상기 한쪽의 통신기기는 메시지를 송신하고 나서 상기 다른쪽 통신기기로부터 상기 소정의 연산 후의 응답을 수신하기까지의 시간을 계측하고, 상기 소정의 연산에 걸리는 시간을 취득하는 것을 특징으로 하는 청구항2∼5에 기재된 공유키 교환방법.
장치 1. 상기 취득부는,
자기의 공개값을 산출하여 상대의 통신기기로 송신하는 공개값 산출부와,
상대의 통신기기로부터 상대의 공개값을 수신하고, 상기 상대의 공개값에 기초하여 공개키를 산출하는 공유키산출부를 포함하며,
상기 설정부는 상대의 통신기기에서 상기 공개값의 산출까지 걸리는 시간 또는 상기 공유키의 산출까지 걸리는 시간의 적어도 어느하나에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 2. 상기 취득부는 공유키를 산출하는 공유키 산출부를 포함하며,
상기 정보수신부는 상기 공유키산출부에서 산출한 공유키 또는 그 공유키를생성하기 위한 정보에 소정의 암호화를 실시하여 상대의 통신기기로 송신하고,
상기 설정부는 상대의 통신기기에서 상기 암호화된 공유키의 신호에 걸리는 시간, 또는 상기 암호화된 공유키를 생성하기 위한 정보의 복호 및 공유키의 생성에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 3. 임의의 메시지를 송신한 후, 암호화된 공유키 또는 공유키를 생성하기 위한 정보를 상대의 통신기기로부터 수신하는 경우, 상기 설정부가 상대의 통신기기에서 공유키 또는 공유키를 생성하기 위한 정보의 암호화에 걸리는 시간에 기초하여 상기 응답 대기의 기한을 설정하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 4. 인증을 위한 디지털 서명이 된 데이터를 상대의 통신기기로 송신하는 경우, 상기 설정부가 상대의 통신기기에서 디지털 서명이 된 데이터에 따라서 본인성 인증처리에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 5. 인증을 위한 공개키 암호를 이용한 데이터를 상대의 통신기기로 송신하는 경우, 상기 설정부가 상대의 통신기기에 있어서 공개키 암호를 이용한 데이터에 따른 본인성 인증처리에 걸리는 시간에 기초하여 상기 응답 대기의 기한을 설정하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 6. 상기 설정부는 상대의 통신기기로부터 수신하는 상기 소정의 연산에 걸리는 시간을 추정한 연산소요시간에 기초하여 상기 소정의 연산에 걸리는 시간을취득하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 7. 상대의 통신기기에 상기 다음의 응답 타이밍까지 실시하는 소정의 연산에 걸리는 문의를 실시하는 문의 송신부를 추가로 구비하는 청구항 19에 기재된 통신기기.
장치 8. 상기 시간송신부는 상대의 통신기기로부터의 문의에 따라서 상기 연산소요시간을 송신하는 것을 특징으로 하는 청구항 27 및 청구항 28에 기재된 통신기기.
장치 9. 추정하는 상기 연산소요시간이 사전에 보존되어 있는 것을 특징으로 하는 청구항 27 및 청구항 28에 기재된 통신기기.
장치 10. 상기 사전에 보존되어 있는 상기 연산소요시간은 과거의 상기 소정의 연산에 걸렸던 최대시간인 것을 특징으로 장치 9에 기재된 통신기기.
장치 11. 상기 설정부는 메시지를 송신하고 나서 상대의 통신기기로부터 상기 소정의 연산후의 응답을 수신하기까지의 시간을 계측하고, 상기 소정의 연산에 걸리는 시간을 취득하는 것을 특징으로 하는 청구항 19에 기재된 통신기기.
장치 12. 상대의 통신기기에서, 다음 응답 타이밍까지 상기 공개값 및 상기 공유키의 산출이 실행되는 경우,
상기 설정부는 상대의 통신기기가 상기 공개값 및 상기 공유키를 산출하기까지 걸리는 합계 시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출 완료에 관한 응답 대기의 기한을 설정하는 것을 특징으로 하는 청구항 20에 기재된 통신기기.
장치 13. 상대의 통신기기에 있어서, 다음 응답 타이밍까지 상기 공개값의 산출이 실행되는 경우,
상기 설정부가 상대의 통신기기가 상기 공개값을 산출하기까지 걸리는 시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출완료에 관한 응답 대기의 기한을 설정하는 것을 특징으로 하는 청구항 20에 기재된 통신기기.
장치 14. 상대의 통신기기에 있어서, 다음 응답 타이밍까지 상기 공유키의 산출이 실행되는 경우,
상기 설정부가 상대의 통신기기가 상기 공유키를 산출하기까지 걸리는 시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출완료에 관한 응답 대기의 기한을 설정하는 것을 특징으로 하는 청구항 20에 기재된 통신기기.
장치 15. 상기 공유키의 산출완료후에 완료 통지를 상대의 통신기기에 송신하는 완료송신부와,
상대의 통신기기로부터 상기 완료 통지를 받기까지 키 교환처리 실패의 판단을 실시하지 않는 완료수신부를 추가로 구비하는 것을 특징으로 하는 청구항 20에 기재된 통신기기.
방법 A-1. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 2개의 통신기기사이에서 실시되는 공유키를 교환하는 공유키 교환방법으로서,
각각의 통신기기가,
공유키를 산출하기 위해 실시하는 소정의 연산에 걸리는 연산소요시간을 추정하는 추정단계와,
상대의 통신기기와의 사이에서 공유키의 교환을 완료해야 하는 시각까지 공유키의 교환처리를 완료시키기 위한 처리개시시각을 상기 연산소요시간에 기초하여 산정하는 산정 단계를 구비하며,
어느 한쪽이 통신기기가 상기 처리개시시각에 키 교환처리를 개시하는 개시 단계를 추가로 구비하는 것을 특징으로 하는 공유키 교환방법.
방법 A-2. 다른쪽의 통신기기가 상기 추정단계에서 추정한 상기 연산소요시간을 상기 한쪽의 통신기기로 송신하는 시간 송신 단계를 추가로 구비하며,
상기 한쪽의 통신기기가 상기 다른쪽 통신기기로부터 상기 연산소요시간을 수신하는 단계를 추가로 구비하며, 상기 연산 단계에서 자기의 상기 연산소요시간과 상기 다른쪽 통신기기의 연산소요시간에 기초하여 상기 처리개시시각을 산정하는 것을 특징으로 하는 방법A-1에 기재된 공유키 교환방법.
방법 A-3. 상기 한쪽의 통신기기는 상기 다른쪽의 통신기기에 상기 연산소요시간의 문의를 실시하는 단계를 추가로 구비하며,
상기 다른쪽 통신기기는 상기 한쪽의 통신기기로부터의 문의에 따라서 상기 설정단계 및 상기 시간 송신단계를 실행하는 것을 특징으로 하는 방법 A-2에 기재된 공유키 교환방법.
방법 A-4. 상기 산정 단계에서 산정한 처리 개시시각이 빠른 쪽의 통신기기가 그 처리 개시시각에 상기 개시 단계를 실행하는 것을 특징으로 하는 방법A-1에 기재된 공유키 교환방법.
방법 A-5. 상기 통신기기가 공유키의 산출이 신규인지 갱신인지를 판정하는판정단계를 추가로 구비하며, 상기 갱신인 경우에는 상기 공유키를 산출하기 위해 실시하는 소정의 연산이 소정의 소단위로 분할되어 시간적으로 부하 분산되는 것을 특징으로 하는 방법 A-1∼A-4의 어느 하나에 기재된 공유키 교환방법.
방법 A-6. 상기 부하 분산은 상기 공유키를 산출하기 위해 실시하는 소정의 연산에 걸리는 시간이 긴 쪽의 통신기기가 실행하는 것을 특징으로 하는 방법 A-5에 기재된 공유키 교환방법.
방법 A-7. 상기 추정단계는 공유키를 산출하기 위해 자기기가 실시하는 소정 연산에 걸리는 실시간의 2배의 시간을 상기 연산소요시간으로서 추정하는 것을 특징으로 하는 방법 A-1에 기재된 공유키 교환방법.
장치 A-1. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 대향하는 상대의 통신기기와의 사이에서 공유키를 교환하는 통신기기로서,
공유키를 산출하기 위해 실시하는 소정의 연산에 걸리는 연산소요시간을 추정하는 추정부와,
상대의 통신기기와의 사이에서 공유키의 교환을 완료해야 하는 시각까지 공유키의 교환처리를 완료시키기 위한 처리개시시각을 상기 연산소요시간에 기초하여 산정하는 산정부와,
상기 처리개시시각에 키 교환처리를 개시하는 처리부를 구비하는 것을 특징으로 하는 통신기기.
장치 A-2. 상대의 통신기기로부터 상기 연산소요시간을 수신하는 수신부를 추가로 구비하며,
상기 산정부가 자기의 상기 연산소요시간과 상대의 통신기기의 연산소요시간에 기초하여 상기 처리개시시각을 산정하는 것을 특징으로 하는 장치 A-1에 기재된 통신기기.
장치 A-3. 상기 추정부에서 추정한 상기 연산소요시간을 상대의 통신기기로 송신하는 시간 송신부를 추가로 구비하는 것을 특징으로 하는 장치 A-1에 기재된 통신기기.
장치 A-4. 상대의 통신기기에 상기 연산소요시간의 문의를 실시하는 문의부를 추가로 구비하는 것을 특징으로 하는 장치 A-2에 기재된 통신기기.
장치 A-5. 상대의 통신기기로부터의 문의에 따라서 상기 연산소요시간을 상대의 통신기기에 송신하는 것을 특징으로 하는 장치 A-3에 기재된 통신기기.
장치 A-6. 상기 처리부는 산정한 처리개시시각이 상대의 통신기기의 처리개시시각보다도 빠른 경우에 키 교환처리를 개시하는 것을 특징으로 하는 장치A-1에 기재된 통신기기.
장치 A-7. 공유키의 산출이 신규인지 갱신인지를 판정하는 판정부를 추가로 구비하며,
갱신인 경우에는 상기 공유키를 산출하기 위해 실시하는 소정의 연산이 소정의 소단위로 분할되어 시간적으로 부하 분산되는 것을 특징으로 하는 장치A-1에 기재된 통신기기.
장치 A-8. 상기 부하 분산은 상기 공유키를 산출하기 위해 실시하는 소정의 연산에 걸리는 시간이 긴 경우에 실행되는 것을 특징으로 하는 장치 A-7에 기재된통신기기.
본 발명의 공유키 교환방법은 네트워크를 통해 비익성(秘匿性)이 높은 데이터를 송수신하는 통신기기사이에 이용가능하고, 특히 암호화/인증용 비밀키를 교환 및 공유하는 경우에 유용하다.
이상, 본 발명을 상세히 설명했지만, 상기한 설명은 모든 점에서 본 발명의 예시에 불과하고, 그 범위를 한정하고자 하는 것이 아니다. 본 발명의 범위를 이탈하지 않고 여러가지 개량이나 변형을 실시할 수 있는 것을 물론이다.

Claims (34)

  1. 암호화/개찬인증처리가 실시된 데이터를 송수신하기 위해, 2개의 통신기기사이에서 실시되는 공유키를 교환하는 공유키 교환방법에 있어서,
    적어도 한쪽의 통신기기는,
    대향하는 다른쪽의 통신기기가 공유키를 취득하기 위해 필요한 정보를, 상기 다른쪽의 통신기기에 송신하는 정보 송신 단계; 및
    상기 다른쪽 통신기기가 다음 응답 타이밍까지 실시하는 소정의 연산에 걸리는 시간에 기초하여 상기 다른쪽의 통신기기로부터의 응답 대기 기한을 설정하는 설정 단계를 구비하며,
    상기 다른족 통신기기는,
    상기 소정의 연산을 실시하여 상기 정보로부터 공유키를 취득하는 취득 단계; 및
    상기 응답타이밍에서 상기 한쪽의 통신기기로 소정의 응답을 송신하는 응답 송신 단계를 구비하는 것을 특징으로 하는 공유키 교환방법.
  2. 제 1 항에 있어서,
    각각의 상기 통신기기는 자기의 공개값을 산출하여 상대의 통신기기에 송신하고, 또 상대의 통신기기에서 상대의 공개값을 수신하여, 상기 상대의 공개값에 기초하여 공유키를 산출하여 공유키의 교환을 실현하고,
    상기 한쪽의 통신기기의 상기 설정 단계가 상기 다른쪽 통신기기에서 상기 공개값의 산출까지 걸리는 시간 또는 상기 공유키의 산출까지 걸리는 시간의 적어도 어느 하나에 기초하여 상기 응답 대기의 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  3. 제 1 항에 있어서,
    한쪽의 통신기기가 자기기에서 생성한 공유키 또는 공유키를 생성하기 위한 정보에 소정 암호화를 실시하여 다른쪽 통신기기로 송신하고, 다른쪽 통신기기가 한쪽의 통신기기에서 수신하는 암호화된 공유키를 복호 또는 공유키를 생성하기 위한 정보를 복호하여 공유키를 생성하고, 공유키 취득의 응답을 한쪽의 통신기기로 송신하여 공유키의 교환을 실현하고,
    상기 한쪽의 통신기기의 상기 설정단계가 상기 다른쪽 통신기기에서 상기 암호화된 공유키의 신호에 걸리는 시간 또는 공유키를 생성하기 위한 정보의 복호 및 공유키의 생성에 걸리는 시간에 기초하여 상기 응답 대기의 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  4. 제 1 항에 있어서,
    다른쪽 통신기기가 상기 한쪽의 통신기기로부터 요구 메시지를 수신한 후, 공유키 또는 공유키를 생성하기 위한 정보를, 한쪽의 통신기기에서 수신하는 공개키를 이용하여 암호화하여 한쪽의 통신기기로 송신하여 공유키의 교환을 실현하고,
    상기 한쪽의 통신기기의 상기 설정 단계가 상기 다른쪽의 통신기기에서 상기 공유키 또는 공유키를 생성하기 위한 정보의 암호화에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  5. 제 1 항에 있어서,
    상기 소정 연산은 공유키의 취득에 따른 인증처리를 위한 연산, 또는 공유키의 취득에 따른 인증처리를 위한 연산, 또 공유키를 취득하기 위한 연산인 것을 특징으로 하는 공유키 교환방법.
  6. 제 5 항에 있어서,
    한쪽의 통신기기가 인증을 위한 디지털 서명이 된 데이터를 다른쪽 통신기기로 송신하고, 다른쪽 통신기기가 한쪽의 통신기기로부터 수신하는 디지털 서명이 된 데이터에 따라서 본인성 인증처리를 실시하여 인증처리를 실현하고,
    상기 한쪽의 통신기기의 상기 설정 단계가 상기 다른쪽 통신기기에서 상기 본인성 인증처리에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  7. 제 5 항에 있어서,
    한쪽의 통신기기가 인증을 위한 공개 키 암호를 이용한 데이터를 다른쪽의 통신기기로 송신하고, 다른쪽의 통신기기가 한쪽의 통신기기로부터 수신하는 공개키 암호를 이용한 데이터에 따라서 본인성 인증처리를 실시하여 인증처리를 실현하고,
    상기 한쪽의 통신기기의 상기 설정 단계가 상기 다른쪽의 통신기기에서 상기 본인성 인증처리에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  8. 제 1 항에 있어서,
    상기 다른쪽의 통신기기는,
    상기 소정의 연산에 걸리는 연산소요시간을 추정하는 추정단계; 및
    상기 추정한 연산소요시간을 상기 한쪽의 통신기기로 송신하는 시간 송신 단계를 추가로 구비하며,
    상기 한쪽의 통신기기는 상기 연산소요시간을 상기 다른쪽 통신기기로부터 수신하는 수신 단계를 추가로 구비하는 것을 특징으로 하는 공유키 교환방법.
  9. 제 8 항에 있어서,
    상기 한쪽의 통신기기는 상기 다른쪽 통신기기에 상기 연산소요시간의 문의를 실시하는 단계를 추가로 구비하며,
    상기 다른쪽 통신기기는 상기 한쪽의 통신기기로부터의 문의에 따라서 상기 추정단계 및 상기 시간 송신단계를 실행하는 것을 특징으로 하는 공유키 교환방법.
  10. 제 8 항에 있어서,
    상기 다른쪽의 통신기기는 추정하는 상기 연산소요시간을 사전에 보존하고 있는 것을 특징으로 하는 공유키 교환방법.
  11. 제 1 항에 있어서,
    상기 다른쪽의 통신기기는 다음의 응답 타이밍까지 응답이 지연되는 내용의 통지를 상기 한쪽의 통신기기에 적어도 1회 송신하는 단계를 추가로 구비하며,
    상기 한쪽의 통신기기는 상기 다른쪽의 통신기기로부터 상기 통지를 수신하는 단계를 추가로 구비하고, 상기 설정단계에서 상기 통지에 기초하여 상기 응답대기의 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  12. 제 1 항에 있어서,
    상기 한쪽의 통신기기는 메시지를 송신하고나서 상기 다른쪽 통신기기로부터 상기 소정의 연산 후의 응답을 수신하기까지의 시간을 계측하여 상기 소정의 연산에 걸리는 시간을 취득하는 것을 특징으로 하는 공유키 교환방법.
  13. 제 2 항에 있어서,
    상기 다른쪽의 통신기기에서, 다음 응답타이밍까지 상기 공개값 및 상기 공유키의 산출이 실행되는 경우,
    상기 한쪽의 통신기기의 설정단계가 상기 다른쪽의 통신기기가 상기 공개값및 상기 공유키를 산출하기까지 걸리는 합계시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출완료에 관한 응답 대기의 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  14. 제 2 항에 있어서,
    상기 다른쪽의 통신기기에서, 다음 응답타이밍까지 상기 공개값의 산출이 실행되는 경우,
    상기 한쪽의 통신기기의 설정단계가 상기 다른쪽의 통신기기가 상기 공개값을 산출하기까지 걸리는 합계시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출완료에 관한 응답 대기 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  15. 제 2 항에 있어서,
    상기 다른쪽의 통신기기에서, 다음 응답타이밍까지 상기 공유값의 산출이 실행되는 경우,
    상기 한쪽의 통신기기의 설정단계는 상기 다른쪽의 통신기기가 상기 공유키를 산출하기까지 걸리는 합계시간에 기초하여 상기 공개값의 송신 또는 상기 공유키의 산출완료에 관한 응답 대기 기한을 설정하는 것을 특징으로 하는 공유키 교환방법.
  16. 제 2 항에 있어서,
    상기 통신기기는,
    상기 공유키의 산출 완료후에 완료 통지를 상대의 통신기기에 송신하는 단계; 및
    상대의 통신기기로부터 상기 완료통지를 받기까지 키교환처리 실패의 판단을 실시하지 않는 단계를 추가로 구비하는 것을 특징으로 하는 공유키 교환방법.
  17. 제 2 항에 있어서,
    IKE의 메시지 순서에서, 상기 정보 송신단계, 설정단계, 취득단계 및 응답 송신단계가 실행되는 것을 특징으로 하는 공유키 교환방법.
  18. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 대향하는 상대의 통신기기와의 사이에서 공유키를 교환하는 통신기기에 있어서,
    상대의 통신기기가 공유키를 취득하기 위해 필요한 정보를 상기 상대의 통신기기에 송신하는 정보송신부;
    상대의 통신기기로부터 응답을 수신하는 수신부;
    상대의 통신기기가 다음 응답 타이밍까지 실시하는 소정의 연산에 걸리는 시간에 기초하여 상기 수신부에서 수신하는 상대의 통신기기로부터의 응답이 응답 대기 기한을 설정하는 설정부를 구비하는 것을 특징으로 하는 통신기기.
  19. 제 18 항에 있어서,
    소정의 연산을 실시하여 상대의 통신기기로부터 수신하는 공유키를 취득하기 위해 필요한 정보로부터 공유키를 취득하는 취득부; 및
    소정의 응답 타이밍으로 상대의 통신기기로 소정의 응답을 송신하는 응답송신부를 추가로 구비하는 것을 특징으로 하는 통신기기.
  20. 제 18 항에 있어서,
    상기 취득부는,
    자기의 공개값을 산출하여 상대의 통신기기에 송신하는 공개값 산출부; 및
    상대의 통신기기로부터 상대의 공개값을 수신하여 상기 상대의 공개값에 기초하여 공유키를 산출하는 공유키산출부를 포함하고,
    상기 설정부가 상대의 통신기기에서 상기 공개값의 산출까지 걸리는 시간 또는 상기 공유키의 산출까지 걸리는 시간의 적어도 어느 하나에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 통신기기.
  21. 제 18 항에 있어서,
    상기 취득부는 공유키를 산출하는 공유키 산출부를 포함하고,
    상기 정보송신부는 상기 공유키 산출부에서 산출한 공유키 또는 그 공유키를 생성하기 위한 정보에 소정의 암호화를 실시하여 상대의 통신기기로 송신하고,
    상기 설정부는 상대의 통신기기에서 상기 암호화된 공유키의 복호에 걸리는시간, 또는 상기 암호화된 공유키를 생성하기 위한 정보의 복호 및 공유키의 생성에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 통신기기.
  22. 제 18 항에 있어서,
    임의의 메시지를 송신한 후, 암호화된 공유키 또는 공유키를 생성하기 위한 정보를 상대의 통신기기에서 수신하는 경우, 상기 설정부는 상대의 통신기기에서 공유키 또는 공유키를 생성하기 위한 정보의 암호화에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 통신기기.
  23. 제 18 항에 있어서,
    인증을 위한 디지털 서명이 된 데이터를 상대의 통신기기로 송신하는 경우, 상기 설정부가 상대의 통신기기에서 디지털 서명이 된 데이터에 따라서 본인성 인증 처리에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 통신기기.
  24. 제 18 항에 있어서,
    인증을 위한 공개키 암호를 이용한 데이터를 상대의 통신기기로 송신하는 경우, 상기 설정부가 상대의 통신기기에서 공개키 암호를 이용한 데이터에 따른 본인성 인증 처리에 걸리는 시간에 기초하여 상기 응답 대기 기한을 설정하는 것을 특징으로 하는 통신기기.
  25. 제 18 항에 있어서,
    상기 설정부는 상대의 통신기기로부터 수신하는 상기 소정의 연산에 걸리는 시간을 추정한 연산소요시간에 기초하여 상기 소정의 연산에 걸리는 시간을 취득하는 것을 특징으로 하는 통신기기.
  26. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 대향하는 상대의 통신기기 사이에서 공유키를 교환하는 통신기기에 있어서,
    상대의 통신기기로부터 공유키를 취득하기 위해 필요한 정보를 수신하는 수신부;
    상기 수신부에서 수신한 정보로부터 공유키를 취득하기까지 요하는 시간에 관한 정보를 상대의 통신기기로 송신하는 시간송신부;
    소정의 연산을 실시하여 상기 수신부에서 수신한 정보로부터 공유키를 취득하는 취득부; 및
    소정 응답 타이밍으로 상대의 통신기기로 소정의 응답을 송신하는 응답 송신부를 구비하는 통신기기.
  27. 제 26 항에 있어서,
    다음 응답 타이밍까지 실시하는 소정의 연산에 걸리는 연산 소요시간을 추정하는 추정부를 추가로 구비하며,
    상기 시간송신부는 상기 추정부에서 추정된 연산 소요시간을 상대의 통신기기로 송신하는 것을 특징으로 하는 통신기기.
  28. 제 19 항에 있어서,
    다음 응답 타이밍까지 실시하는 소정의 연산에 걸리는 연산소요시간을 추정하는 추정부;
    상기 추정부에서 추정된 연산소요시간을 상대의 통신기기로 송신하는 시간송신부를 추가로 구비하는 것을 특징으로 하는 통신기기.
  29. 제 18 항에 있어서,
    상대의 통신기기에 상기 연산소요시간의 문의를 실시하는 문의 송신부를 추가로 구비하는 것을 특징으로 하는 통신기기.
  30. 제 19 항에 있어서,
    다음 응답 타이밍까지 응답이 지연되는 내용의 통지를, 상대의 통신기기에 적어도 1회 송신하는 지연통지송신부를 추가로 구비하는 것을 특징으로 하는 통신기기.
  31. 제 26 항에 있어서,
    상기 시간송신부는 다음 응답 타이밍까지 응답이 지연되는 내용의 통지를 상대의 통신기기에 적어도 1회 송신하는 것을 특징으로 하는 통신기기.
  32. 제 18 항에 있어서,
    상기 설정부는 메시지를 송신하고 나서 상대의 통신기기에서 상기 소정의 연산 후의 응답을 수신하기까지의 시간을 계측하여 상기 소정의 연산에 걸리는 시간을 취득하는 것을 특징으로 하는 통신기기.
  33. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 실시되는 공유키를 교환하는 방법을 2개의 통신기기 사이에서 실현시키기 위한 프로그램에 있어서,
    적어도 한쪽의 통신기기에,
    대향하는 다른쪽의 통신기기가 공유키를 취득하기 위해 필요한 정보를 상기 다른쪽 통신기기에 송신하는 정보송신단계; 및
    상기 다른쪽 통신기기가 다음 응답타이밍까지 실시하는 소정의 연산에 걸리는 시간에 기초하여 상기 다른쪽 통신기기로부터의 응답 대기 기한을 설정하는 설정단계를 실행시키고,
    상기 다른쪽의 통신기기는,
    상기 소정의 연산을 실시하여 상기 정보로부터 공유키를 취득하는 취득단계; 및
    상기 응답타이밍으로 상기 한쪽의 통신기기로 소정의 응답을 송신하는 응답송신 단계를 실행시키기 위한 프로그램.
  34. 암호화/개찬 인증처리가 실시된 데이터를 송수신하기 위해 실시되는 공유키를 교환하는 방법을 2개의 통신기기 사이에서 실현시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체에 있어서,
    적어도 한쪽의 통신기기에,
    대향하는 다른쪽 통신기기가 공유키를 취득하기 위해 필요한 정보를 상기 다른쪽 통신기기에 송신하는 정보송신단계; 및
    상기 다른쪽 통신기기가 다음 응답 타이밍까지 실시하는 소정의 연산에 걸리는 시간에 기초하여 상기 다른쪽 통신기기로부터의 응답 대기 기한을 설정하는 설정단계를 실행시키고,
    상기 다른쪽의 통신기기는,
    상기 소정의 연산을 실시하여 상기 정보로부터 공유키를 취득하는 취득단계; 및
    상기 응답타이밍으로 상기 한쪽의 통신기기로 소정의 응답을 송신하는 응답 송신 단계를 실행시키기 위한 프로그램을 기록하는 기록매체.
KR1020040004476A 2003-01-24 2004-01-20 공유키 교환방법과 통신기기 KR20040068499A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003015866 2003-01-24
JPJP-P-2003-00015866 2003-01-24

Publications (1)

Publication Number Publication Date
KR20040068499A true KR20040068499A (ko) 2004-07-31

Family

ID=32588682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040004476A KR20040068499A (ko) 2003-01-24 2004-01-20 공유키 교환방법과 통신기기

Country Status (4)

Country Link
US (1) US20040162983A1 (ko)
EP (1) EP1441485A3 (ko)
KR (1) KR20040068499A (ko)
CN (1) CN1518268A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240291653A1 (en) * 2022-02-28 2024-08-29 Rakuten Group, Inc. Communication system, communication method, and program

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8077861B2 (en) 2004-08-12 2011-12-13 Cmla, Llc Permutation data transform to enhance security
US7564970B2 (en) * 2004-08-12 2009-07-21 Cmla, Llc Exponential data transform to enhance security
US7577250B2 (en) * 2004-08-12 2009-08-18 Cmla, Llc Key derivation functions to enhance security
US7266201B1 (en) * 2002-09-17 2007-09-04 Foundry Networks, Inc. Non-disruptive authentication administration
US7409550B2 (en) * 2004-08-16 2008-08-05 Mitsubishi Electric Research Laboratories, Inc. Method for binding networked devices
JP4664644B2 (ja) 2004-10-08 2011-04-06 富士通株式会社 生体認証装置及び端末
US8391478B2 (en) * 2005-04-25 2013-03-05 Nokia Corporation System and method for broadcast environment group key-derivation
KR100704678B1 (ko) * 2005-06-10 2007-04-06 한국전자통신연구원 무선 휴대 인터넷 시스템에서의 그룹 트래픽 암호화 키갱신 방법
JP4665617B2 (ja) * 2005-06-10 2011-04-06 沖電気工業株式会社 メッセージ認証システム,メッセージ送信装置,メッセージ受信装置,メッセージ送信方法,メッセージ受信方法およびプログラム
US7930507B2 (en) * 2006-09-18 2011-04-19 Sandisk Il Ltd. Method of providing to a processor an estimated completion time of a storage operation
US8170212B2 (en) * 2008-03-17 2012-05-01 Intel Corporation Device, system, and method of establishing secure wireless communication
US8719572B2 (en) * 2008-07-16 2014-05-06 Disney Enterprises, Inc. System and method for managing authentication cookie encryption keys
US8848904B2 (en) * 2008-10-24 2014-09-30 University Of Maryland, College Park Method and implementation for information exchange using Markov models
US8837716B2 (en) 2009-02-02 2014-09-16 Apple Inc. Sensor derived authentication for establishing peer-to-peer networks
EP2405637B1 (en) * 2010-07-06 2016-09-07 Deutsche Telekom AG Method, distribution system and computer program product for a deterministic automatic call distribution system
JP2012222410A (ja) * 2011-04-04 2012-11-12 Fujitsu Ltd 通信装置、通信システムおよび通信方法
KR20150091188A (ko) * 2011-07-15 2015-08-07 알까뗄 루슨트 안전한 그룹 메시징
JP5981761B2 (ja) * 2012-05-01 2016-08-31 キヤノン株式会社 通信装置、制御方法、プログラム
TWI517655B (zh) * 2013-05-23 2016-01-11 晨星半導體股份有限公司 密碼裝置以及密鑰保護方法
DK3022059T4 (da) 2013-08-30 2024-04-02 Hewlett Packard Development Co Forsyningsautentifikation via timing-challenge-response
US20150245202A1 (en) * 2014-02-26 2015-08-27 Qualcomm Incorporated Secure distribution of a common network key in a wireless network
DK3678349T3 (da) * 2015-03-25 2021-06-07 Ericsson Telefon Ab L M Konfiguration af liveness-kontrol under anvendelse af internet-nøgleudvekslingsbeskeder
GB201506045D0 (en) * 2015-04-09 2015-05-27 Vodafone Ip Licensing Ltd SIM security
US10798093B2 (en) * 2016-09-19 2020-10-06 Verisign, Inc. GTLD domain name registries RDAP architecture
US10523632B2 (en) 2016-09-19 2019-12-31 Verisign, Inc. GTLD domain name registries RDAP architecture
JP6834771B2 (ja) * 2017-05-19 2021-02-24 富士通株式会社 通信装置および通信方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313521A (en) * 1992-04-15 1994-05-17 Fujitsu Limited Key distribution protocol for file transfer in the local area network
US5862326A (en) * 1995-09-21 1999-01-19 Pacific Communication Sciences, Inc. Efficient request-reply protocol for a client-server model
AU743258B2 (en) * 1997-01-03 2002-01-24 Fortress Technologies, Inc. Improved network security device
US5946465A (en) * 1998-03-30 1999-08-31 International Business Machines Corporation Method and system for recovering system resources used by an inactive Telnet client
JP3430509B2 (ja) * 1999-12-03 2003-07-28 日本電気株式会社 データ通信システム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240291653A1 (en) * 2022-02-28 2024-08-29 Rakuten Group, Inc. Communication system, communication method, and program

Also Published As

Publication number Publication date
EP1441485A3 (en) 2004-08-04
US20040162983A1 (en) 2004-08-19
CN1518268A (zh) 2004-08-04
EP1441485A2 (en) 2004-07-28

Similar Documents

Publication Publication Date Title
KR20040068499A (ko) 공유키 교환방법과 통신기기
JP4959750B2 (ja) トランスコーディング・プロキシでの複数の起点サーバへの動的接続
Granjal et al. End-to-end transport-layer security for Internet-integrated sensing applications with mutual and delegated ECC public-key authentication
EP2634991B1 (en) Content-centric networking
US9509663B2 (en) Secure distribution of session credentials from client-side to server-side traffic management devices
Dos Santos et al. A DTLS-based security architecture for the Internet of Things
Schwabe et al. More efficient post-quantum KEMTLS with pre-distributed public keys
US20040161110A1 (en) Server apparatus, key management apparatus, and encrypted communication method
CN111953492B (zh) 基于量子密钥加密的erp联网监控系统及其应用方法
JP4764368B2 (ja) 通信を確立してメッセージを中継する装置、通信を確立する方法およびプログラム
WO2006032214A1 (fr) Procede de transmission de donnees synchrones syncml
Pérez et al. Application layer key establishment for end-to-end security in IoT
JP2012213036A (ja) 通信装置及び通信システム
KR101688118B1 (ko) 사물인터넷 환경에서의 보안 통신 장치 및 그 방법
JP2016526844A (ja) 制約リソースデバイスのための鍵確立
CN110808834B (zh) 量子密钥分发方法和量子密钥分发系统
CN110191052B (zh) 一种跨协议网络传输方法及系统
JP2005210193A (ja) 共通秘密鍵生成装置
EP2244420B1 (en) Method and apparatus for recovering the connection
CN114553957A (zh) 兼容国密和国际https传输的业务系统和方法
JP2004248270A (ja) 共有鍵交換方法及び通信機器
CN108040071A (zh) 一种VoIP音视频加密密钥动态切换方法
CN108900584B (zh) 内容分发网络的数据传输方法和系统
Tiloca Efficient protection of response messages in DTLS-based secure multicast communication
EP3522443B1 (en) Communication apparatus, communication method, and program

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20040120

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid