KR20080044506A - 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 - Google Patents
그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 Download PDFInfo
- Publication number
- KR20080044506A KR20080044506A KR1020060113438A KR20060113438A KR20080044506A KR 20080044506 A KR20080044506 A KR 20080044506A KR 1020060113438 A KR1020060113438 A KR 1020060113438A KR 20060113438 A KR20060113438 A KR 20060113438A KR 20080044506 A KR20080044506 A KR 20080044506A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- key
- update
- nodes
- group
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/083—Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
- H04L9/0833—Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
- H04L9/0836—Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 그룹 키 업데이트 방법은 상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택하는 단계; 상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성하는 단계; 및 상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행하는 단계를 포함하는 것을 특징으로 한다. 따라서, 효율적으로 멀티 탈퇴에 대한 그룹 키 업데이트를 수행할 수 있다.
그룹 키, 키 업데이트, 단방향 함수, 일괄 처리
Description
도 1은 본 발명의 그룹의 일 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 2는 도 1에 도시된 그룹에 새로운 멤버가 가입하는 경우의 바이너리 트리를 나타낸 도면이다.
도 3은 본 발명의 그룹의 다른 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 4는 도 3에 도시된 그룹에서 기존 멤버가 탈퇴한 경우의 바이너리 트리를 나타낸 도면이다.
도 5는 본 발명의 그룹의 또 다른 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 6은 도 5에 도시된 그룹에서 기존 멤버가 탈퇴하는 경우 바이너리 트리의 변화를 나타낸 도면이다.
도 7은 도 5에 도시된 그룹에서 기존 멤버가 탈퇴한 결과에 상응하는 바이너리 트리를 나타낸 도면이다.
도 8은 고정된 바이너리 트리의 일 예에 상응하는 그룹을 나타낸 도면이다.
도 9는 고정된 바이너리 트리의 다른 예에 상응하는 그룹을 나타낸 도면이다.
도 10은 고정된 바이너리 트리의 다른 예에 상응하는 다른 그룹을 나타낸 도면이다.
도 11은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 일 예를 나타낸 도면이다.
도 12는 도 11에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 13은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 다른 예를 나타낸 도면이다.
도 14는 도 13에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 15는 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 16은 도 15에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 17은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 18 내지 도 20은 도 17에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 21은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 22 내지 도 23은 도 21에 도시된 바이너리 트리의 변화를 나타낸 도면이 다.
도 24는 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 25 내지 도 27은 도 24에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 28은 고정된 바이너리 트리에 대한 멀티 탈퇴(multi-leave)가 발생하는 경우의 일 예를 나타낸 도면이다.
도 29는 도 29에 도시된 바이너리 트리의 노드 키 업데이트 과정을 나타낸 도면이다.
도 30은 본 발명의 일실시예에 따른 그룹 키 업데이트 방법을 나타낸 동작 흐름도이다.
도 31은 본 발명의 일실시예에 따른 고정된 트리 구조를 가지는 바이너리 트리에 대한 그룹 키 업데이트 방법을 나타낸 동작 흐름도이다.
도 32는 본 발명의 일실시예에 따른 그룹 키 업데이트 장치를 나타낸 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
510: 서브 루트 노드 선택부
520: 노드 체인지부
530: 노드 키 업데이트부
본 발명은 그룹(group) 내 멤버(member)들의 키(key)를 업데이트 하는 그룹 키 업데이트에 관한 것으로, 특히 일괄 처리(batch processing)에 의하여 그룹 내의 둘 이상의 멤버들이 동시에 탈퇴(leave)하는 경우에 효과적으로 그룹 멤버들의 키를 업데이트 할 수 있는 그룹 키 업데이트 방법 및 장치에 관한 것이다.
그룹 내 멤버들을 대상으로 제공되는 컨텐츠는 서버에서 암호화되어 그룹 멤버들 이외의 사용자들이 이용할 수 없도록 한다. 따라서, 그룹 내 멤버들은 모두 서버에서 제공되는 암호화된 컨텐츠를 복호화할 수 있는 암호화 키(key)를 가진다.
그룹 멤버들의 암호화 키 업데이트는 매우 중요한 문제이다. 예를 들어, 새로운 멤버가 그룹에 가입하는 경우 가입 시점 이후의 컨텐츠에 대해서만 액세스할 수 있도록 할 필요가 있다. 따라서, 새로운 멤버가 그룹에 가입하면 기존의 그룹 멤버들의 키를 업데이트하고, 업데이트된 새로운 키를 새로운 멤버가 공유하도록 할 수 있다.
또한, 기존 멤버가 그룹에서 탈퇴하는 경우 탈퇴한 멤버가 더 이상 컨텐츠에 액세스할 수 없도록 하여야 하므로 탈퇴 시점 이전에 그룹 멤버들이 사용하던 키를 업데이트할 필요가 있다.
그룹 키 업데이트는 크게 두 가지 방식으로 수행된다.
첫 번째로, 키 업데이트가 필요할 때, 서버가 업데이트된 키를 계산하여 필요한 멤버에게 전송하는 방식이다. 이러한 방식의 경우 서버가 업데이트가 필요한 모든 멤버에 대한 키를 계산하고 전송하여야 하므로 서버의 로드가 큰 문제가 있다.
두 번째로, 키 업데이트가 필요할 때, 업데이트가 필요한 멤버가 자체적으로 키를 계산하여 필요한 업데이트를 수행하고, 자체적으로 업데이트가 불가능한 멤버에 대해서만 서버가 업데이트된 키를 전송하는 방식이다. 이러한 방식의 경우 서버는 자체 업데이트(self-update)가 불가능한 멤버에 대해서만 업데이트된 키를 계산해서 전송해주면 되므로 상대적으로 서버의 로드가 작다. 그러나, 업데이트가 필요한 멤버가 효율적으로 자체 업데이트를 수행하는 것은 매우 어렵다.
나아가, 일괄 처리(batch processing)가 적용되어 동시에 둘 이상의 멤버가 그룹에서 탈퇴하는 경우에는 그룹 키 업데이트 처리가 더욱 복잡하고, 이미 업데이트된 노드의 키를 다시 업데이트 하는 등의 문제점이 발생할 수 있다.
따라서, 효과적으로 자체 업데이트를 수행할 수 있는 새로운 그룹 키 업데이트 방법 및 장치의 필요성이 절실하게 대두된다.
본 발명은 상술한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, 효과적으로 셀프 업데이트를 수행할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 일정한 시간 또는 일정한 수의 탈퇴 요청(leave request)을 누적하여 효과적으로 한꺼번에 그룹 키 업데이트를 처리할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 셀프 업데이트를 수행할 수 없는 멤버들이 필요한 키를 효 과적으로 제공 받도록 하는 것을 목적으로 한다.
또한, 본 발명은 셀프 업데이트가 필요한 노드를 효과적으로 선별하고, 선별된 노드들에 대하여 효율적으로 키 업데이트를 수행하는 것을 목적으로 한다.
또한, 본 발명은 서브 루트 노드(sub-root node)를 이용하여 효과적으로 멀티 탈퇴(multi-leave)에 따른 트리 구조 변화가 이루어지도록 하는 것을 목적으로 한다.
상기의 목적을 달성하고 종래기술의 문제점을 해결하기 위하여, 본 발명의 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법은, 상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택하는 단계; 상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성하는 단계; 및 상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행하는 단계를 포함하는 것을 특징으로 한다.
이 때, 상기 서브 루트 노드는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드 및 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드 중 어느 하나일 수 있다.
이 때, 상기 변화된 바이너리 트리를 생성하는 단계는 상기 서브 루트 노드가 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상 위 노드인 경우에, 상기 서브 루트 노드의 부모 노드(parent node)를 상기 서브 루트 노드의 형제 노드(sibling node)로 대체하고, 상기 형제 노드에 자손 노드가 있는 경우 상기 자손 노드를 상기 서브 루트 노드의 부모 노드에 상응하는 자손 노드가 되도록 할 수 있다.
이 때, 상기 변화된 바이너리 트리를 생성하는 단계는 상기 서브 루트 노드가 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에, 상기 서브 루트 노드를 리프 노드로 만들고, 상기 하나의 리프 노드에 상응하는 멤버를 상기 서브 루트 노드에 상응하는 멤버가 되도록 할 수 있다.
또한, 본 발명의 일실시예에 따른 고정된 트리 구조를 가지는 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법은 상기 바이너리 트리상의 노드들 중 상기 멀티 탈퇴에 상응하는 업데이트 대상 노드를 선정하는 단계; 및 업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로, 상기 업데이트 대상 노드의 키를 업데이트하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 일실시예에 따른 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 장치는 상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택하는 서브 루트 노드 선택부; 상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성하는 노드 체인지부; 및 상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행하는 노드 키 업데이트부를 포함하는 것을 특징으로 한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 그룹의 일 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 1을 참조하면, 그룹 멤버들(A, B, C, D, E, F, G)은 각각 바이너리 트리의 리프 노드(leaf node)에 대응된다.
이 때, 그룹 멤버들(A, B, C, D, E, F, G)은 각각 디바이스(device) 또는 사용자(user)에 대응될 수 있다.
바이너리 트리의 각각의 노드들은 고유한 암호화 키(encryption key)를 가진다.
루트 노드의 키는 컨텐츠를 전송할 때 사용된다. 즉, 서버에서 전송되는 컨텐츠는 루트 노드의 키로 암호화되어 전송된다.
바이너리 트리에서 루트 노드를 제외한 다른 노드들에 상응하는 키는 노드 키 갱신을 위해 사용된다. 본 발명의 일실시예에서 루트 노드를 제외한 다른 노드들에 상응하는 키는 해당 노드의 부모 노드의 키를 업데이트하는 데 사용된다.
리프 노드의 키는 상응하는 멤버의 멤버 키(member key)로 설정될 수 있다.
각각의 그룹 멤버들(A, B, C, D, E, F, G)은 상응하는 리프 노드로부터 루트 노드에 이르는 경로상의 모든 노드들의 노드 키를 저장한다.
예를 들어, 멤버(A)는 노드 8, 노드 4, 노드 2 및 노드1의 노드 키를 저장한다.
예를 들어, 멤버(F)는 노드 13, 노드 6, 노드 3 및 노드 1의 노드 키를 저장한다.
도 2는 도 1에 도시된 그룹에 새로운 멤버가 가입하는 경우의 바이너리 트리를 나타낸 도면이다.
도 2에서 굵은 경로는 셀프 업데이트 경로를 나타내고, 점선은 서버에서 전송되는 업데이트 경로를 나타낸다.
도 2를 참조하면, 그룹에 새로운 멤버(H)가 가입하면 노드(7)가 스플릿(split)하여 노드(14) 및 노드(15)가 생성된다. 이 때, 멤버(G)에 상응하는 노드는 노드(7)에서 노드(14)로 변경된다.
노드(15)는 새로운 멤버(H)에 상응하는 노드가 된다.
새로운 멤버 가입시 스플릿(split)되는 노드는 컴플리트(complete) 바이너리 트리인 경우에는 리프 노드들 중 최소 또는 최대의 노드 아이디를 가지는 노드로 결정되고, 컴플리트 바이너리 트리가 아닌 경우에는 리프 노드의 깊이(depth)가 가장 작은 노드들을 선택하고, 선택된 노드들 중 노드 아이디가 최소 또는 최대인 노드로 결정될 수 있다.
새로운 멤버(H)가 그룹에 가입하면 멤버(H)에 상응하는 노드(15)가 업데이트 시작 노드로 결정된다.
업데이트 시작 노드(15)의 노드 키는 멤버(H)의 멤버 키로 설정된다. 멤버 키는 노드 키 갱신 시작 이전에 서버와 멤버가 공유하고 있을 수 있다. 노드(15)의 노드 키가 결정되면, 노드(15)의 노드 키를 이용하여 노드(7)의 노드 키가 업데이트된다. 이 때, 노드(7)의 노드 키는 노드(15)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(15)의 노드 키를 K15라 하면, 노드(7)의 노드 키인 K7의 업데이트 값인 nK7은 f(K15)로 설정될 수 있다. 이 때, f()는 단방향 함수이다. 단, 노드 키를 갱신할 때마다 매번 같은 키가 생성되는 것을 방지하기 위하여 함수 f의 입력 값에는 노드 키 값뿐만 아니라 갱신 정보(예, 갱신 일, 갱신 횟수 등)값이 포함된다. 이하에서 f(K)는 f(K, 갱신정보)를 의미한다.
또한, 노드(7)의 노드 키가 업데이트되면, 노드(7)의 노드 키를 이용하여 노드(3)의 노드 키가 업데이트된다. 이 때, 노드(3)의 노드 키는 노드(7)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(7)의 노드 키를 K7라 하면, 노드(3)의 노드 키인 K3의 업데이트 값인 nK3은 f(K7)로 설정될 수 있다.
또한, 노드(3)의 노드 키가 업데이트되면, 노드(3)의 노드 키를 이용하여 노드(1)의 노드 키가 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(3)의 노드 키를 K3라 하면, 노드(1)의 노드 키인 K1의 업데이트 값인 nK1은 f(K3)으로 설정될 수 있다.
결국, 도 2에 도시된 예에서 노드(15)로부터 노드(7) 및 노드(3)을 통하여 노드(1)에 이르는 경로를 따라 셀프 업데이트가 수행되는 것으로 볼 수 있다.
이 때, 노드(14)에 상응하는 멤버(G)는 업데이트된 노드(7)의 키를 알 수 없으므로 서버가 노드(14)에 상응하는 멤버(G)로 업데이트된 노드(7)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(7)의 키는 노드(14)의 키로 암호화된다. 노드(7)의 키를 전송 받은 멤버(G)는 단방향 함수를 이용하여 노드(3)의 키와 노드(1)의 키를 순차적으로 계산할 수 있다.
또한, 노드(6)의 자손 노드(descendent node)들에 상응하는 멤버들(E, F)은 업데이트된 노드(3)의 키를 알 수 없으므로 서버가 노드(6)의 자손 노드들에 상응하는 멤버들(E, F)로 업데이트된 노드(3)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(3)의 키는 노드(6)의 키로 암호화된다. 노드(3)의 키를 전송 받은 멤버들(E, F)은 단방향 함수를 이용하여 노드(1)의 키를 계산할 수 있다
또한, 노드(2)의 자손 노드들에 상응하는 멤버들(A, B, C, D)은 업데이트된 노드(1)의 키를 알 수 없으므로 서버가 노드(2)의 자손 노드들에 상응하는 멤버들(A, B, C, D)로 업데이트된 노드(1)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(1)의 키는 노드(2)의 키로 암호화된다. 단방향 함수의 특성상 노드(2)의 자손 노드들에 상응하는 멤버들(A, B, C, D)은 업데이트된 노드(1)의 키를 가지고 노드(3), 노드(7), 노드(15)의 노드 키를 알아낼 수 없다.
도 3은 본 발명의 그룹의 다른 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 3을 참조하면, 그룹의 기존 멤버(M)이 그룹에서 탈퇴하는 경우에 노 드(14), 노드(7), 노드(3) 및 노드(1)을 잇는 셀프 업데이트 경로가 설정된다.
이 때, 노드(14)가 업데이트 시작 노드로 설정되고, 노드(14)부터 루트 노드까지 부모 노드를 따라가면서 노드 키 업데이트가 수행된다.
도 4는 도 3에 도시된 그룹에서 기존 멤버가 탈퇴한 경우의 바이너리 트리를 나타낸 도면이다.
도 4를 참조하면, 도 3에 도시된 멤버(M)이 탈퇴(leave)하면 노드(28) 및 노드(29)는 삭제되고, 노드(14)가 멤버(N)에 상응하는 노드가 된다. 이 때, 노드(14)가 업데이트 시작 노드가 된다.
노드(14)의 노드 키는 멤버(N)의 멤버 키로 설정된다. 노드(14)로부터 노드(7) 및 노드(3)를 통하여 루트 노드(1)에 이르는 셀프 업데이트 경로의 업데이트 과정은 이미 도 1 및 도 2를 통하여 설명한 바와 같다.
즉, 노드(14)의 노드 키를 이용하여 노드(7)의 노드 키가 업데이트된다. 이 때, 노드(7)의 노드 키는 노드(14)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(14)의 노드 키를 K14라 하면, 노드(7)의 노드 키인 K7의 업데이트 값인 nK7은 f(K14)로 설정될 수 있다. 이 때, f()는 단방향 함수이다.
또한, 노드(7)의 노드 키가 업데이트되면, 노드(7)의 노드 키를 이용하여 노드(3)의 노드 키가 업데이트된다. 이 때, 노드(3)의 노드 키는 노드(7)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(7)의 노드 키를 K7라 하면, 노드(3)의 노드 키인 K3의 업데이트 값인 nK3은 f(K7)로 설정될 수 있다.
또한, 노드(3)의 노드 키가 업데이트되면, 노드(3)의 노드 키를 이용하여 노드(1)의 노드 키가 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(3)의 노드 키를 K3라 하면, 노드(1)의 노드 키인 K1의 업데이트 값인 nK1은 f(K3)으로 설정될 수 있다.
이 때, 노드(15)의 자손 노드들에 상응하는 멤버들(O, P)은 업데이트된 노드(7)의 키를 알 수 없으므로 서버가 노드(15)의 자손 노드들에 상응하는 멤버들(O, P)로 업데이트된 노드(7)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(7)의 키는 노드(15)의 키로 암호화된다. 노드(7)의 키를 전송 받은 멤버들(O, P)은 단방향 함수를 이용하여 노드(3)의 키, 노드(1)의 키를 순차적으로 계산할 수 있다.
또한, 노드(6)의 자손 노드(descendent node)들에 상응하는 멤버들(I, J, K, L)은 업데이트된 노드(3)의 키를 알 수 없으므로 서버가 노드(6)의 자손 노드들에 상응하는 멤버들(I, J, K, L)로 업데이트된 노드(3)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(3)의 키는 노드(6)의 키로 암호화된다. 노드(3)의 키를 전송 받은 멤버들(I, J, K, L)은 단방향 함수를 이용하여 노드(1)의 키를 계산할 수 있다.
또한, 노드(2)의 자손 노드들에 상응하는 멤버들(A ~ H)은 업데이트된 노드(1)의 키를 알 수 없으므로 서버가 노드(2)의 자손 노드들에 상응하는 멤버들 (A ~ H)로 업데이트된 노드(1)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(1)의 키는 노드(2)의 키로 암호화된다.
결국, 본 발명에 따른 그룹 업데이트 방법을 사용하면 그룹 멤버가 N개라고 할 때, 전송량이 log2N-1정도에 불과하고, 저장량은 log2N정도에 불과하다.
도 5는 본 발명의 그룹의 또 다른 예에 해당하는 바이너리 트리를 나타낸 도면이다.
도 5를 참조하면, 그룹의 기존 멤버(I)가 그룹에서 탈퇴하는 경우에 노드(3) 및 노드(1)을 잇는 셀프 업데이트 경로가 설정된다.
이 때, 노드(3)가 업데이트 시작 노드로 설정되고, 노드(3)부터 루트 노드까지 부모 노드를 따라가면서 노드 키 업데이트가 수행된다.
도 6은 도 5에 도시된 그룹에서 기존 멤버가 탈퇴하는 경우 바이너리 트리의 변화를 나타낸 도면이다.
도 6을 참조하면, 멤버(I)가 그룹에서 탈퇴하면 멤버(I)에 상응하는 노드(6)의 부모 노드인 노드(3)이 노드(7)로 대체된다.
즉, 탈퇴하는 멤버(I)에 상응하는 노드(6)의 부모 노드인 노드(3)의, 노드(6)를 제외한 자식 노드인 노드(7)이 노드(3)를 대체한다.
도 7은 도 5에 도시된 그룹에서 기존 멤버가 탈퇴한 결과에 상응하는 바이너리 트리를 나타낸 도면이다.
도 7을 참조하면, 도 5의 노드(7)의 위치가 노드(3)으로 변경되고, 노드(14) 의 위치가 노드(6)로 변경되고, 노드(15)의 위치가 노드(7)로 변경되고, 노드(28)의 위치가 노드(12)로 변경되고, 노드(29)의 위치가 노드(13)로 변경되고, 노드(30)의 위치가 노드(14)으로 변경되고, 노드(31)의 위치가 노드(15)로 변경된다
이 때, 노드(3)의 노드 키는 변경 전 노드(7)의 노드 키로 대체되고, 노드(6)의 노드 키는 변경 전 노드(14)의 노드 키로 대체되고, 노드(7)의 노드 키는 변경 전 노드(15)의 노드 키로 대체되고, 노드(12)의 노드 키는 변경 전 노드(28)의 노드 키로 대체되고, 노드(13)의 노드 키는 변경 전 노드(29)의 노드 키로 대체되고, 노드(14)의 노드 키는 변경 전 노드(30)의 노드 키로 대체되고, 노드(15)의 노드 키는 변경 전 노드(31)의 노드 키로 대체된다.
업데이트 시작 노드인 노드(3)의 노드 키가 변경 전 노드(7)의 노드 키로 대체되면, 업데이트된 노드(3)의 노드 키(nK3)를 이용하여 노드(1)의 노드 키가 업데이트된다. 즉, 업데이트된 노드(3)의 노드 키에 대한 단방향 함수의 출력이 노드(1)의 노드 키로 업데이트된다.
이 때, 노드(2)의 자손 노드들에 상응하는 멤버들(A ~ H)은 업데이트된 노드(1)의 노드 키를 서버로부터 제공 받는다. 이 때, 업데이트된 노드(1)의 노드 키는 노드(2)의 노드 키로 암호화되어 전송된다.
이상에서 살펴본 바와 같이, 그룹에 상응하는 바이너리 트리는 트리 사이즈가 멤버 수에 따라 가변적일 수도 있으나 멤버 수에 상관없이 트리 사이즈가 고정되어 있을 수 있다. 즉, 그룹에 상응하는 바이너리 트리는 컴플리트 바이너리 트리로 그 깊이(depth)가 고정되고, 컴플리트 바이너리 트리의 리프 노드들은 상응하 는 멤버를 가지는 가입 노드(subscribed node) 및 상응하는 멤버를 가지지 않는 비가입 노드(unsubscribed node)로 구분될 수 있다.
이 때, 전체 멤버 규모를 N명으로 예상한다면, 서버는 log2N의 깊이(depth)를 가지는 바이너리 트리를 구성하고, 각각의 멤버는 초기부터 log2N개의 키를 저장하고 있어야 한다.
도 8은 고정된 바이너리 트리의 일 예에 상응하는 그룹을 나타낸 도면이다.
도 8을 참조하면, 노드(8), 노드(9), 노드(10) 및 노드(11)가 각각 멤버(A), 멤버(B), 멤버(C) 및 멤버(D)에 상응하는 가입 노드이고, 노드(12), 노드(13), 노드(14) 및 노드(15)가 비가입 노드인 상태에서 멤버(15)가 새로 가입하여 노드(15)에 할당되는 것을 알 수 있다.
이 때, 노드(15)는 업데이트 시작 노드로 설정되고, 노드(15)의 노드 키는 멤버(15)의 멤버 키로 설정된다.
노드(15)의 노드 키가 결정되면, 노드(15)의 노드 키를 이용하여 노드(7)의 노드 키가 업데이트된다. 이 때, 노드(7)의 노드 키는 노드(15)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(15)의 노드 키를 K15라 하면, 노드(7)의 노드 키인 K7의 업데이트 값인 nK7은 f(K15)로 설정될 수 있다. 이 때, f()는 단방향 함수이다.
또한, 노드(7)의 노드 키가 업데이트되면, 노드(7)의 노드 키를 이용하여 노드(3)의 노드 키가 업데이트된다. 이 때, 노드(3)의 노드 키는 노드(7)의 노드 키 에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(7)의 노드 키를 K7라 하면, 노드(3)의 노드 키인 K3의 업데이트 값인 nK3은 f(K7)로 설정될 수 있다.
또한, 노드(3)의 노드 키가 업데이트되면, 노드(3)의 노드 키를 이용하여 노드(1)의 노드 키가 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 예를 들어, 노드(3)의 노드 키를 K3라 하면, 노드(1)의 노드 키인 K1의 업데이트 값인 nK1은 f(K3)으로 설정될 수 있다.
결국, 도 8에 도시된 예에서 노드(15)로부터 노드(7) 및 노드(3)을 통하여 노드(1)에 이르는 경로를 따라 셀프 업데이트가 수행되는 것으로 볼 수 있다.
이 때, 노드(14)에 상응하는 멤버가 없으므로 서버는 업데이트된 노드(7)의 키를 암호화하여 전송하지 아니할 수 있다.
또한, 노드(6)의 자손 노드(descendent node)들에 상응하는 멤버가 없으므로 서버는 업데이트된 노드(3)의 키를 암호화하여 전송하지 아니할 수 있다.
노드(2)의 자손 노드들에 상응하는 멤버들(A, B, C, D)은 업데이트된 노드(1)의 키를 알 수 없으므로 서버가 노드(2)의 자손 노드들에 상응하는 멤버들(A, B, C, D)로 업데이트된 노드(1)의 키를 암호화하여 전송할 수 있다. 이 때, 업데이트된 노드(1)의 키는 노드(2)의 키로 암호화된다.
도 9는 고정된 바이너리 트리의 다른 예에 상응하는 그룹을 나타낸 도면이다.
도 9를 참조하면, 멤버(M)가 그룹에서 탈퇴하는 경우에, 노드(14)가 업데이트 시작 노드로 설정되고, 노드(14)로부터 노드(7) 및 노드(3)을 통하여 노드(1)까지 업데이트 경로가 형성되는 것을 알 수 있다.
이 때, 노드(29)는 그대로 멤버(N)에 상응하는 노드로 남는다.
멤버(M)가 그룹에서 탈퇴하면 노드(28)은 비가입 노드가 되고, 업데이트 시작 노드인 노드(14)는 노드(29)의 노드 키에 의하여 업데이트된다.
이 때, 노드(14)의 노드 키는 노드(29)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다.
노드(7)의 노드 키는 업데이트된 노드(14)의 노드 키에 대한 단방향 함수의 출력으로 설정되고, 노드(3)의 노드 키는 업데이트된 노드(7)의 노드 키에 대한 단방향 함수의 출력으로 설정되고, 노드(1)의 노드 키는 업데이트된 노드(3)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다.
이 때, 노드(15)의 자손 노드들에 상응하는 멤버들(O, P)은 업데이트된 노드(7)의 노드 키를 알 수 없으므로 서버로부터 제공 받는다. 이 때, 업데이트된 노드(7)의 노드 키는 노드(15)의 노드 키로 암호화되어 제공된다. 멤버들(O, P)은 전송된 노드(7)의 키를 이용하여 노드(3)의 키와 노드(1)의 키를 순차적으로 계산할 수 있다.
이 때, 노드(6)의 자손 노드들에 상응하는 멤버들(I, J, K, L)은 업데이트된 노드(3)의 노드 키를 알 수 없으므로 서버로부터 제공 받는다. 이 때, 업데이트된 노드(3)의 노드 키는 노드(6)의 노드 키로 암호화되어 제공된다. 멤버들(I, J, K, L)은 전송된 노드(3)의 키를 이용해서 노드(1)의 키를 계산할 수 있다.
이 때, 노드(2)의 자손 노드들에 상응하는 멤버들(A ~ H)은 업데이트된 노드(1)의 노드 키를 알 수 없으므로 서버로부터 제공 받는다. 이 때, 업데이트된 노드(1)의 노드 키는 노드(2)의 노드 키로 암호화되어 제공된다.
도 10은 고정된 바이너리 트리의 다른 예에 상응하는 다른 그룹을 나타낸 도면이다.
도 10을 참조하면, 멤버(I)가 그룹에서 탈퇴하는 경우에, 노드(3)가 업데이트 시작 노드로 설정되고, 노드(3)로부터 노드(1)까지 업데이트 경로가 형성되는 것을 알 수 있다. 즉, 노드(3)는 멤버(I)에 상응하는 노드의 조상 노드(ancestor node)들 중 그룹 멤버에 상응하는 자손 노드를 가지는 노드이므로 시작 노드로 설정된다.
멤버(I)가 그룹에서 탈퇴하면 노드(24)는 비가입 노드가 되고, 업데이트 시작 노드인 노드(3)는 노드(7)의 노드 키에 의하여 업데이트된다.
이 때, 노드(3)의 노드 키는 노드(7)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다.
또한, 노드(1)의 노드 키는 업데이트된 노드(3)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다.
이 때, 노드(2)의 자손 노드들에 상응하는 멤버들(A ~ H)은 업데이트된 노드(1)의 노드 키를 알 수 없으므로 서버로부터 제공 받는다. 이 때, 업데이트된 노드(1)의 노드 키는 노드(2)의 노드 키로 암호화되어 제공된다.
이 때, 노드(24)에서 노드(6)까지의 노드들에 대한 키는 서버에서만 업데이트하여 관리하고, 후에 해당 노드가 가입 노드가 될 때 가입한 멤버로 전송해줄 수 있다.
도 11은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 일 예를 나타낸 도면이다.
도 11은 멤버들(A, Q)이 동시에 그룹에서 탈퇴하는 경우의 바이너리 트리의 변화를 나타낸다.
도 11을 참조하면, 노드(15)는 자손 노드에 상응하는 리프 노드들(31, 32) 중 하나의 리프 노드(32)를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
마찬가지로, 노드(23)는 자손 노드에 상응하는 리프 노드들(47, 48) 중 하나의 리프 노드(28)를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
도 12는 도 11에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 12를 참조하면, 멤버(A)가 탈퇴함에 따라 서브 루트 노드(15)를 리프 노드(leaf node)로 만들고, 멤버(B)를 서브 루트 노드(15)에 상응하는 멤버가 되도록 하는 것을 알 수 있다.
마찬가지로, 멤버(Q)가 탈퇴함에 따라 서브 루트 노드(23)를 리프 노드(leaf node)로 만들고, 멤버(Q)를 서브 루트 노드(23)에 상응하는 멤버가 되도록 한다.
이상의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들(A, Q)이 키를 가 지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 12에 도시된 예에서, 탈퇴한 멤버(A)가 노드(7), 노드(3), 노드(1) 및 노드(0)의 키를 가지고 있고, 탈퇴한 멤버(B)가 노드(11), 노드(5), 노드(2) 및 노드(0)의 키를 가지고 있으므로, 노드(0), 노드(1), 노드(2), 노드(3), 노드(5), 노드(7) 및 노드(11)가 업데이트 대상 노드가 된다.
노드 키 업데이트 과정을 보다 상세히 설명하면, 노드(7)의 노드 키는 노드(15)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(7)의 노드 키는 노드(15)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(15)의 노드 키는 멤버(B)의 멤버 키일 수 있다. 노드(7)의 노드 키가 업데이트되면 노드(16)의 자손 노드들에 상응하는 멤버들(C, D)로 노드(7)의 노드 키가 암호화되어 전송된다.
노드(7)의 노드 키가 업데이트되면 업데이트된 노드(7)의 노드 키를 이용하여 노드(3)의 노드 키가 업데이트된다. 이 때, 노드(3)의 노드 키는 노드(7)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다. 노드(3)의 노드 키가 업데이트되면 노드(8)의 자손 노드들에 상응하는 멤버들(E, F, G, H)로 노드(3)의 노드 키가 암호화되어 전송된다.
노드(3)의 노드 키가 업데이트되면 업데이트된 노드(3)의 노드 키를 이용하여 노드(1)의 노드 키가 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다. 노드(1)의 노드 키가 업데이트되면 노드(4)의 자손 노드들에 상응하는 멤버들(I ~ P)로 노드(1)의 노드 키가 암호화되어 전송된다.
마찬가지로, 노드(11)의 노드 키는 노드(23)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(11)의 노드 키는 노드(23)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(23)의 노드 키는 멤버(R)의 멤버 키일 수 있다. 노드(11)의 노드 키가 업데이트되면 노드(24)의 자손 노드들에 상응하는 멤버들(S, T)로 노드(11)의 노드 키가 암호화되어 전송된다.
노드(11)의 노드 키가 업데이트되면 업데이트된 노드(11)의 노드 키를 이용하여 노드(5)의 노드 키가 업데이트된다. 이 때, 노드(5)의 노드 키는 노드(11)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다. 노드(5)의 노드 키가 업데이트되면 노드(12)의 자손 노드들에 상응하는 멤버들(U, V, W, X)로 노드(5)의 노드 키가 암호화되어 전송된다.
노드(5)의 노드 키가 업데이트되면 업데이트된 노드(5)의 노드 키를 이용하여 노드(2)의 노드 키가 업데이트된다. 이 때, 노드(2)의 노드 키는 노드(5)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다. 노드(2)의 노드 키가 업데이트되면 노드(6)의 자손 노드들에 상응하는 멤버들(Y ~ *)로 노드(2)의 노드 키가 암호화되어 전송된다.
업데이트 대상 노드인 노드(0)는 두 자식 노드들(1, 2)의 키들이 모두 업데이트 되었으므로 두 자식 노드들 중 하나를 업데이트 이용 노드로 설정한다.
예를 들어, 두 자식 노드들(1, 2) 중 노드 아이디가 큰 노드(2)가 업데이트 이용 노드로 설정될 수 있다. 업데이트 이용 노드가 설정되면 업데이트 이용 노드 의 노드 키를 이용하여 노드(0)의 노드 키가 업데이트된다.
두 자식 노드들(1, 2) 중 업데이트 이용 노드로 설정되지 아니한 노드(1)에 상응하는 멤버들(C ~ P)로는 노드(0)의 노드 키가 암호화되어 전송된다. 물론 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키로 암호화될 수 있다.
도 13은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 다른 예를 나타낸 도면이다.
도 13을 참조하면, 멤버들(A ~ G)이 동시에 그룹에서 탈퇴하는 것을 알 수 있다.
노드(3)는 자손 노드에 상응하는 리프 노드들(31 ~ 38) 중 하나의 리프 노드(38)를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
도 14는 도 13에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 14를 참조하면, 멤버들(A ~ G)이 탈퇴함에 따라 서브 루트 노드(3)를 리프 노드(leaf node)로 만들고, 멤버(H)를 서브 루트 노드(3)에 상응하는 멤버가 되도록 하는 것을 알 수 있다.
이상의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들(A ~ G)이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 14에 도시된 예에서, 탈퇴한 멤버들(A ~ G)은 노드(1) 및 노드(0)의 키를 가지고 있으므로, 노드(0) 및 노드(1)이 업데이트 대상 노드가 된다.
노드(1)의 노드 키는 노드(3)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(3)의 노드 키는 멤버(H)의 멤버 키일 수 있다. 노드(1)의 노드 키가 업데이트되면 노드(4)의 자손 노드들에 상응하는 멤버들(I ~ P)로 노드(1)의 노드 키가 암호화되어 전송된다.
노드(1)의 노드 키가 업데이트되면 업데이트된 노드(1)의 노드 키를 이용하여 노드(0)의 노드 키가 업데이트된다. 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키에 대한 단방향 함수의 출력으로 설정될 수 있다. 노드(0)의 노드 키가 업데이트되면 노드(2)의 자손 노드들에 상응하는 멤버들(Q ~ *)로 노드(0)의 노드 키가 암호화되어 전송된다. 물론 이 때, 노드(0)의 노드 키는 노드(2)의 노드 키로 암호화될 수 있다.
도 15는 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 15를 참조하면, 멤버들(A ~ H)이 동시에 그룹에서 탈퇴하는 것을 알 수 있다.
노드(3)는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들(3, 7, 8, 15, 16, 17, 18) 중 최상위 노드이므로 서브 루트 노드가 된다.
도 16은 도 15에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 16를 참조하면, 멤버들(A ~ H)이 탈퇴함에 따라 서브 루트 노드(3)의 부모 노드(1)를 서브 루트 노드(3)의 형제 노드(4)로 대체하고, 형제 노드(4)에 자손 노드들(9, 10, 19, 20, 21, 22, 39, 40, 41, 42, 43, 44, 45, 46)이 있는 경우 자 손 노드들(9, 10, 19, 20, 21, 22, 39, 40, 41, 42, 43, 44, 45, 46)을 서브 루트 노드(3)의 부모 노드(1)에 상응하는 자손 노드들(3, 4, 7, 8, 9, 10, 15, 16, 17, 18, 19, 20, 21, 22)이 되도록 하는 것을 알 수 있다. 예를 들어, 노드(4)는 노드 키를 그대로 유지한 채 노드 아이디를 노드(1)에 상응하는 것으로 바꾸고, 노드(20)는 노드 키를 그대로 유지한 채 노드 아이디를 노드(8)에 상응하는 것으로 바꾼다.
이상의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들(A ~ H)이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 14에 도시된 예에서, 탈퇴한 멤버들(A ~ G)은 노드(0)의 키를 가지고 있으므로, 노드(0)이 업데이트 대상 노드가 된다.
노드(0)의 노드 키는 노드(1)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(1)의 노드 키는 노드 체인지 이전의 노드(4)의 노드 키일 수 있다. 노드(0)의 노드 키가 업데이트되면 노드(2)의 자손 노드들에 상응하는 멤버들(Q ~ *)로 노드(0)의 노드 키가 암호화되어 전송된다.
도 17은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 17을 참조하면, 멤버들(A ~ N)이 동시에 그룹에서 탈퇴하는 것을 알 수 있다.
노드(21), 노드(9) 및 노드(3)는 각각 자손 노드에 상응하는 모든 리프 노드 의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
도 18 내지 도 20은 도 17에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 18을 참조하면, 멤버들(M ~ N)이 탈퇴함에 따라 서브 루트 노드(21)의 부모 노드(10)를 서브 루트 노드(21)의 형제 노드(22)로 대체하고, 형제 노드(22)에 자손 노드들(45, 46)이 있는 경우 자손 노드들(45, 46)을 서브 루트 노드(21)의 부모 노드(10)에 상응하는 자손 노드들(21, 22)이 되도록 하는 것을 알 수 있다.
도 19를 참조하면, 멤버들(I ~ L)이 탈퇴함에 따라 서브 루트 노드(9)의 부모 노드(4)를 서브 루트 노드(9)의 형제 노드(10)로 대체하고, 형제 노드(10)에 자손 노드들(21, 22)이 있는 경우 자손 노드들(21, 22)을 서브 루트 노드(9)의 부모 노드(4)에 상응하는 자손 노드들(9, 10)이 되도록 하는 것을 알 수 있다.
도 20을 참조하면, 멤버들(A ~ H)이 탈퇴함에 따라 서브 루트 노드(3)의 부모 노드(1)를 서브 루트 노드(3)의 형제 노드(4)로 대체하고, 형제 노드(4)에 자손 노드들(9, 10)이 있는 경우 자손 노드들(9, 10)을 서브 루트 노드(3)의 부모 노드(1)에 상응하는 자손 노드들(3, 4)이 되도록 하는 것을 알 수 있다.
도 18 내지 도 20의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들(A ~ N)이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 20에 도시된 예에서, 탈퇴한 멤버들(A ~ H)은 노드(0)의 키를 가지고 있으므로, 노드(0)이 업데이트 대상 노드가 된다.
노드(0)의 노드 키는 노드(1)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(1)의 노드 키는 노드 체인지 이전의 노드(4)의 노드 키일 수 있다. 노드(0)의 노드 키가 업데이트되면 노드(2)의 자손 노드들에 상응하는 멤버들(Q ~ *)로 노드(0)의 노드 키가 암호화되어 전송된다.
도 21은 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 21을 참조하면, 멤버들(A ~ H, M, N)이 동시에 그룹에서 탈퇴하는 것을 알 수 있다.
노드(21) 및 노드(3)는 각각 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
도 22 내지 도 23은 도 21에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 22를 참조하면, 멤버들(M ~ N)이 탈퇴함에 따라 서브 루트 노드(21)의 부모 노드(10)를 서브 루트 노드(21)의 형제 노드(22)로 대체하고, 형제 노드(22)에 자손 노드들(45, 46)이 있는 경우 자손 노드들(45, 46)을 서브 루트 노드(21)의 부모 노드(10)에 상응하는 자손 노드들(21, 22)이 되도록 하는 것을 알 수 있다.
도 23을 참조하면, 멤버들(A ~ H)이 탈퇴함에 따라 서브 루트 노드(3)의 부모 노드(1)를 서브 루트 노드(3)의 형제 노드(4)로 대체하고, 형제 노드(4)에 자손 노드들(9, 10, 19, 20, 21, 22, 39, 40, 41, 42)이 있는 경우 자손 노드들(9, 10, 19, 20, 21, 22, 39, 40, 41, 42)을 서브 루트 노드(3)의 부모 노드(1)에 상응하는 자손 노드들(3, 4, 7, 8, 9, 10, 15, 16, 17, 18)이 되도록 하는 것을 알 수 있다.
도 22 내지 도 23의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들(A ~ H, M, N)이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 23에 도시된 예에서, 탈퇴한 멤버들(A ~ H, M, N)은 노드(1) 및 노드(0)의 키를 가지고 있으므로, 노드(1) 및 노드(0)이 업데이트 대상 노드가 된다.
노드(1)의 노드 키는 노드(3)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(1)의 노드 키는 노드(3)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(3)의 노드 키는 노드 체인지 이전의 노드(9)의 노드 키일 수 있다. 노드(1)의 노드 키가 업데이트되면 노드(4)의 자손 노드들에 상응하는 멤버들(O, P)로 노드(1)의 노드 키가 암호화되어 전송된다.
노드(1)의 노드 키가 업데이트된 후, 노드(0)의 노드 키는 업데이트된 노드(1)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 노드(0)의 노드 키가 업데이트되면 노드(2)의 자손 노드들에 상응하는 멤버들(Q ~ *)로 노드(0)의 노드 키가 암호화되어 전송된다.
도 24는 멀티 탈퇴(multi-leave)가 발생하는 경우의 바이너리 트리의 또 다른 예를 나타낸 도면이다.
도 24을 참조하면, 멤버들(A ~ D, F, I ~ R, V ~ *)이 동시에 그룹에서 탈퇴 하는 것을 알 수 있다.
노드(17)는 자손 노드에 상응하는 리프 노드들(35, 36) 중 하나의 리프 노드(35)를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드(23)는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드(7)는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드(12)는 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드(4)는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드(6)는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드이므로 서브 루트 노드가 된다.
노드 체인지는 도 24에 도시된 바와 같이 하위 노드부터 상위 노드 방향으로 수행된다.
도 25 내지 도 27은 도 24에 도시된 바이너리 트리의 변화를 나타낸 도면이다.
도 25를 참조하면, 멤버(F)가 탈퇴함에 따라 서브 루트 노드(17)가 리프 노 드가 되고 멤버(E)가 서브 루트 노드(17)에 상응하는 멤버가 된 것을 알 수 있다.
또한, 멤버들(Q, R)이 탈퇴함에 따라 서브 루트 노드(23)의 부모 노드(11)가 서브 루트 노드(23)의 형제 노드(24)로 대체되고, 형제 노드(24)에 자손 노드들(49, 50)이 있는 경우 자손 노드들(49, 50)이 서브 루트 노드(23)의 부모 노드(11)에 상응하는 자손 노드들(23, 24)이 된다.
도 26을 참조하면, 도 25에 도시된 노드 체인지가 수행된 이후에, 멤버들(V, W, X)이 탈퇴함에 따라 서브 루트 노드(12)가 리프 노드가 되고 멤버(U)가 서브 루트 노드(12)에 상응하는 멤버가 된 것을 알 수 있다.
이후에, 멤버들(A, B, C, D)이 탈퇴함에 따라 서브 루트 노드(7)의 부모 노드(3)가 서브 루트 노드(7)의 형제 노드(8)로 대체되고, 형제 노드(8)에 자손 노드들(17, 18, 37, 38)이 있는 경우 자손 노드들(17, 18, 37, 38)이 서브 루트 노드(7)의 부모 노드(3)에 상응하는 자손 노드들(7, 8, 17, 18)이 된다.
도 27을 참조하면, 도 26에 도시된 노드 체인지가 수행된 이후에, 멤버들(I ~ P)이 탈퇴함에 따라 서브 루트 노드(4)의 부모 노드(1)가 서브 루트 노드(4)의 형제 노드(3)로 대체되고, 형제 노드(3)의 자손 노드들(7, 8, 17, 18)이 서브 루트 노드(4)의 부모 노드(1)에 상응하는 자손 노드들(3, 4, 9, 10)이 된다.
이후에, 멤버들(Y ~ *)이 탈퇴함에 따라 서브 루트 노드(6)의 부모 노드(2)가 서브 루트 노드(6)의 형제 노드(5)로 대체되고, 형제 노드(5)의 자손 노드들(11, 12, 23, 34)이 서브 루트 노드(6)의 부모 노드(2)의 자손 노드들(5, 6, 11, 12)이 된다.
도 25 내지 도 27의 노드 체인지(node change)가 끝나면 탈퇴한 멤버들이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 노드 키 업데이트가 수행된다.
도 27에 도시된 예에서, 탈퇴한 멤버들은 노드(0)의 키를 가지고 있으므로, 노드(0)이 업데이트 대상 노드가 된다.
노드(0)의 노드 키는 노드(1)의 노드 키를 이용하여 업데이트된다. 이 때, 노드(0)의 노드 키는 노드(1)의 노드 키에 대한 단방향 함수(one-way function)의 출력으로 설정될 수 있다. 이 때, 노드(1)의 노드 키는 노드 체인지 이전의 노드(3)의 노드 키일 수 있다. 노드(0)의 노드 키가 업데이트되면 노드(2)의 자손 노드들에 상응하는 멤버들(S, T, U)로 노드(0)의 노드 키가 암호화되어 전송된다.
도 28은 고정된 바이너리 트리에 대한 멀티 탈퇴(multi-leave)가 발생하는 경우의 일 예를 나타낸 도면이다.
도 28을 참조하면, 멤버들(A ~ H, M, N, &)이 동시에 그룹에서 탈퇴하는 것을 알 수 있다.
고정된 바이너리 트리에 상응하는 그룹에서 멀티 탈퇴가 발생한 경우에는 노드 체인지는 수행되지 아니하고 탈퇴한 멤버들이 키를 가지고 있는 노드들을 업데이트 대상 노드로 하여 키 업데이트만이 수행된다. 이 때, 탈퇴한 멤버에 상응하는 리프 노드는 멤버가 할당되지 아니한 상태로 유지된다.
도 29는 도 29에 도시된 바이너리 트리의 노드 키 업데이트 과정을 나타낸 도면이다.
도 29를 참조하면, 탈퇴한 멤버(&)는 노드들(30, 14, 6, 2, 0)의 키를 가지고 있고, 탈퇴한 멤버들(M., N)은 노드들(10, 4, 1, 0)의 키를 가지고 있고, 탈퇴한 멤버들(A ~ H)은 노드들(1, 0)의 키를 가지고 있으므로, 노드(0, 1, 2, 4, 6, 10, 14, 30)이 업데이트 대상 노드가 되어 키 업데이트가 수행되는 것을 알 수 있다.
업데이트 대상 노드에 대한 노드 키 업데이트 과정은 이미 설명한 바와 같다.
도 30은 본 발명의 일실시예에 따른 그룹 키 업데이트 방법을 나타낸 동작 흐름도이다.
도 30을 참조하면, 본 발명의 일실시예에 따른 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법은 상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택한다(S310).
이 때, 상기 서브 루트 노드는 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드 및 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드 중 어느 하나일 수 있다.
또한, 본 발명의 일실시예에 따른 그룹 키 업데이트 방법은 상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성한다(S320).
이 때, 단계(S320)는 하위 레벨에 상응하는 바이너리 트리를 우선하여 노드 체인지를 수행할 수 있다.
이 때, 단계(S320)는 상기 서브 루트 노드가 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에, 상기 서브 루트 노드의 부모 노드(parent node)를 상기 서브 루트 노드의 형제 노드(sibling node)로 대체하고, 상기 형제 노드에 자손 노드가 있는 경우 상기 자손 노드를 상기 서브 루트 노드의 부모 노드에 상응하는 자손 노드가 되도록 할 수 있다.
이 때, 단계(S320)는 상기 서브 루트 노드가 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에, 상기 서브 루트 노드를 리프 노드로 만들고, 상기 하나의 리프 노드에 상응하는 멤버를 상기 서브 루트 노드에 상응하는 멤버가 되도록 할 수 있다.
또한, 본 발명의 일실시예에 따른 그룹 키 업데이트 방법은 상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행한다(S330).
이 때, 단계(S330)는 상기 변화된 바이너리 트리상의 노드들 중 업데이트 대상 노드를 선정하는 단계 및 업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로 상기 업데이트 대상 노드의 키를 업데이트하는 단계를 포함할 수 있다. 이 때, 상기 업데이트 대상 노드의 키를 업데이트 하는 단계는 상기 업데이트된 키에 상응하는 노드의 부모 노드의 두 자식 노드의 키들이 모두 업데이트된 경우 상기 두 자식 노드 중 하나를 업데이트 이용 노드로 설정하는 단계 및 상기 업데이트 이용 노드를 이용하여 상기 부모 노드의 키를 업데이트하는 단계를 포함할 수 있다. 이 때, 상기 부모 노드의 키를 업데이트 하는 단계는 상기 업데이트 이용 노드의 키에 대한 단방향 함수(one-way function)의 출력을 상기 부모 노드의 키로 설정할 수 있다. 이 때, 상기 두 자식 노드들 중 하나를 업데이트 이용 노드로 설정하는 단계는 상기 두 자식 노드들의 노드 아이디를 비교하여 상기 두 자식 노드들 중 하나를 상기 업데이트 이용 노드로 설정할 수 있다.
이 때, 상기 노드 키 업데이트를 수행하는 단계는 상기 부모 노드의 키를 상기 두 자식 노드들 중 상기 업데이트 이용 노드 이외의 노드에 상응하는 그룹 멤버에게, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계를 더 포함할 수 있다. 이 때, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계는 상기 업데이트 이용 노드 이외의 노드의 키로 상기 부모 노드의 키를 암호화하여 전송할 수 있다.
도 31은 본 발명의 일실시예에 따른 고정된 트리 구조를 가지는 바이너리 트리에 대한 그룹 키 업데이트 방법을 나타낸 동작 흐름도이다.
도 31을 참조하면, 고정된 트리 구조를 가지는 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법은 상기 바이너리 트리상의 노드들 중 상기 멀티 탈퇴에 상응하는 업데이트 대상 노드를 선정한다(S410).
또한, 본 발명의 일실시예에 따른 고정된 트리 구조를 가지는 바이너리 트리에 상응하는 그룹의 멀티 탈퇴에 대한 그룹 키 업데이트 방법은 업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로, 상기 업데이트 대상 노드의 키를 업데이트한다(S420).
이 때, 단계(S420)는 상기 업데이트된 키에 상응하는 노드의 부모 노드의 두 자식 노드의 키들이 모두 업데이트된 경우 상기 두 자식 노드 중 하나를 업데이트 이용 노드로 설정하는 단계 및 상기 업데이트 이용 노드를 이용하여 상기 부모 노드의 키를 업데이트하는 단계를 포함할 수 있다.
이 때, 그룹 키 업데이트 방법은 상기 부모 노드의 키를 상기 두 자식 노드들 중 상기 업데이트 이용 노드 이외의 노드에 상응하는 그룹 멤버에게, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계를 더 포함할 수 있다. 이 때, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계는 상기 업데이트 이용 노드 이외의 노드의 키로 상기 부모 노드의 키를 암호화하여 전송할 수 있다.
본 발명에 따른 그룹 키 업데이트 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스 크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 32는 본 발명의 일실시예에 따른 그룹 키 업데이트 장치를 나타낸 블록도이다.
도 32을 참조하면, 본 발명의 일실시예에 따른 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 장치는 서브 루트 노드 선택부(510), 노드 체인지부(520) 및 노드 키 업데이트부(530)를 포함한다.
서브 루트 노드 선택부(510)는 상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택한다.
노드 체인지부(520)는 상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성한다.
이 때, 노드 체인지부(520)는 상기 서브 루트 노드가 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에, 상기 서브 루트 노드의 부모 노드(parent node)를 상기 서브 루트 노드의 형제 노드(sibling node)로 대체하고, 상기 형제 노드에 자손 노드가 있는 경우 상기 자손 노드를 상기 서브 루트 노드의 부모 노드에 상응하는 자손 노드가 되도록 한다.
또한, 노드 체인지부(520)는 상기 서브 루트 노드가 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에, 상기 서브 루트 노드를 리프 노드로 만들고, 상기 하나의 리프 노드에 상응하는 멤버를 상기 서브 루트 노드에 상응하는 멤버가 되도록 한다.
노드 키 업데이트부(530)는 상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행한다.
도 32에 도시된 장치에서 설명하지 아니한 내용은 도 30을 통하여 이미 설명된 바와 같으므로 이하 생략한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
본 발명의 그룹 키 업데이트 방법 및 그룹 키 업데이트 장치는, 효과적으로 셀프 업데이트를 수행할 수 있다.
또한, 본 발명은 일정한 시간 또는 일정한 수의 탈퇴 요청(leave request)을 누적하여 효과적으로 한꺼번에 그룹 키 업데이트를 처리할 수 있다.
또한, 본 발명은 셀프 업데이트를 수행할 수 없는 멤버들이 필요한 키를 효과적으로 제공 받도록 한다.
또한, 본 발명은 셀프 업데이트가 필요한 노드를 효과적으로 선별하고, 선별된 노드들에 대하여 효율적으로 키 업데이트를 수행할 수 있다.
또한, 본 발명은 서브 루트 노드(sub-root node)를 이용하여 효과적으로 멀티 탈퇴(multi-leave)에 따른 트리 구조 변화가 이루어지도록 한다.
Claims (31)
- 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법에 있어서,상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택하는 단계;상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성하는 단계; 및상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행하는 단계를 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제1항에 있어서,상기 서브 루트 노드는자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드; 및자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드중 어느 하나인 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제1항에 있어서,상기 변화된 바이너리 트리를 생성하는 단계는하위 레벨에 상응하는 바이너리 트리를 우선하여 상기 노드 체인지를 수행하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제3항에 있어서,상기 변화된 바이너리 트리를 생성하는 단계는상기 서브 루트 노드가 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에,상기 서브 루트 노드의 부모 노드(parent node)를 상기 서브 루트 노드의 형제 노드(sibling node)로 대체하고, 상기 형제 노드에 자손 노드가 있는 경우 상기 자손 노드를 상기 서브 루트 노드의 부모 노드에 상응하는 자손 노드가 되도록 하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제3항에 있어서,상기 변화된 바이너리 트리를 생성하는 단계는상기 서브 루트 노드가 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에,상기 서브 루트 노드를 리프 노드로 만들고, 상기 하나의 리프 노드에 상응하는 멤버를 상기 서브 루트 노드에 상응하는 멤버가 되도록 하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제1항에 있어서,상기 노드 키 업데이트를 수행하는 단계는상기 변화된 바이너리 트리상의 노드들 중 업데이트 대상 노드를 선정하는 단계; 및업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로 상기 업데이트 대상 노드의 키를 업데이트하는 단계를 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제6항에 있어서,상기 업데이트 대상 노드의 키를 업데이트 하는 단계는상기 업데이트된 키에 상응하는 노드의 부모 노드의 두 자식 노드의 키들이 모두 업데이트된 경우 상기 두 자식 노드 중 하나를 업데이트 이용 노드로 설정하는 단계; 및상기 업데이트 이용 노드를 이용하여 상기 부모 노드의 키를 업데이트하는 단계를 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제7항에 있어서,상기 두 자식 노드들 중 하나를 업데이트 이용 노드로 설정하는 단계는상기 두 자식 노드들의 노드 아이디를 비교하여 상기 두 자식 노드들 중 하나를 상기 업데이트 이용 노드로 설정하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제7항에 있어서,상기 노드 키 업데이트를 수행하는 단계는상기 부모 노드의 키를 상기 두 자식 노드들 중 상기 업데이트 이용 노드 이외의 노드에 상응하는 그룹 멤버에게, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계를 더 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제9항에 있어서,상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계는상기 업데이트 이용 노드 이외의 노드의 키로 상기 부모 노드의 키를 암호화하여 전송하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제7항에 있어서,상기 부모 노드의 키를 업데이트 하는 단계는상기 업데이트 이용 노드의 키에 대한 단방향 함수(one-way function)의 출력을 상기 부모 노드의 키로 설정하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제11항에 있어서,상기 단방향 함수는 상기 업데이트 이용 노드의 키 및 갱신 정보를 입력 받는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 고정된 트리 구조를 가지는 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 방법에 있어서,상기 바이너리 트리상의 노드들 중 상기 멀티 탈퇴에 상응하는 업데이트 대상 노드를 선정하는 단계; 및업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로, 상기 업데이트 대상 노드의 키를 업데이트하는 단계를 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제13항에 있어서,상기 업데이트 대상 노드의 키를 업데이트 하는 단계는상기 업데이트된 키에 상응하는 노드의 부모 노드의 두 자식 노드의 키들이 모두 업데이트된 경우 상기 두 자식 노드 중 하나를 업데이트 이용 노드로 설정하 는 단계; 및상기 업데이트 이용 노드를 이용하여 상기 부모 노드의 키를 업데이트하는 단계를 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제14항에 있어서,상기 두 자식 노드들 중 하나를 업데이트 이용 노드로 설정하는 단계는상기 두 자식 노드들의 노드 아이디를 비교하여 상기 두 자식 노드들 중 하나를 상기 업데이트 이용 노드로 설정하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제14항에 있어서,상기 그룹 키 업데이트 방법은상기 부모 노드의 키를 상기 두 자식 노드들 중 상기 업데이트 이용 노드 이외의 노드에 상응하는 그룹 멤버에게, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 단계를 더 포함하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제16항에 있어서,상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송 하는 단계는상기 업데이트 이용 노드 이외의 노드의 키로 상기 부모 노드의 키를 암호화하여 전송하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제14항에 있어서,상기 부모 노드의 키를 업데이트 하는 단계는상기 업데이트 이용 노드의 키에 대한 단방향 함수(one-way function)의 출력을 상기 부모 노드의 키로 설정하는 것을 특징으로 하는 그룹 키 업데이트 방법.
- 제1항 내지 제18항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
- 바이너리 트리(binary tree)에 상응하는 그룹의 멀티 탈퇴(multi leave)에 대한 그룹 키 업데이트 장치에 있어서,상기 바이너리 트리상의 노드들 중 서브 루트 노드를 선택하는 서브 루트 노드 선택부;상기 서브 루트 노드의 타입에 따라 상기 그룹에 대한 노드 체인지(node change)를 수행하여 변화된 바이너리 트리를 생성하는 노드 체인지부; 및상기 변화된 바이너리 트리에 대하여 노드 키 업데이트를 수행하는 노드 키 업데이트부를 포함하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제20항에 있어서,상기 서브 루트 노드는자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드; 및자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드중 어느 하나인 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제20항에 있어서,상기 노드 체인지부는하위 레벨에 상응하는 바이너리 트리를 우선하여 상기 노드 체인지를 수행하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제22항에 있어서,상기 노드 체인지부는상기 서브 루트 노드가 자손 노드에 상응하는 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에,상기 서브 루트 노드의 부모 노드(parent node)를 상기 서브 루트 노드의 형제 노드(sibling node)로 대체하고, 상기 형제 노드에 자손 노드가 있는 경우 상기 자손 노드를 상기 서브 루트 노드의 부모 노드에 상응하는 자손 노드가 되도록 하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제22항에 있어서,상기 노드 체인지부는상기 서브 루트 노드가 자손 노드에 상응하는 리프 노드들 중 하나의 리프 노드를 제외한 모든 리프 노드의 멤버가 탈퇴하는 조상 노드들 중 최상위 노드인 경우에,상기 서브 루트 노드를 리프 노드로 만들고, 상기 하나의 리프 노드에 상응하는 멤버를 상기 서브 루트 노드에 상응하는 멤버가 되도록 하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제20항에 있어서,상기 노드 키 업데이트부는상기 변화된 바이너리 트리상의 노드들 중 업데이트 대상 노드를 선정하는 업데이트 대상 노드 선정부; 및업데이트된 키를 이용하여 상기 업데이트 된 키에 상응하는 노드의 부모 노드(parent node)의 키를 업데이트하는 방식으로 상기 업데이트 대상 노드의 키를 업데이트하는 대상 노드 업데이트부를 포함하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제25항에 있어서,상기 대상 노드 업데이트부는상기 업데이트된 키에 상응하는 노드의 부모 노드의 두 자식 노드의 키들이 모두 업데이트된 경우 상기 두 자식 노드 중 하나를 업데이트 이용 노드로 설정하는 이용 노드 설정부; 및상기 업데이트 이용 노드를 이용하여 상기 부모 노드의 키를 업데이트하는 업데이트 수행부를 포함하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제26항에 있어서,상기 이용 노드 설정부는상기 두 자식 노드들의 노드 아이디를 비교하여 상기 두 자식 노드들 중 하나를 상기 업데이트 이용 노드로 설정하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제26항에 있어서,상기 노드 키 업데이트부는상기 부모 노드의 키를 상기 두 자식 노드들 중 상기 업데이트 이용 노드 이외의 노드에 상응하는 그룹 멤버에게, 상기 업데이트 이용 노드 이외의 노드에 상응하는 방식으로 암호화하여 전송하는 전송부를 더 포함하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제28항에 있어서,상기 전송부는상기 업데이트 이용 노드 이외의 노드의 키로 상기 부모 노드의 키를 암호화하여 전송하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제26항에 있어서,상기 업데이트 수행부는상기 업데이트 이용 노드의 키에 대한 단방향 함수(one-way function)의 출력을 상기 부모 노드의 키로 설정하는 것을 특징으로 하는 그룹 키 업데이트 장치.
- 제30항에 있어서,상기 단방향 함수는 상기 업데이트 이용 노드의 키 및 갱신 정보를 입력 받는 것을 특징으로 하는 그룹 키 업데이트 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060113438A KR101213160B1 (ko) | 2006-11-16 | 2006-11-16 | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 |
US11/819,255 US8270614B2 (en) | 2006-11-16 | 2007-06-26 | Method of updating group key and group key update device using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060113438A KR101213160B1 (ko) | 2006-11-16 | 2006-11-16 | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080044506A true KR20080044506A (ko) | 2008-05-21 |
KR101213160B1 KR101213160B1 (ko) | 2012-12-17 |
Family
ID=39416966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060113438A KR101213160B1 (ko) | 2006-11-16 | 2006-11-16 | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8270614B2 (ko) |
KR (1) | KR101213160B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725737B (zh) * | 2009-12-04 | 2016-04-20 | 密码研究公司 | 可验证防泄漏的加密和解密 |
CN102347835A (zh) * | 2010-07-30 | 2012-02-08 | 索尼公司 | 更新私钥的方法及设备、获得会话密钥的方法和通信设备 |
WO2015097834A1 (ja) * | 2013-12-26 | 2015-07-02 | 株式会社東芝 | 通信制御装置、通信制御方法およびプログラム |
US12118077B2 (en) * | 2021-01-21 | 2024-10-15 | Intuit Inc. | Feature extraction and time series anomaly detection over dynamic graphs |
US11863350B2 (en) * | 2021-09-09 | 2024-01-02 | Ciena Corporation | Fast convergence of E-Tree with a dual homed root node |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261088A (en) * | 1990-04-26 | 1993-11-09 | International Business Machines Corporation | Managing locality in space reuse in a shadow written B-tree via interior node free space list |
JP4622087B2 (ja) | 2000-11-09 | 2011-02-02 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム記憶媒体 |
JPWO2002080446A1 (ja) | 2001-03-29 | 2004-07-22 | ソニー株式会社 | 情報処理装置 |
US7043024B1 (en) * | 2001-04-18 | 2006-05-09 | Mcafee, Inc. | System and method for key distribution in a hierarchical tree |
US7007040B1 (en) * | 2001-12-04 | 2006-02-28 | General Dynamics C4 Systems, Inc. | Method and apparatus for storing and updating information in a multi-cast system |
US7599497B2 (en) * | 2002-03-27 | 2009-10-06 | British Telecommunications Public Limited Company | Key management protocol |
GB2400526B (en) | 2003-04-08 | 2005-12-21 | Hewlett Packard Development Co | Cryptographic key update management |
JP4504083B2 (ja) | 2003-04-28 | 2010-07-14 | 株式会社リコー | デジタル証明書管理システム、デジタル証明書管理装置、デジタル証明書管理方法、更新手順決定方法およびプログラム |
KR100509233B1 (ko) | 2003-06-09 | 2005-08-22 | 학교법인고려중앙학원 | 멀티캐스트 그룹 키 관리 방법 및 장치 |
JP4239802B2 (ja) | 2003-11-27 | 2009-03-18 | 株式会社日立製作所 | マルチキャスト送信方法 |
KR100579515B1 (ko) | 2004-10-08 | 2006-05-15 | 삼성전자주식회사 | 브로드캐스트 암호화를 위한 키 생성 장치 및 방법 |
KR100727387B1 (ko) | 2004-10-22 | 2007-06-12 | 삼성전자주식회사 | 네트워크 시스템에서의 키 관리방법 |
-
2006
- 2006-11-16 KR KR1020060113438A patent/KR101213160B1/ko active IP Right Grant
-
2007
- 2007-06-26 US US11/819,255 patent/US8270614B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR101213160B1 (ko) | 2012-12-17 |
US8270614B2 (en) | 2012-09-18 |
US20080118068A1 (en) | 2008-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019203849C1 (en) | Updating blockchain world state merkle patricia trie subtree | |
AU2019203850B2 (en) | Constructing blockchain world state merkle patricia trie subtree | |
KR101213160B1 (ko) | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 | |
KR101223499B1 (ko) | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 | |
US10700934B2 (en) | Communication control device, communication control method, and computer program product | |
KR20080044483A (ko) | 키 업데이트 방법 및 이를 이용한 키 업데이트 장치 | |
US10673713B2 (en) | Communication control device, communication device, and computer program product for dynamic group management | |
US20150208210A1 (en) | Communication control device, communication device, and computer program product | |
TW202304171A (zh) | 用於以區塊鏈實施之資料應用程式中簽章驗證的改良方法與系統 | |
US20150026799A1 (en) | Information processing system, information processing method, and non-transitory computer readable medium | |
KR101285597B1 (ko) | 그룹 키 업데이트 방법 및 이를 이용한 그룹 키 업데이트장치 | |
JP6290443B2 (ja) | 通信制御装置、通信制御方法およびプログラム | |
KR101300843B1 (ko) | 리키 인덱스 생성 방법 및 이를 이용한 리키 인덱스 생성장치 | |
JP2009038416A (ja) | マルチキャスト通信システム、並びにグループ鍵管理サーバ | |
Albrecht et al. | Exploring trade-offs in batch bounded distance decoding | |
Naser et al. | Proposed simulator based on developed lightweight authentication and key management protocol for wireless sensor network | |
US10397174B2 (en) | Message delivery in a message system | |
JP2009065345A (ja) | Sd法におけるクライアント端末被覆方法およびプログラム | |
JP6472911B2 (ja) | 通信装置、通信方法、プログラムおよび通信システム | |
JP6302109B2 (ja) | 通信制御装置、通信制御方法、プログラムおよび通信システム | |
JP6162873B2 (ja) | 通信制御装置、通信装置およびプログラム | |
Xiang | Database Encryption for Dababase-as-a-Service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151116 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161118 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171120 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20181119 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20191119 Year of fee payment: 8 |