KR20210131523A - LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 - Google Patents
LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 Download PDFInfo
- Publication number
- KR20210131523A KR20210131523A KR1020200049681A KR20200049681A KR20210131523A KR 20210131523 A KR20210131523 A KR 20210131523A KR 1020200049681 A KR1020200049681 A KR 1020200049681A KR 20200049681 A KR20200049681 A KR 20200049681A KR 20210131523 A KR20210131523 A KR 20210131523A
- Authority
- KR
- South Korea
- Prior art keywords
- public key
- node
- key
- server
- data
- 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/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/0825—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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/04—Key management, e.g. using generic bootstrapping architecture [GBA]
- H04W12/047—Key management, e.g. using generic bootstrapping architecture [GBA] without using a trusted network node as an anchor
- H04W12/0471—Key exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/18—Self-organising networks, e.g. ad-hoc networks or sensor networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
본 발명은, LoRaWAN에서 비대칭키 암호화 적용을 위하여 공개키를 교환하는 방법을 개시한다. 본 발명에 따른 키 교환 방법은, 제1 기기가 제2 기기로 제1 기기의 공개키를 전송하는 단계; 제2 기기가 제1 기기의 공개키를 저장하는 한편 제2 기기의 공개키 데이터를 다수개로 분할하여 제1 기기로 전송하는 단계; 제1 기기가 제2 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립하여 제2 기기의 공개키를 생성하고 저장하는 단계를 포함할 수 있다.
본 발명에 따르면, LoRaWAN 환경에서 서버와 노드 간에 비대칭키 암호화를 위한 키 교환을 원활하게 수행할 수 있고, 이를 통해 LoRaWAN의 보안성을 보다 강화할 수 있다.
본 발명에 따르면, LoRaWAN 환경에서 서버와 노드 간에 비대칭키 암호화를 위한 키 교환을 원활하게 수행할 수 있고, 이를 통해 LoRaWAN의 보안성을 보다 강화할 수 있다.
Description
본 발명은 LoRaWAN에서 비대칭키 암호화 적용에 관한 것으로서, 구체적으로는 데이터 전송률과 송수신 기간이 제한된 LoRaWAN 환경에서 비대칭키 암호화 적용을 위하여 서버와 노드 간에 키를 교환하는 방법에 관한 것이다.
최근 각종 사물에 센서와 통신기능을 내장하여 인터넷으로 서로 연결하는 사물 인터넷(Internet of Things: IoT)이 새로운 미래 산업으로 부상함에 따라 관련 기술과 서비스에 대한 연구 개발이 활발하게 이루어지고 있다.
IoT는 서비스 유형에 따라 통신환경이나 커버리지가 다양하기 때문에 근거리 무선통신과 장거리 무선통신이 복합적으로 또는 선택적으로 사용된다.
가정이나 사무실을 대상으로 하는 서비스에는 지웨이브(Z-wave), 지그비(Zigbee), BLE(Bluetooth Low Energy) 등의 근거리 무선통신이 주로 사용되고, 원격 감시, 검침 등의 서비스에는 LTE-M, NB-Iot(NarrowBand-Internet of Things), LoRa(Long Range) 등의 저전력 광역(Low Power Wide-Area: LPWA) 통신이 주로 사용되고 있다.
이 중에서 LoRa는 약 900MHz의 비면허대역에서 CSS(Chirp Spread Spectrum) 변조를 사용하는 RF기술로서, 소용량의 데이터를 약 0.3kbps 내지 50kbps의 속도로 전송하기 때문에 전력소비가 매우 적고 도시의 경우 약 10km, 농촌/준도시 지역의 경우 약15km의 서비스 커버리지를 가지므로 원격 검침 분야에서 많은 주목을 받고 있다.
LoRaWAN(Long Range Wide Area Network)은 LoRa를 기반으로 하는 통신 규약과 네트워크 아키텍처를 정의한 것으로서 LoRa Alliance에서 관리된다. LoRaWAN의 네트워크 아키텍처는, 다수의 노드와, 각 노드와 무선으로 연결된 게이트웨이와, 게이트웨이와 유선으로 연결된 서버를 포함한다.
한편, LoRaWAN에서는 데이터 보안을 위하여 AES-128 알고리즘을 이용한 대칭키 암호화 방식을 적용하고 있다. 구체적으로는, 각 노드와 서버에 AES-128 보안 모듈을 탑재하고 서로의 비밀키를 공유한 후 데이터를 송신할 때마다 서로의 비밀키로 암호화하여 전송하는 방식을 채택하고 있다.
그러나 알려진 바와 같이 대칭키 암호화 방식은 비밀키가 해킹되거나 외부에 알려지면 비밀유지가 불가능해지는 취약점이 있으므로 LoRaWan의 보안성을 보다 강화시킬 필요가 있다. 예를 들어, 군, 경찰, 공공기관, 철도, 도로, 발전소 등과 같은 주요 기반시설에 사물인터넷을 적용하는 경우에는 데이터 보안을 위한 추가적인 방안을 마련할 필요가 있다.
구체적으로는 공개키/비밀키 쌍을 활용하는 비대칭키 암호화 방식이 대칭키 암호화 방식에 비하여 보안성이 높은 것으로 알려져 있으므로 LoRaWAN에서도 비대칭키 암호화를 적용할 필요가 있다.
그런데 비대칭키 암호화를 적용하기 위해서는 서버와 노드가 서로의 공개키를 교환해야 하고, 이때 의미 있는 암호화가 가능한 수준의 키교환을 위해서는 적어도 136바이트 또는 그 이상의 데이터를 송수신해야 한다.
그러나 LoRa 통신은 데이터 전송 속도가 매우 느릴 뿐만 아니라 한번에 전송 가능한 데이터의 크기도 제한적이기 때문에 비대칭키 암호화를 위한 키 교환 자체가 쉽지 않으며, 이로 인해 비대칭키 암호화 방식을 적용하기 어려운 문제가 있다.
본 발명은 이러한 배경에서 고안된 것으로서, LoRaWAN 환경에서 서버와 노드 간에 비대칭키 암호화 적용을 위한 키 교환을 원활하게 수행할 수 있는 방법을 제공하고, LoRaWAN의 보안성을 보다 강화하는데 그 목적이 있다.
이러한 목적을 달성하기 위하여, 본 발명의 제1 양상은, LoRaWAN에서 비대칭키 암호화 적용을 위하여 공개키를 교환하는 방법에 있어서, 제1 기기가 제2 기기로 제1 기기의 공개키를 전송하는 단계; 제2 기기가 제1 기기의 공개키를 저장하는 한편 제2 기기의 공개키 데이터를 다수개로 분할하여 제1 기기로 전송하는 단계; 제1 기기가 제2 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립하여 제2 기기의 공개키를 생성하고 저장하는 단계를 포함하는 키 교환 방법을 제공한다.
본 발명의 제1 양상에 따른 키 교환 방법에서, 제1 기기가 제2 기기로 제1 기기의 공개키를 전송할 때는 제1 기기의 공개키를 다수개로 분할하여 전송하고, 제2 기기가 제1 기기의 공개키를 저장할 때는 제1 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립한 후에 저장할 수 있다.
또한 본 발명의 제1 양상에 따른 키 교환 방법에서, 제1 기기는 서버이고 제2 기기는 노드이며, 제1 기기는 제1 기기와 제2 기기 간에 설정된 LoRa 클래스가 C클래스로 변경된 이후에 제1 기기의 공개키를 제2 기기로 전송할 수 있다.
본 발명의 제2 양상은, LoRaWAN에서 비대칭키 암호화 적용을 위하여 공개키를 교환하는 방법에 있어서, 제1 기기와 제2 기기 간에 설정된 LoRa 클래스를 C클래스로 변경하는 단계; 제1 기기가 제2 기기로 제1 기기의 공개키를 전송하는 단계; 제2 기기가 제1 기기의 공개키를 저장하는 한편 제2 기기의 공개키를 제1 기기로 전송하는 단계; 제1 기기가 제2 기기의 공개키를 저장하는 단계; 제1 기기와 제2 기기 간에 설정된 LoRa 클래스를 원래의 클래스로 복원하는 단계를 포함하는 키 교환 방법을 제공한다.
본 발명의 제2 양상에 따른 키 교환 방법에서, 제1 기기는 서버이고 제2 기기는 노드이며, 제2 기기가 제2 기기의 공개키를 제1 기기로 전송할 때는 제2 기기의 공개키 데이터를 다수개로 분할하여 제1 기기로 전송하고, 제1 기기가 제2 기기의 공개키를 저장할 때는 제2 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립한 후에 저장할 수 있다.
본 발명의 제3 양상은, 이상에서 설명한 키 교환 방법을 구현하는 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체를 제공한다.
본 발명의 제4 양상은, LoRaWAN 환경에서 서버와 데이터를 송수신하는 노드에 있어서, 메모리에 저장된 프로그램을 실행하는 프로세서; 게이트웨이와 데이터를 송수신하는 무선통신부; 서버로 송신할 데이터를 비대칭키 방식으로 암호화하는 비대칭키 보안 모듈; 공개키 교환을 위하여 노드의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 서버로부터 수신한 다수의 분할된 공개키 데이터를 서버의 공개키로 조립하는 키 분할 및 조립부를 포함하는 노드를 제공한다.
본 발명의 제4 양상에 따른 노드는, 설정된 LoRa 클래스를 C클래스로 변경하는 LoRa 클래스 변경부를 더 포함하며, LoRa 클래스가 C클래스로 변경된 이후에 노드의 공개키를 서버로 전송하거나 서버의 공개키를 수신할 수 있다.
또한 본 발명의 제4 양상에 따른 노드는, 송신할 데이터의 종류 또는 데이터 변동률을 기준으로 비대칭키 암호화 적용 여부를 결정하는 보안레벨 판단부를 더 포함할 수 있다.
본 발명의 제5 양상은, LoRaWAN 환경에서 노드와 데이터를 송수신하는 서버에 있어서, 메모리에 저장된 프로그램을 실행하는 프로세서; 게이트웨이와 데이터를 송수신하는 통신부; 노드로 송신할 데이터를 비대칭키 방식으로 암호화하는 비대칭키 보안 모듈; 공개키 교환을 위하여 노드에 대해 LoRa 클래스를 C클래스로 변경할 것을 요청하는 LoRa 클래스 변경부을 포함하는 서버를 제공한다.
본 발명의 제5 양상에 따른 서버는, 공개키 교환을 위하여 서버의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 노드로부터 수신한 다수의 분할된 공개키 데이터를 노드의 공개키로 조립하는 키 분할 및 조립부를 더 포함할 수 있다.
또한 본 발명의 제5 양상에 따른 서버는, 다수의 노드에 대한 키 교환 스케쥴을 설정하여 각 노드로 전송하고, 키 교환이 실패한 노드가 발생하면 키 교환을 대기하는 모든 노드의 키 교환 스케쥴을 조정하거나 키 교환이 실패한 노드의 키 교환 시기를 스케쥴의 마지막으로 변경하는 키 교환 스케쥴러를 더 포함할 수 있다.
본 발명의 제6 양상은, 다수의 노드, 상기 다수의 노드와 데이터를 송수신하는 서버를 포함하는 LoRaWAN 시스템에 있어서, 상기 노드는, 서버로 송신할 데이터를 비대칭키 방식으로 암호화하는 제1 비대칭키 보안 모듈과, 공개키 교환을 위하여 노드의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 서버로부터 수신한 다수의 분할된 공개키 데이터를 서버의 공개키로 조립하는 제1 키 분할 및 조립부를 포함하고, 상기 서버는, 노드로 송신할 데이터를 비대칭키 방식으로 암호화하는 제2 비대칭키 보안 모듈과, 공개키 교환을 위하여 서버의 공개키 데이터를 다수개로 분할하여 노드로 전송하거나, 노드로부터 수신한 다수의 분할된 공개키 데이터를 노드의 공개키로 조립하는 제2 키 분할 및 조립부를 포함하는 LoRaWAN 시스템을 제공한다.
본 발명의 제6 양상에 따른 LoRaWAN 시스템에서, 상기 서버 또는 상기 노드는, 공개키 교환을 위하여 LoRa 클래스를 C클래스로 변경하는 LoRa 클래스 변경부를 더 포함하고, LoRa 클래스가 C클래스로 변경된 이후에 노드의 공개키를 서버로 전송하거나 서버의 공개키를 노드로 전송할 수 있다.
본 발명에 따르면, LoRaWAN 환경에서 서버와 노드 간에 비대칭키 암호화를 위한 키 교환을 원활하게 수행할 수 있고, 이를 통해 LoRaWAN의 보안성을 보다 강화할 수 있다.
도 1은 LoRaWAN의 네트워크 아키텍처를 예시한 도면.
도 2는 본 발명의 일 실시예에 따른 노드의 구성을 예시한 블록도.
도 3은 데이터 암호화 과정을 예시한 도면
도 4는 키 분할 과정을 예시한 도면
도 5는 본 발명의 일 실시예에 따른 서버의 구성을 예시한 블록도.
도 6은 본 발명의 제1 실시예에 따른 키 교환 방법을 나타낸 흐름도
도 7은 본 발명의 제2 실시예에 따른 키 교환 방법을 나타낸 흐름도
도 8은 노드에서 키 교환을 위해 LoRa 클래스를 변경하는 경우를 나타낸 흐름도
도 9는 서버에서 키 교환을 위하여 각 노드의 대기시간을 조정하는 과정을 나타낸 흐름도.
도 2는 본 발명의 일 실시예에 따른 노드의 구성을 예시한 블록도.
도 3은 데이터 암호화 과정을 예시한 도면
도 4는 키 분할 과정을 예시한 도면
도 5는 본 발명의 일 실시예에 따른 서버의 구성을 예시한 블록도.
도 6은 본 발명의 제1 실시예에 따른 키 교환 방법을 나타낸 흐름도
도 7은 본 발명의 제2 실시예에 따른 키 교환 방법을 나타낸 흐름도
도 8은 노드에서 키 교환을 위해 LoRa 클래스를 변경하는 경우를 나타낸 흐름도
도 9는 서버에서 키 교환을 위하여 각 노드의 대기시간을 조정하는 과정을 나타낸 흐름도.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다.
참고로 본 명세서에서 하나의 구성요소(element)가 다른 구성요소와 연결, 결합, 또는 통신하는 경우는, 다른 구성요소와 직접적으로 연결, 결합, 또는 통신하는 경우만 아니라 중간에 다른 요소를 사이에 두고 간접적으로 연결, 결합, 또는 통신하는 경우도 포함한다. 또한 하나의 구성요소가 다른 구성요소와 직접 연결 또는 직접 결합되는 경우는 중간에 다른 요소가 개재되지 않는 것을 의미한다. 또한 어떤 부분이 어떤 구성요소를 포함 또는 구비하는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함하거나 구비할 수 있는 것을 의미한다. 또한 본 명세서에 첨부된 도면은 발명의 요지를 이해하기 쉽도록 예시한 것에 불과하므로 이로 인해 본 발명의 권리범위가 제한되어서는 아니 됨을 미리 밝혀 둔다.
먼저 도 1은 LoRaWAN의 네트워크 아키텍처를 예시한 것으로서, LoRaWAN은 다수의 노드(100), 다수의 노드(100)와 무선으로 통신하는 하나 이상의 게이트웨이(210,220), 게이트웨이(210,220)와 통신망(300)으로 연결된 서버(400)를 포함하여 구성된다.
먼저 본 발명의 일 실시예에 따른 노드(100)는, 도 2의 블록도에 예시한 바와 같이, 프로세서(110), 메모리(120), 데이터획득부(130), 무선통신부(140), 대칭키 보안 모듈(150), 비대칭키 보안 모듈(160), 키 교환 방법 판단부(170), LoRa 클래스 변경부(180), 키 분할 및 조립부(190), 보안레벨 판단부(195), 버스(102) 등을 포함할 수 있다.
프로세서(110)는 메모리(120)에 저장된 컴퓨터 프로그램을 실행하여 소정의 연산이나 데이터 처리를 실행한다.
메모리(120)는 비휘발성 메모리(예: 플래시 메모리 등)와 휘발성 메모리(예: RAM(random access memory)를 포함할 수 있다. 또한 메모리(120)에는 대용량 데이터 저장을 위한 HDD, SSD, CD-ROM 등의 스토리지(storage)가 포함될 수도 있다.
메모리(120)에는 노드(100)의 동작을 위한 컴퓨터 프로그램, 각종 파라미터, 데이터 등이 저장될 수 있다. 컴퓨터 프로그램은 프로세서(110)에 의해 실행되는 명령어의 집합이며, 운영체제, 미들웨어, 애플리케이션 또는 애플리케이션 프로그래밍 인터페이스(API: application programming interface) 등을 포함할 수 있다. 컴퓨터 프로그램은 비휘발성 메모리에 저장되고 휘발성 메모리로 로드되어 실행될 수 있다.
데이터 획득부(130)는 노드(100)에 연결된 센서(도면에는 나타내지 않았음)로부터 측정데이터를 획득하거나, 노드(100)에 연결된 전자기기로부터 해당 전자기기의 상태정보를 획득하거나, 노드(100)에 연결된 전자기기가 수집한 데이터를 획득할 수 있다.
무선통신부(140)는 게이트웨이(210,220)와 LoRa통신을 수행하며, LoRa 트랜시버 모듈의 형태로 탑재될 수도 있고, 기타 다른 방식으로 제공될 수도 있다.
대칭키 보안 모듈(150)은 데이터 획득부(130)에서 획득한 데이터를 대칭키 암호화 알고리즘(예, AES-128)을 적용하여 암호화하고, 암호화된 데이터를 무선통신부(140)로 전달한다.
대칭키 보안 모듈(150)은 메모리(120)에 저장된 암호화 프로그램의 형태로 제공될 수도 있고, 하드웨어의 형태로 제공될 수도 있고, 하드웨어와 소프트웨어가 결합된 형태로 제공될 수도 있다.
대칭키 보안 모듈(150)은 무선통신부(140)와 통합되어 원칩으로 패키징될 수도 있다.
비대칭키 보안 모듈(160)은 데이터 획득부(130)에서 획득한 데이터를 비대칭키 암호화 알고리즘(예, RSA)을 적용하여 암호화하고, 암호화된 데이터를 대칭키 보안 모듈(150) 또는 무선통신부(140)로 전달한다.
비대칭키 보안 모듈(160)은 메모리(120)에 저장된 암호화 프로그램의 형태로 제공될 수도 있고, 하드웨어의 형태로 제공될 수도 있고, 하드웨어와 소프트웨어가 통합된 형태로 제공될 수도 있다.
또한 비대칭키 보안 모듈(160)은 무선통신부(140), 대칭키 보안 모듈(150) 중에서 적어도 하나와 통합되어 원칩으로 패키징될 수도 있다.
한편 데이터 획득부(130)에서 획득한 데이터는, 도 3에 예시한 바와 같이, 비대칭키 방식으로 암호화된 후에 다시 대칭키 방식으로 암호화될 수 있으며, 이렇게 하면 이중 암호화로 인해 보안성이 크게 강화될 수 있다.
다만, 반드시 모든 데이터를 이중으로 암호화하지 않아도 무방하다. 예를 들어 데이터의 종류, 노드(100)의 보안등급 등에 따라서는 데이터를 전혀 암호화하지 않고 무선통신부(140)를 통해 서버(400)로 전송하거나 대칭키 방식 또는 비대칭키 방식 중에서 어느 하나의 방식으로만 암호화한 후에 서버(400)로 전송할 수도 있다.
또한 도 3에는 데이터를 먼저 비대칭키 방식으로 암호화한 후에 다시 대칭키 방식으로 암호화하는 것으로 나타나 있으나, 이와 반대로 데이터를 대칭키 방식으로 암호화한 후에 다시 비대칭키 방식으로 암호화하는 것도 가능하다.
또한 본 발명의 실시예에서는, 보안성 강화를 위하여 노드(100)에 2가지 종류의 암호화 모듈(150,160)을 탑재하였으나 이에 한정되는 것은 아니므로 필요한 경우에는 다른 종류의 보안 방법을 추가로 적용함으로써 보안성을 보다 강화할 수도 있다.
키교환 방법 판단부(170)는 비대칭키 암호화에 사용될 공개키를 서버(400)와 교환하는 방법을 결정한다.
비대칭키 암호화를 위해서는 노드(100)와 서버(400)가 서로의 공개키를 교환해 두어야 하는데, 일반적으로 공개키는 데이터 전송률이 낮은 LoRa 통신을 통해 한 번에 전송하기 어려울 정도로 데이터 용량이 크기 때문에 원활한 전송을 위해서는 다양한 전송 방법을 마련하고 상황에 따라 최적의 방법을 적용할 필요가 있다.
본 발명의 실시예는 이를 위하여, 공개키 데이터를 다수 개로 분할하여 서버(400)로 전송하는 제1 방법과, 노드(100)에 설정되어 있는 LoRa 통신 클래스를 키 교환에 적합한 클래스로 일시 변경하는 제2 방법을 제안하고 있다.
키교환 방법 판단부(170)는 설정 조건을 충족한 경우 또는 서버(400)의 지령이 있는 경우에 위 제1 방법과 제2 방법 중에서 어떤 방법을 적용하여 공개키 교환을 수행할 것인지 결정한다.
LoRa 클래스 변경부(180)는 키교환 방법 판단부(170)에서 LoRa 통신 클래스를 변경하기로 결정한 경우에 이를 변경하고 게이트웨이(210,220)로 클래스 변경을 통지한다. 만일 서버(400)의 지령에 의해 게이트웨이(210,220)로부터 클래스 변경 요청을 수신한 경우에는 클래스를 변경한 후 게이트웨이(210,220)로 변경 여부를 통지할 수도 있다.
일반적으로 LoRa 통신 클래스는 A, B, C 클래스로 구분된다. 이 중에서 A클래스는 노드(100)가 게이트웨이(210,220)로 업링크(up-link) 전송을 수행한 직후에만 다운링크(down-link) 수신이 가능한 동작 모드로서, 전력소비를 최소화하기 위하여 업링크 전송 후 2개의 짧은 수신기간을 설정하고 수신구간이 모두 경과하면 실제 수신 여부와는 상관없이 송수신기의 전원을 끄는 동작 모드이다.
B클래스는 노드(100)가 업링크 전송을 수행하는지 여부와 상관없이 일정 주기마다 다운링크(down-link) 수신기간이 설정되는 동작 모드이다.
C클래스는 노드(100)가 업링크 전송을 수행하는 기간을 제외하고 거의 연속적인 수신기간이 제공되는 동작모드로서, 노드(100)가 대용량의 데이터를 수신해야 하거나 전력 공급이 충분한 경우에 적용되는 동작 모드이다.
본 발명의 실시예에서는, 공개키 교환이 필요한 경우에 LoRa 클래스 변경부(180)가 A클래스 또는 B클래스로 동작하는 노드(100)를 C클래스로 변경할 수 있으며, 이 경우 노드(100)가 서버(400)의 공개키를 수신할 때 수신 지연이 거의 발생하지 않으므로 키 교환시간을 크게 단축시킬 수 있다.
다만, 노드(100)가 C클래스로 변경되더라도, 노드(100)가 자신의 공개키를 서버(400)로 전송할 때는 설정된 송신주기가 도래해야만 전송할 수 있으므로 송신 지연은 발생할 수 있다. 그렇다고 해도, 노드(100)가 A클래스일 때 키 교환을 수행하는 경우에 비해서는 키 교환시간을 크게 단축시킬 수 있음은 분명하다.
한편 노드(100)가 C클래스로 변경된 경우에도, 노드(100)는 자신의 공개키를 서버(400)로 송신할 때 공개키 데이터를 다수 개로 분할하여 전송할 수도 있다.
키 분할 및 조립부(190)는 키교환 방법 판단부(170)에서 공개키 데이터를 분할 전송하기로 결정한 경우에 비대칭키 보안 모듈(160)에서 생성한 공개키 데이터를 설정된 개수로 분할할 수 있다.
공개키 데이터를 분할하는 방식은 특별히 한정되지 않으며, 예를 들어A클래스를 기준으로 한 번에 송신 가능한 크기의 데이터로 분할할 수 있다.
또한 키 분할 및 조립부(190)는 공개키 데이터를 다수 개로 분할한 후 무선통신부(140)를 통해 서버(400)로 바로 전송할 수도 있고, 도 4에 예시한 바와 같이, 분할된 공개키 데이터를 각각 대칭키 알고리즘(AES-128)으로 암호화한 이후에 서버(400)로 전송할 수도 있다. 이때 다수의 분할된 공개키 데이터는 각각 헤더, 테일러 등을 포함하는 서브 패킷의 형태로 전송될 수도 있다.
또한 키 분할 및 조립부(190)는 서버(400)로부터 수신한 다수의 분할된 공개키 데이터, 즉 다수의 서브 패킷으로부터 서버(400)의 공개키를 조립하고 무결성 체크 등을 수행할 수 있다.
보안레벨 판단부(195)는 설정 조건을 충족한 경우 또는 서버(400)의 지령이 있는 경우에 노드(100)의 보안레벨을 변경할 수 있다. 보안레벨은, 예를 들어, 암호화 생략, 대칭키 암호화 적용, 비대칭키 암호화 적용, 대칭키와 비대칭키를 이용한 이중 암호화 적용 등으로 순차적으로 정의될 수 있다.
또한 보안레벨 판단부(195)는, 데이터의 종류, 데이터 변동률 등을 고려하여 보안레벨을 차등화하여 적용할 수도 있다. 예를 들어, 획득한 데이터 중에서 일반적인 종류의 데이터는 낮은 단계의 보안레벨을 적용하고, 보안이 요구되는 데이터는 높은 단계의 보안레벨을 적용할 수 있다.
또한 획득한 데이터 중에서 직전 주기 대비 변동이 적은 데이터는 낮은 단계의 보안레벨을 적용하여 송신하고, 직전 주기 대비 변동률이 설정값 이상으로 증가한 데이터는 감시대상에 이상이 발생한 것을 의미할 수 있으므로 직전 주기보다 높은 레벨의 보안을 적용하여 송신할 수도 있다. 즉, 직전 주기에 평문으로 전송한 경우에는 변동률이 설정값 보다 증가하면 대칭키 암호화를 적용하여 전송하고, 직전 주기에 대칭키 암호화를 적용한 경우에는 변동률이 설정값 보다 증가하면 비대칭키 암호화 또는 이중 암호화를 적용하여 전송할 수 있다.
데이터 변동률을 산출하는 방식은 특별히 한정되지 않는다. 예를 들어 직전 주기의 데이터 비트와 현 주기의 데이트 비트를 십진수 기준으로 대비하여 변동률을 산출할 수도 있고, 차이가 나는 비트의 개수를 기준으로 변동률을 산출할 수도 있고, 기타 다른 방식으로 변동률을 산출할 수도 있다.
버스(102)는 노드(100)의 각 구성요소 간에 전기적 신호를 전송하는 것으로서, 케이블, 회로패턴 등일 수 있다.
한편 노드(100)의 위 구성요소 중에서, 키 교환 방법 판단부(170), LoRa 클래스 변경부(180), 키 분할 및 조립부(190), 보안레벨 판단부(195) 등은 다양한 방식으로 구현될 수 있다.
예를 들어 이 중에서 적어도 하나 또는 일부의 기능은 메모리(120)에 저장되어 프로세서(110)에 의해 실행되는 컴퓨터 프로그램으로 제공될 수도 있다. 또한 이 중에서 적어도 하나 또는 일부의 기능은 하드웨어로 구현될 수도 있고, 소프트웨어와 하드웨어의 조합으로 구현될 수도 있다. 이때 하드웨어는 주문형 반도체(ASIC, Application Specific Integrated Circuit) 일 수도 있다.
이 밖에도 도면에는 나타내지 않았지만, 노드(100)는 다른 기기와의 연결을 위한 유선통신부, WiFi, 지그비(Zigbee) 등의 근거리 무선통신부 등을 더 포함할 수도 있다. 또한 노드(100)은 키패드, 터치스크린 등의 입력수단을 포함할 수도 있고, 상태표시를 위한 디스플레이를 포함할 수도 있다.
다음으로 본 발명의 일 실시예에 따른 서버(400)는, 도 5의 블록도에 예시한 바와 같이, 프로세서(410), 메모리(420), 통신부(430), 모니터링부(440), 대칭키 보안 모듈(450), 비대칭키 보안 모듈(460), 키 교환 방법 판단부(470), LoRa 클래스 변경부(480), 키 분할 및 조립부(490), 보안레벨 판단부(495), 키교환 스케쥴러(498), 버스(402) 등을 포함할 수 있다.
프로세서(410)는 메모리(420)에 저장된 컴퓨터 프로그램을 실행하여 소정의 연산이나 데이터 처리를 실행한다.
메모리(420)는 비휘발성 메모리와 휘발성 메모리를 포함할 수 있다. 또한 메모리(420)에는 대용량 데이터 저장을 위한 HDD, SSD, CD-ROM 등의 스토리지가 포함될 수도 있다.
메모리(420)에는 서버(400)의 동작을 위한 컴퓨터 프로그램, 각종 파라미터, 데이터 등이 저장될 수 있다. 컴퓨터 프로그램은 비휘발성 메모리에 저장되고 휘발성 메모리로 로드되어 프로세서(410)에 의해 실행될 수 있다.
통신부(430)는 통신망(300)을 통해 게이트웨이(210,220)와의 통신을 수행하며, 예를 들어 TCP/IP 통신을 수행할 수 있으나 반드시 이에 한정되는 것은 아니다.
모니터링부(440)는 각 노드(100)의 통신 상태를 감시하거나, 각 노드(100)의 동작 상태를 감시하거나, 각 노드(100)로부터 수신한 데이터를 수집 분석하는 역할을 한다.
대칭키 보안 모듈(450)은 노드(100)로 전송할 데이터를 대칭키 암호화 알고리즘(예, AES-128)을 적용하여 암호화하고, 암호화된 데이터를 통신부(430)로 전달한다.
대칭키 보안 모듈(450)은 메모리(420)에 저장된 암호화 프로그램의 형태로 제공될 수도 있고, 하드웨어의 형태로 제공될 수도 있고, 하드웨어와 소프트웨어가 결합된 형태로 제공될 수도 있다.
한편 도면에는 대칭키 보안 모듈(450)이 서버(400)에 설치되는 것으로 나타나 있으나, 대칭키 보안 모듈(450)을 서버(400)에 설치하는 대신 게이트웨이(210,220)에 설치하여 노드(100)와 게이트웨이(210,220) 사이의 무선 구간의 암호화 수단으로 활용할 수도 있다.
비대칭키 보안 모듈(460)은 노드(100)로 전송할 데이터를 비대칭키 암호화 알고리즘(예, RSA)을 적용하여 암호화한다.
비대칭키 보안 모듈(460)은 메모리(420)에 저장된 암호화 프로그램의 형태로 제공될 수도 있고, 하드웨어의 형태로 제공될 수도 있고, 하드웨어와 소프트웨어가 통합된 형태로 제공될 수도 있다. 또한 비대칭키 보안 모듈(460)은 통신부(430), 대칭키 보안 모듈(450) 중에서 적어도 하나와 통합되어 원칩으로 패키징될 수도 있다.
한편 노드(100)로 전송할 데이터는, 도 3에 예시한 바와 같이, 먼저 비대칭키 방식으로 암호화된 후에 대칭키 보안 모듈(150)에서 대칭키 방식으로 다시 암호화될 수 있으며, 이렇게 하면 이중 암호화로 인해 보안성이 크게 강화될 수 있다.
다만, 반드시 모든 데이터를 이중으로 암호화하지 않아도 무방하다. 예를 들어 데이터의 종류 및 보안등급에 따라서는 데이터를 전혀 암호화하지 않고 통신부(430)를 거쳐 노드(100)로 바로 전송하거나 대칭키 보안 모듈(450) 또는 비대칭키 보안 모듈(460)을 통해 한 방식으로만 암호화한 후에 통신부(430)를 거쳐 노드(100)로 전송할 수도 있다.
또한 도 3에는 데이터를 먼저 비대칭키 방식으로 암호화한 후에 다시 대칭키 방식으로 암호화하는 것으로 나타나 있으나, 이와 반대로 데이터를 대칭키 방식으로 먼저 암호화한 후에 비대칭키 방식으로 암호화하는 것도 가능하다.
또한 본 발명의 실시예에서는, 보안성 강화를 위하여 서버(400)에 2가지 종류의 암호화 모듈(450,460)을 탑재하였으나 이에 한정되는 것은 아니므로 필요한 경우에는 다른 종류 보안방식을 추가로 적용함으로써 보안성을 보다 강화할 수도 있다.
키교환 방법 판단부(470)는 비대칭키 암호화에 사용될 공개키를 노드(100)와 교환하는 방법을 결정한다. 공개키를 교환하는 방법은, 앞서 설명한 바와 같이, 공개키 데이터를 다수 개로 분할하여 노드(100)로 전송하는 제1 방법과, 노드(100)의 LoRa 통신 클래스를 키 교환에 적합한 클래스로 일시 변경하는 제2 방법 중에서 선택될 수 있다.
키교환 방법 판단부(470)는 설정 조건을 충족한 경우 또는 노드(100)의 요청이 있는 경우에 제1 방법과 제2 방법 중에서 어떤 방법을 적용하여 공개키 교환을 수행할 것인지를 결정하고, 결정된 방법을 노드(100)로 전송할 수 있다.
LoRa 클래스 변경부(480)는 키교환 방법 판단부(470)에서 LoRa 통신 클래스를 변경하기로 결정한 경우에 노드(100)로 클래스 변경 지령을 전송한다. 만일 노드(100)로부터 클래스 변경 요청을 수신한 경우에는 클래스 변경 승인 또는 확인 신호를 노드(100)로 전송할 수 있다.
본 발명의 실시예에서는, LoRa 클래스 변경부(480)가 A클래스 또는 B클래스로 동작하는 노드(100)를 C클래스로 변경할 것을 요청할 수 있고, 대응하는 게이트웨이(210,220)에게도 클래스 변경을 통지할 수 있다.
키 분할 및 조립부(490)는 키교환 방법 판단부(470)에서 공개키 데이터를 분할 전송하기로 결정한 경우에 비대칭키 보안 모듈(460)에서 생성한 공개키 데이터를 설정된 개수로 분할할 수 있다.
또한 키 분할 및 조립부(490)는 다수 개로 분할된 공개키 데이터를 통신부(430)를 거쳐 노드(100)로 바로 전송할 수도 있고, 도 4에 예시한 바와 같이, 다수의 분할된 공개키 데이터를 각각 대칭키 방식으로 암호화한 후 다수의 서브 패킷을 생성하여 노드(100)로 전송할 수도 있다.
또한 키 분할 및 조립부(490)는 노드(100)로부터 수신한 다수의 분할된 공개키 데이터, 즉 다수의 서브 패킷으로부터 노드(100)의 공개키를 조립하고 무결성 체크 등을 수행할 수도 있다.
보안레벨 판단부(495)는 설정 조건을 충족한 경우에 노드(100)의 보안레벨을 변경할 수 있다. 보안레벨의 종류 및 변경 방법은 노드의 보안레벨 판단부(195)와 관련하여 설명한 바와 큰 차이가 없으므로 설명을 생략한다.
키교환 스케쥴러(498)는 다수의 노드(100)와 서버(400) 간에 원활한 키 교환을 위하여 공개키 각 노드(100)의 키 교환 시기를 결정하여 통지하는 역할을 한다. 예를 들어, 제1 노드는 To(기준시간) + 1분 후, 제2 노드는 To + 2분 후,,,,, 제n 노드는 To + n분 후의 식으로 키교환 스케줄을 설정하고 각 노드(100)로 통지하며, 특정 노드가 설정 기간 중에 키교환을 수행하지 못한 경우에는 전체 노드(100)의 키 교환 시기를 재조정하여 각 노드(100)로 통지하거나, 키 교환을 실패한 노드(100)의 키 교환 시기를 가장 마지막으로 설정하는 등 스케쥴 조정을 수행한다.
버스(402)는 서버(400)의 각 구성요소 간에 전기적 신호를 전송하는 것으로서, 케이블, 회로패턴 등일 수 있다.
서버(400)의 위 구성요소 중에서, 키 교환 방법 판단부(470), LoRa 클래스 변경부(480), 키 분할 및 조립부(490), 보안레벨 판단부(495), 키교환 스케쥴러(498) 등은 다양한 방식으로 구현될 수 있다.
예를 들어 이 중에서 적어도 하나 또는 일부의 기능은 메모리(420)에 저장되어 프로세서(410)에 의해 실행되는 컴퓨터 프로그램으로 제공될 수도 있다. 또한 이 중에서 적어도 하나 또는 일부의 기능은 하드웨어로 구현될 수도 있고, 소프트웨어와 하드웨어의 조합으로 구현될 수도 있다. 이때 하드웨어는 주문형 반도체(ASIC) 일 수도 있다.
이 밖에도 도면에는 나타내지 않았지만, 서버(400)는 다른 기기와의 통신을 위한 다양한 종류의 통신 인터페이스를 더 포함할 수도 있다. 또한 서버(400)는 관리자를 위한 입력수단 및/또는 디스플레이를 더 포함할 수 있다.
이하에서는 본 발명의 실시예에 따른 키 교환방법을 설명한다.
다만, 대칭키 암호화를 위하여 노드(100)와 서버(400) 간에 서로의 비밀키를 교환하는 프로세스는 종래의 LoRa 통신에서도 수행되고 있었으므로 본 명세서에서는 비대칭키 암호화를 위하여 서로의 공개키를 교환하는 방법에 대해서만 설명하기로 한다.
먼저 도 6의 흐름도를 참조하여, 본 발명의 제1 실시예에 따른 키 교환 방법을 설명한다.
LoRaWAN을 구성하는 다수의 노드(100)와 서버(400)는 설치된 이후에 각각 비대칭키 보안 모듈(160,460)을 이용하여 각자의 비대칭키(공개키/비밀키 쌍)를 생성해야 한다.
예를 들어 노드(100)의 프로세서(110)는 설치 후 전원이 켜지면 비대칭키 보안 모듈(160)로 비대칭키 생성을 요청하고, 서버(400)의 프로세서(110)는 사용자의 명령 입력 또는 설정 조건에 따라 비대칭키 보안 모듈(460)로 비대칭키 생성을 요청한다.
비대칭키 보안 모듈(160,460)에서 생성된 비대칭키(공개키/비밀키 쌍)는 비대칭키 보안 모듈(160,460)에 내장된 메모리에 저장되거나, 노드(100)와 서버(400)의 각 메모리(120,420)에 저장된다. (ST11, ST12)
이 상태에서, 노드(100)가 서버(400)로 연결(JOIN) 요청을 전송하거나 설정된 송신 주기에 데이터를 전송하면, 서버(400)는 해당 노드(100)가 공개키를 교환한 노드인지 여부를 먼저 확인한다. (ST13, ST14)
만일, 해당 노드(100)가 공개키를 교환한 노드가 아닌 것으로 확인되면, 서버(400)의 키분할 및 조립부(490)는, 도 4에 예시한 바와 같이, 서버(400)의 공개키 데이터를 설정된 크기 및 개수로 분할하여 다수의 서브 패킷을 생성한 후 통신부(430)와 게이트웨이(210,200)를 거쳐 노드(100)로 전송한다.
게이트웨이(210,200)는 노드(100)의 통신 클래스를 확인한 후, A또는 B클래스로 설정된 경우에는 설정된 수신기간이 도래하였을 때 분할된 다수의 서브 패킷을 전송할 수 있다. 이때 제1 수신기간에 일부의 서브 패킷을 전송하고, 일정 주기 이후에 도래하는 제2 수신기간에 나머지 서브 패킷의 일부 또는 전부를 전송할 수도 있다.
만일 노드(100)의 통신 클래스가 C클래스로 설정된 경우에는 해당 노드(100)에 대해 설정된 송신기간을 제외한 임의의 시간에 다수의 서브 패킷을 한꺼번에 전송할 수도 있다. (ST15)
노드(100)의 프로세서(110)는 서버(400)로부터 다수의 공개키 서브 패킷이 수신되면, 키 분할 및 조립부(190)를 통해 다수의 서브 패킷을 조립하여 서버(400)의 공개키를 생성하고 무결성 체크 등을 수행하여 키 수신이 완료되었는지 여부를 확인한다. (ST16)
노드(100)의 프로세서(110)는 서버(400)의 공개키가 제대로 수신되지 않은 것으로 확인되면, 서버(400)로 재전송을 요청할 수 있다. 이때 프로세서(110)는 리셋 명령을 실행하여 노드(100)를 재부팅 시킨 이후에 서버(400)로 공개키의 재전송을 요청할 수도 있다.
서버(400)는 노드(100)로부터 공개키 재전송 요청이 있는 경우에는 이에 응하여 공개키를 재전송할 수 있다. (ST17)
한편 노드(100)의 프로세서(110)는 서버(400)의 공개키가 제대로 수신된 것으로 확인되면, 키분할 및 조립부(190)를 통해 노드(100)의 공개키 데이터를 설정된 크기 및 개수로 분할하여 다수의 서브 패킷을 생성한 후 무선통신부(140)와 게이트웨이(210,200)를 거쳐 서버(400)로 전송한다.
이때 노드(100)는 자신에게 설정된 송신기간이 도래하였을 때 분할된 다수의 서브 패킷을 전송할 수 있다. 이 경우에도, 제1 송신기간에는 일부의 서브 패킷을 전송하고, 일정 주기 이후에 도래하는 제2 송신기간에는 나머지 서브 패킷의 일부 또는 전부를 전송할 수도 있다. (ST18)
서버(400)의 프로세서(410)는 노드(100)로부터 다수의 공개키 서브 패킷이 수신되면, 키 분할 및 조립부(490)를 통해 다수의 서브 패킷을 조립하여 노드(100)의 공개키를 생성하고 무결성 체크 등을 수행하여 키 수신이 완료되었는지 여부를 확인한다. (ST19)
서버(400)의 프로세서(410)는 노드(100)의 공개키가 제대로 수신되지 않은 것으로 확인되면, 노드(100)로 공개키의 재전송을 요청할 수 있다. 이때 프로세서(410)는 노드(100)의 재부팅 명령과 함께 공개키의 재전송을 요청할 수도 있다. (ST20)
노드(100)는 서버(400)로부터 공개키 재전송 요청이 있는 경우에는 이에 응하여 공개키를 재전송할 수 있다. 또한 서버(400)로부터 재부팅 명령을 수신한 경우에는 노드(100)를 재 부팅한 이후에 노드(100)의 공개키를 재전송할 수 있다. (ST21)
이상의 과정을 거쳐 노드(100)와 서버(400) 사이에 키 교환이 완료된 이후에는, 노드(100)와 서버(400)는 설정된 송수신 주기마다 데이터 및/또는 명령을 교환하거나, 데이터를 처리하거나, 대기모드로 전환할 수 있다.
또한 데이터 및/또는 명령을 전송할 때는 상대방의 공개키를 이용한 비대칭키 암호화를 적용하여 전송할 수도 있다. (ST22, ST23)
다음으로 도 7의 흐름도를 참조하여, 본 발명의 제2 실시예에 따른 키 교환 방법을 설명한다.
도 6의 ST11 내지 ST14단계와 마찬가지로, 노드(100)와 서버(400)가 각각의 비대칭키 보안 모듈(160,460)을 이용하여 비대칭키(공개키/비밀키 쌍)를 생성한 상태에서, 노드(100)가 서버(400)로 연결(JOIN) 요청을 전송하거나 설정된 송신 주기에 데이터를 전송하면, 서버(400)는 해당 노드(100)가 공개키를 교환한 노드인지 여부를 먼저 확인한다. (ST31, ST32, ST33, ST34)
만일, 해당 노드(100)가 공개키를 교환한 노드가 아닌 것으로 확인되면, 서버(400)의 LoRa 클래스 변경부(480)는 노드(100)로 LoRa 클래스의 변경을 요청한다. (ST35)
노드(100)의 LoRa 클래스 변경부(180)는 LoRa 클래스 변경 요청에 응하여 LoRa 클래스를 C클래스로 변경하고, 변경 정보를 게이트웨이(210,220)를 거쳐 서버(400)로 전송할 수 있다. (SST36)
서버(400)는 노드(100)의 LoRa 클래스가 C클래스로 변경된 것으로 확인되면, 서버(400)의 공개키를 게이트웨이(210,200)를 거쳐 노드(100)로 전송한다. 이때 노드(100)의 LoRa통신 클래스가 C클래스로 변경된 상태이므로 게이트웨이(210,220)는 해당 노드(100)에 대해 설정된 송신기간을 제외한 임의의 시간에 공개키를 전송할 수 있다. (ST37)
노드(100)의 프로세서(110)는 서버(400)로부터 공개키를 수신한 후 무결성 체크 등을 수행하여 키 수신이 완료되었는지 여부를 확인할 수 있다. (ST38)
노드(100)의 프로세서(110)는 서버(400)의 공개키가 제대로 수신되지 않은 것으로 확인되면, 서버(400)로 재전송을 요청할 수 있다. 이때 프로세서(110)는 리셋 명령을 실행하여 노드(100)를 재부팅 시킨 이후에 서버(400)로 공개키의 재전송을 요청할 수도 있다.
서버(400)는 노드(100)로부터 공개키 재전송 요청이 있는 경우에는 이에 응하여 공개키를 재전송할 수 있다. (ST39)
한편 노드(100)의 프로세서(110)는 서버(400)의 공개키가 제대로 수신된 것으로 확인되면, 노드(100)의 공개키를 게이트웨이(210,200)를 거쳐 서버(400)로 전송한다. 이때 노드(100)는 자신에게 설정된 송신기간이 도래하였을 때 공개키를 전송할 수 있다.
만일 설정된 송신기간 동안 한번에 공개키를 전송하기 어려운 경우에는, 앞서 설명한 바와 같이, 자신의 공개키 데이터를 설정된 크기 및 개수로 분할하여 다수의 서브 패킷을 생성한 후 순차적으로 송신할 수도 있다.
예를 들어 제1 송신기간에는 일부의 서브 패킷을 전송하고, 일정 주기 이후에 도래하는 제2 송신기간에는 나머지 서브 패킷의 일부 또는 전부를 전송할 수도 있다. (ST40)
서버(400)의 프로세서(410)는 노드(100)로부터 공개키를 수신한 후 무결성 체크 등을 수행하여 키 수신이 완료되었는지 여부를 확인한다. (ST41)
서버(400)의 프로세서(410)는 노드(100)의 공개키가 제대로 수신되지 않은 것으로 확인되면, 노드(100)로 재전송을 요청할 수 있다. 이때 프로세서(410)는 노드(100)의 재부팅 명령과 함께 공개키의 재전송을 요청할 수도 있다.
노드(100)는 서버(400)로부터 공개키 재전송 요청이 있는 경우에는 이에 응하여 공개키를 재전송할 수 있다. 특히 재부팅 명령을 수신한 경우에는 노드(100)를 재 부팅한 이후에 노드(100)의 공개키를 재전송할 수 있다. (ST42)
서버(400)의 프로세서(410)는 노드(100)와의 공개키 교환이 완료된 것으로 확인되면, 노드(100)에 대해서 LoRa 클래스를 본래 설정된 A클래스 또는 B 클래스로 복원시킬 것을 요청할 수 있다. (ST43)
노드(100)는 클래스 복원 명령에 응하여 LoRa 클래스를 본래의 클래스로 변경하고, 게이트웨이(210,220) 및 서버(400)로 클래스 복원 정보를 전송할 수 있다. (ST44)
이상의 과정을 거쳐 노드(100)와 서버(400) 사이에 키 교환이 완료되고, LoRa 클래스가 복원된 이후에는, 노드(100)와 서버(400)는 설정된 송수신 주기마다 데이터 및/또는 명령을 교환하거나, 데이터를 처리하거나, 대기모드로 전환할 수 있다. 또한 데이터 및/또는 명령을 전송할 때는 상대방의 공개키를 이용한 비대칭키 암호화를 적용하여 전송할 수도 있다. (ST45, ST46)
한편 도 7에서는, 서버(400)의 요청에 응하여 노드(100)가 LoRa 클래스를 C클래스로 변경하는 것으로 설명하였으나 반드시 이에 한정되는 것은 아니므로 노드(100)의 프로세서(110)가 키교환을 위하여 능동적으로 LoRa 클래스를 C클래스로 변경하는 것도 가능하다.
이하에서는 도 8을 참조하여 이에 대해 설명한다. 먼저, 노드(100)가 부팅되면 프로세서(110)는 노드(100)의 비대칭키가 생성 및 저장되어 있는지 여부를 먼저 확인한다. (ST51, ST52)
확인 결과 노드(100)의 비대칭키가 저장되어 있는 것으로 확인되면, 서버(400)와 공개키를 교환했는지 여부를 확인한다.
만일 노드(100)의 비대칭키가 없는 것으로 확인되면, 비대칭키 보안 모듈(160)을 통해 비대칭키(공개키/비밀키 쌍)를 생성한 후에 서버(400)와 공개키를 교환했는지 여부를 확인한다. (ST53, ST54)
이어서 노드(100)와 서버(400) 간에 공개키 교환이 수행된 것으로 확인되면, 설정된 송수신주기에 따라 대기 또는 데이터 송수신을 수행한다.
만일, 노드(100)와 서버(400) 간에 공개키 교환이 수행되지 않은 것으로 확인되면, 노드(100)의 LoRa 클래스 변경부(180)는 LoRa 클래스를 C클래스로 변경하고, 변경 정보를 게이트웨이(210,220)를 거쳐 서버(400)로 전송한다. (ST55)
이어서 C 클래스를 이용하여 노드(100)와 서버(400) 간에 공개키 교환을 수행하며, 이때 앞서 설명한 바와 같이, 노드(100)와 서버(400)는 상대방의 공개키가 수신되었는지 여부를 확인한 후 필요한 경우 재전송을 요청할 수 있다. 또한 노드(100)의 공개키는 노드(100)에 대해 설정된 송신주기에만 서버(400)로 전송할 수 있으므로 필요한 경우에는 공개키 데이터를 다수 개로 분할하여 순차적으로 전송할 수도 있다. (ST56)
또한 키교환이 완료되면, 노드(100)는 LoRa 클래스를 본래의 A 클래스 또는 B클래스로 변경하고 변경 정보를 게이트웨이(210,220)와 서버(400)로 전송할 수 있다. (ST57)
이상의 과정을 거쳐 노드(100)와 서버(400) 사이에 키 교환이 완료되면 노드(100)는 설정된 송수신 주기마다 서버(400)와 데이터 및/또는 명령을 교환하거나, 데이터를 처리하거나, 대기모드로 전환할 수 있다. (ST58)
다음으로 도 9를 참조하여 서버(400)가 다수의 노드(100)의 키 교환 시기를 설정하고 조정하는 방법을 설명한다.
먼저, LoRaWAN을 구성하는 다수의 노드(100)를 설치하고 부팅하면, 각 노드(100)는 LoRa 통신을 이용하여 서버(400)로 연결 요청을 전송하고, 서버(400)는 이에 응하여 연결 확인 신호를 전송한다.
또한 서버(400)는 LoRaWAN을 구성하는 모든 노드(100)가 연결되었는지 여부를 확인하고, 모든 노드(100)가 연결된 것이 확인되면 키 교환 스케쥴러(498)를 통해 공개키 교환 스케쥴을 설정하여 각 노드(100)로 전송한다. (ST71, ST72)
이어서 서버(400)는 설정된 스케줄에 따라 제1 노드(100)와의 키교환을 수행하고, 키 교환 성공 여부를 확인한다. (ST73, ST74)
만일 송수신 지연 등의 사유로 제1 노드(100)와의 키 교환이 성공하지 못한 경우에는, 키 교환 스케쥴러(498)는 설정된 스케쥴을 조정할 수 있다.
예를 들어 키 교환 대기 중인 다른 노드(100)의 키 교환 시기를 설정 시간만큼 연장하는 방식으로 스케쥴을 조정하고 이를 각 노드(100)로 통지할 수 있다. 이와 달리 키 교환을 실패한 노드(100)의 키 교환 시기를 현재 스케쥴의 가장 마지막 순서로 변경하는 방식으로 스케쥴을 조정할 수도 있다. (ST75)
만일 제1 노드(100)와의 키 교환이 성공한 경우에는, 서버(400)는 제1 노드(100)에 대해서 LoRa 통신의 정상 송수신 주기 및 시작 시점을 설정하고 해당 정보를 제1 노드(100)로 전송한다.
서버(400)는 모든 노드(100)와의 키 교환이 완료되는 시간을 고려하여 정상 송수신 주기의 시작시점을 임의로 산출하고, 해당 정보를 키교환을 완료한 노드(100)로 전송할 수 있다. 이와 달리 모든 노드(100)와의 키 교환이 완료된 이후에 서버(400)에서 송수신 주기의 시작시점을 각 노드(100)로 별도로 전송할 수도 있다. (ST76)
이어서 제1 노드(100)와의 키 교환이 완료되면, 서버(400)는 설정된 스케줄에 따라 다음 순서인 제2 노드(100)와의 키 교환을 수행한다. (ST77)
이상의 과정을 거쳐서 모든 노드(100)와 서버(400) 간에 공개키 교환이 완료된 이후에는, 각 노드(100)는 설정된 정상 송신주기가 도래하면 소정의 데이터를 서버(400)로 전송하고, 설정된 정상 수신주기가 도래하면 서버(400)로부터 소정의 데이터 및/또는 명령을 수신한다. (ST78)
한편 본 발명의 실시예에 따른 공개키 교환 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다.
이때, 컴퓨터로 판독 가능한 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 관련 통상의 기술자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터로 판독 가능한 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM), 램(RAM), 플래시 메모리 등에서 적어도 하나를 포함할 수 있다.
또한 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
또한 이상에서는 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 앞서 설명한 실시예에 한정되지 않고 구체적인 적용 과정에서 다양하게 변형 또는 수정되어 실시될 수 있다.
일 예로서, 도 1에 나타낸 서버(400)는 LoRaWAN 표준에 따라 네트워크 서버와 애플리케이션 서버로 구분되어 설치될 수 있다. 이 경우 도 5의 구성요소 중에서, 모니터링부(440), 대칭키 보안 모듈(450), 비대칭키 보안 모듈(460), 키 교환 방법 판단부(470), LoRa 클래스 변경부(480), 키 분할 및 조립부(490), 보안레벨 판단부(495), 키교환 스케쥴러(498) 등은 네트워크 서버와 애플리케이션 서버에 분산되어 설치될 수도 있다.
다른 예로서, 본 발명의 실시예에 따라 서버(400)에 설치되는 도 5의 구성요소 중에서 일부는 게이트웨이(210,220)에 통합되어 설치될 수도 있다.
이와 같이 본 발명은 실제 적용 과정에서 다양하게 변형 또는 수정되어 실시될 수 있으며, 이렇게 변형 또는 수정된 실시예도 후술하는 특허청구범위에 개시된 본 발명의 기술적 사상을 포함한다면 본 발명의 권리범위에 속함은 당연하다 할 것이다.
100: 단말
102: 버스
110: 프로세서
120: 메모리 130: 데이터 획득부 140: 무선통신부
150: 대칭키 보안 모듈 160: 비대칭키 보안 모듈
170: 키교환 방법 판단부 180: LoRa 클래스 변경부
190: 키 분할 및 조립부 195: 보안레벨 판단부
400: 서버 402: 버스 410: 프로세서
420: 메모리 430: 통신부 440: 모니터링부
450: 대칭키 보안 모듈 460: 비대칭키 보안 모듈
470: 키교환 방법 판단부 480: LoRa 클래스 변경부
490: 키 분할 및 조립부 495: 보안레벨 판단부
498: 키교환 스케쥴러
120: 메모리 130: 데이터 획득부 140: 무선통신부
150: 대칭키 보안 모듈 160: 비대칭키 보안 모듈
170: 키교환 방법 판단부 180: LoRa 클래스 변경부
190: 키 분할 및 조립부 195: 보안레벨 판단부
400: 서버 402: 버스 410: 프로세서
420: 메모리 430: 통신부 440: 모니터링부
450: 대칭키 보안 모듈 460: 비대칭키 보안 모듈
470: 키교환 방법 판단부 480: LoRa 클래스 변경부
490: 키 분할 및 조립부 495: 보안레벨 판단부
498: 키교환 스케쥴러
Claims (14)
- LoRaWAN에서 비대칭키 암호화 적용을 위하여 공개키를 교환하는 방법에 있어서,
제1 기기가 제2 기기로 제1 기기의 공개키를 전송하는 단계;
제2 기기가 제1 기기의 공개키를 저장하는 한편 제2 기기의 공개키 데이터를 다수개로 분할하여 제1 기기로 전송하는 단계;
제1 기기가 제2 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립하여 제2 기기의 공개키를 생성하고 저장하는 단계
를 포함하는 키 교환 방법. - 제1항에 있어서,
제1 기기가 제2 기기로 제1 기기의 공개키를 전송할 때는 제1 기기의 공개키를 다수개로 분할하여 전송하고,
제2 기기가 제1 기기의 공개키를 저장할 때는 제1 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립한 후에 저장하는 것을 특징으로 하는 키 교환 방법. - 제1항에 있어서,
제1 기기는 서버이고 제2 기기는 노드이고,
제1 기기는 제1 기기와 제2 기기 간에 설정된 LoRa 클래스가 C클래스로 변경된 이후에 제1 기기의 공개키를 제2 기기로 전송하는 것을 특징으로 하는 키 교환 방법. - LoRaWAN에서 비대칭키 암호화 적용을 위하여 공개키를 교환하는 방법에 있어서,
제1 기기와 제2 기기 간에 설정된 LoRa 클래스를 C클래스로 변경하는 단계;
제1 기기가 제2 기기로 제1 기기의 공개키를 전송하는 단계;
제2 기기가 제1 기기의 공개키를 저장하는 한편 제2 기기의 공개키를 제1 기기로 전송하는 단계;
제1 기기가 제2 기기의 공개키를 저장하는 단계;
제1 기기와 제2 기기 간에 설정된 LoRa 클래스를 원래의 클래스로 복원하는 단계
를 포함하는 키 교환 방법. - 제4항에 있어서,
제1 기기는 서버이고 제2 기기는 노드이며,
제2 기기가 제2 기기의 공개키를 제1 기기로 전송할 때는 제2 기기의 공개키 데이터를 다수개로 분할하여 제1 기기로 전송하고,
제1 기기가 제2 기기의 공개키를 저장할 때는 제2 기기로부터 수신한 다수의 분할된 공개키 데이터를 조립한 후에 저장하는 것을 특징으로 하는 키 교환 방법. - 제1항 내지 제5항 중 어느 한 항의 키 교환 방법을 구현하는 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체.
- LoRaWAN 환경에서 서버와 데이터를 송수신하는 노드에 있어서,
메모리에 저장된 프로그램을 실행하는 프로세서;
게이트웨이와 데이터를 송수신하는 무선통신부;
서버로 송신할 데이터를 비대칭키 방식으로 암호화하는 비대칭키 보안 모듈;
공개키 교환을 위하여 노드의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 서버로부터 수신한 다수의 분할된 공개키 데이터를 서버의 공개키로 조립하는 키 분할 및 조립부
를 포함하는 노드. - 제7항에 있어서,
설정된 LoRa 클래스를 C클래스로 변경하는 LoRa 클래스 변경부를 더 포함하며, LoRa 클래스가 C클래스로 변경된 이후에 노드의 공개키를 서버로 전송하거나 서버의 공개키를 수신하는 것을 특징으로 하는 노드. - 제7항에 있어서,
송신할 데이터의 종류 또는 데이터 변동률을 기준으로 비대칭키 암호화 적용 여부를 결정하는 보안레벨 판단부를 더 포함하는 것을 특징으로 하는 노드. - LoRaWAN 환경에서 노드와 데이터를 송수신하는 서버에 있어서,
메모리에 저장된 프로그램을 실행하는 프로세서;
게이트웨이와 데이터를 송수신하는 통신부;
노드로 송신할 데이터를 비대칭키 방식으로 암호화하는 비대칭키 보안 모듈;
공개키 교환을 위하여 노드에 대해 LoRa 클래스를 C클래스로 변경할 것을 요청하는 LoRa 클래스 변경부
을 포함하는 서버. - 제10항에 있어서,
공개키 교환을 위하여 서버의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 노드로부터 수신한 다수의 분할된 공개키 데이터를 노드의 공개키로 조립하는 키 분할 및 조립부를 더 포함하는 것을 특징으로 하는 서버. - 제10항에 있어서,
다수의 노드에 대한 키 교환 스케쥴을 설정하여 각 노드로 전송하고, 키 교환이 실패한 노드가 발생하면 키 교환을 대기하는 모든 노드의 키 교환 스케쥴을 조정하거나 키 교환이 실패한 노드의 키 교환 시기를 스케쥴의 마지막으로 변경하는 키 교환 스케쥴러를 더 포함하는 것을 특징으로 하는 서버. - 다수의 노드, 상기 다수의 노드와 데이터를 송수신하는 서버를 포함하는 LoRaWAN 시스템에 있어서,
상기 노드는,
서버로 송신할 데이터를 비대칭키 방식으로 암호화하는 제1 비대칭키 보안 모듈과,
공개키 교환을 위하여 노드의 공개키 데이터를 다수개로 분할하여 서버로 전송하거나, 서버로부터 수신한 다수의 분할된 공개키 데이터를 서버의 공개키로 조립하는 제1 키 분할 및 조립부를 포함하고,
상기 서버는,
노드로 송신할 데이터를 비대칭키 방식으로 암호화하는 제2 비대칭키 보안 모듈과,
공개키 교환을 위하여 서버의 공개키 데이터를 다수개로 분할하여 노드로 전송하거나, 노드로부터 수신한 다수의 분할된 공개키 데이터를 노드의 공개키로 조립하는 제2 키 분할 및 조립부
를 포함하는 LoRaWAN 시스템. - 제13항에 있어서,
상기 서버 또는 상기 노드는, 공개키 교환을 위하여 LoRa 클래스를 C클래스로 변경하는 LoRa 클래스 변경부를 더 포함하고, LoRa 클래스가 C클래스로 변경된 이후에 노드의 공개키를 서버로 전송하거나 서버의 공개키를 노드로 전송하는 것을 특징으로 하는 LoRaWAN 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200049681A KR102392703B1 (ko) | 2020-04-24 | 2020-04-24 | LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200049681A KR102392703B1 (ko) | 2020-04-24 | 2020-04-24 | LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210131523A true KR20210131523A (ko) | 2021-11-03 |
KR102392703B1 KR102392703B1 (ko) | 2022-04-29 |
Family
ID=78505212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200049681A KR102392703B1 (ko) | 2020-04-24 | 2020-04-24 | LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102392703B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170061131A1 (en) * | 2015-08-31 | 2017-03-02 | Cisco Technology, Inc. | Side-Channel Integrity Validation of Devices |
CN107071869A (zh) * | 2016-11-15 | 2017-08-18 | 国动物联网技术(上海)有限公司 | 兼容LoRaWAN Class A、Class B和手抄模式的多模终端及多模兼容方法 |
KR20180025771A (ko) * | 2016-09-01 | 2018-03-09 | 명지대학교 산학협력단 | 비밀분산을 이용한 보안 및 익명 서비스 제공 시스템 및 방법 |
KR20190036133A (ko) | 2017-09-27 | 2019-04-04 | 건국대학교 산학협력단 | IoT 환경의 LoRa 디바이스에서 선택적 암호화 적용을 통한 보안성 강화 방법 및 이를 수행하는 장치들 |
KR101993885B1 (ko) * | 2018-02-27 | 2019-06-27 | 채령 | 양자 보안칩 탑재 누수-원격검침 lpwan 서비스 제공 양자보안 통신시스템 |
-
2020
- 2020-04-24 KR KR1020200049681A patent/KR102392703B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170061131A1 (en) * | 2015-08-31 | 2017-03-02 | Cisco Technology, Inc. | Side-Channel Integrity Validation of Devices |
KR20180025771A (ko) * | 2016-09-01 | 2018-03-09 | 명지대학교 산학협력단 | 비밀분산을 이용한 보안 및 익명 서비스 제공 시스템 및 방법 |
CN107071869A (zh) * | 2016-11-15 | 2017-08-18 | 国动物联网技术(上海)有限公司 | 兼容LoRaWAN Class A、Class B和手抄模式的多模终端及多模兼容方法 |
KR20190036133A (ko) | 2017-09-27 | 2019-04-04 | 건국대학교 산학협력단 | IoT 환경의 LoRa 디바이스에서 선택적 암호화 적용을 통한 보안성 강화 방법 및 이를 수행하는 장치들 |
KR101993885B1 (ko) * | 2018-02-27 | 2019-06-27 | 채령 | 양자 보안칩 탑재 누수-원격검침 lpwan 서비스 제공 양자보안 통신시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR102392703B1 (ko) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6108317B2 (ja) | 通信ネットワークにおけるデータキャッシング | |
US20200025629A1 (en) | Systems, methods and devices for networking over a network | |
US9860129B2 (en) | Systems, methods and devices for networking over a network | |
US8364962B2 (en) | Communication data freshness confirmation system | |
US10326518B1 (en) | Repeater and node utilization | |
EP1873674A1 (en) | Terminal identification method, authentication method, authentication system, server, terminal, radio base station, program, and recording medium | |
CN113574965A (zh) | 通过高延迟通信系统进行回程的远程lpwan网关 | |
CN110999136B (zh) | 装置、用于测试装置的测量系统及其操作方法 | |
JP2018191284A (ja) | 複数のマネージャまたはアクセスポイントを有する無線ネットワークにおける独立したセキュリティ | |
GB2511872A (en) | Method, apparatus and computer program for transmitting and/or receiving signals | |
CN102668410A (zh) | 用于与通信卫星通信的终端 | |
CN102469553A (zh) | 一种无线传感器网络的接入方法及系统 | |
US11804972B2 (en) | Fluid meter communicating with an electromechanical valve | |
CA3136415C (en) | System combination of an asynchronous and a synchronous radio system | |
CN102196529A (zh) | 无线传感器网络的接入方法及系统 | |
EP3840454B1 (en) | Computer-implemented method and product for determining a gateway beacon transmission scheme in a low power wide area network | |
CN110244649A (zh) | Plc内部数据采集方法和系统 | |
KR101807429B1 (ko) | 스마트미터의 일괄 파라미터 설정을 위한 원격 관리 시스템 및 그 방법 | |
KR102392703B1 (ko) | LoRaWAN에서 비대칭키 암호화 적용을 위한 키 교환 방법 및 시스템 | |
WO2021198496A1 (en) | Acquiring current time in a network | |
Park et al. | An adaptive parameter setting algorithm to enhance performance in self-organizing bluetooth low energy networks | |
Anani et al. | Wireless Meter Bus: Secure Remote Metering within the IoT Smart Grid | |
Sujatha et al. | Security enhancement of joint procedure based on improved elliptic curve cryptography in LoRaWAN | |
KR20200123498A (ko) | 와이파이 다이렉트를 이용한 다중 iot 가전 등록 시스템 및 그의 다중 iot 가전 등록 방법 | |
KR20160028939A (ko) | 마스터 노드 및 마스터 노드의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |