KR102263053B1 - 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법 - Google Patents

근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법 Download PDF

Info

Publication number
KR102263053B1
KR102263053B1 KR1020190064029A KR20190064029A KR102263053B1 KR 102263053 B1 KR102263053 B1 KR 102263053B1 KR 1020190064029 A KR1020190064029 A KR 1020190064029A KR 20190064029 A KR20190064029 A KR 20190064029A KR 102263053 B1 KR102263053 B1 KR 102263053B1
Authority
KR
South Korea
Prior art keywords
synchronization
data
database
received
packet
Prior art date
Application number
KR1020190064029A
Other languages
English (en)
Other versions
KR20200137520A (ko
Inventor
문성욱
Original Assignee
문성욱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 문성욱 filed Critical 문성욱
Priority to KR1020190064029A priority Critical patent/KR102263053B1/ko
Publication of KR20200137520A publication Critical patent/KR20200137520A/ko
Application granted granted Critical
Publication of KR102263053B1 publication Critical patent/KR102263053B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터베이스 구조에 관한 것으로서, 보다 구체적으로는 모바일 기기에서 별도의 서버 경유 없이 인터넷(WAN) 환경에 의존적이지 않고 근거리 영역 네트워크(LAN) 환경 내부에서 기기 간에 데이터를 공유할 수 있도록 하는 데이터베이스 구조 및 이를 이용한 동기화 방법에 관한 것이다.

Description

근거리 영역 네트워크(LAN) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법{A database structure capable of synchronizing data between devices in a local area network environment and a data synchronization method using the same}
본 발명은 근거리 영역 네트워크(LAN) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법에 관한 것으로서, 보다 구체적으로는 인터넷(WAN) 망을 사용하지 않고 근거리 영역 네트워크(LAN) 환경 내부에서 기기 간에 데이터를 공유할 수 있도록 하는 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법에 관한 것이다.
전자, 통신 기술 등이 발전하면서 사용자는 네트워크를 통해 언제 어디서나 각종 정보나 파일 등의 데이터를 주고 받을 수 있게 되었으며, 최근에는 다양한 휴대용 전자기기가 대중화되어 사용자들은 네트워크를 통해 휴대용 전자기기로 각종 정보나 파일 등을 공유하고 있다.
네트워크를 통해 사용자 간에 데이터를 공유하는 방식의 예로, 컴퓨터와 컴퓨터를 직접 연결하여 서버 없이도 파일을 공유할 수 있는 기술로서 인터넷을 통해 다른 사용자들의 컴퓨터에 직접 접속하여 각종 정보와 파일을 공유할 수 있도록 해주는 인터넷 상에서의 데이터 교환방식 중 하나인 P2P(peer-to-peer) 서비스가 있다.
다른 예로는, 최근 휴대용 전자기기의 대중화에 따라 언제 어디서나 인터넷 접속이 가능하게 된 점을 활용하여 사진, 음악, 문서 파일 등을 포함하는 사용자 콘텐츠를 외부의 서버에 저장해두고 스마트폰이나 태블릿 pc 등을 포함한 어느 기기에서든 다운로드 하여 사용할 수 있도록 하는 클라우드(cloud) 서비스도 있다.
이러한 방식들은, 주로 인터넷(WAN) 망을 사용하는 데스크탑 컴퓨터 환경에서 돌아가는 기술이고, 휴대용 전자기기 간에 데이터 공유가 필요한 경우 종래에는 기기에서 서버를 경유하여 데이터를 기기 간에 공유하는 방식을 사용하였기 때문에, 별도의 서버가 구성되어야만 하므로 인터넷 접속 환경에 의존적인 문제가 있었다.
따라서, 휴대용 전자기기 간에 데이터를 공유함에 있어서, 인터넷(WAN) 망의 사용 없이 근거리 영역 네트워크(LAN) 내부에서 기기 간에 데이터 공유를 가능하게 하는 기술이 필요하다.
(특허문헌 1) KR10-2009-0044320 A
본 발명은 휴대용 전자기기 간에 데이터를 공유함에 있어서, 별도의 서버 경유 없이 근거리 통신망을 이용하여 기기 간에 데이터 공유를 가능하도록 하는 데이터베이스 구조를 제공하고자 한다.
본 발명에 따른 근거리 영역 네트워크(LAN) 내에 포함된 기기 간에 데이터 동기화를 가능하게 하는 데이터베이스 계층 구조는, 동일한 근거리 영역 네트워크(LAN) 내에 속한 기기 중 동기화가 필요한 기기를 탐색하고, 해당 기기와 데이터 동기화를 수행하는 네트워크 동기화 계층(Network Sync Layer); 상기 네트워크 동기화 계층(Network Sync Layer)의 상위 계층이며, 상기 데이터 동기화에 따라 데이터들을 처리하고 관리하는 가상 데이터베이스 계층(Virtual Database Layer); 상기 가상 데이터베이스 계층(Virtual Database Layer)의 상위 계층이며, 근접한 기기의 생성자 식별 값(cId)을 인증하고, 상기 인증을 통해 허용된 생성자 식별 값(cId)을 관리하는 데이터 하는 응용 계층(Application Layer); 을 포함하여 구성된다.
구체적으로, 상기 네트워크 동기화 계층(Network Sync Layer)은, UDP(User Datagram Protocol)를 사용하여 동일한 근거리 영역 네트워크(LAN)에 포함된 기기에 자신의 데이터베이스 해시 값을 브로드캐스팅하여 동기화가 필요한 기기를 찾는 브로드캐스트 서비스(Broadcast Service); TCP(Transmission Control Protocol)를 사용하여, 상기 브로드캐스트 서비스(Broadcast Service)에서 찾은 동기화가 필요한 기기와의 데이터 동기화를 수행하는 동기화 서비스(Sync Service); 상기 브로드캐스트 서비스(Broadcast Service) 및 동기화 서비스(Sync Service)에서 다른 기기와 데이터 동기화를 위해 필요한 데이터들을 제공하고, 저장하는 데이터베이스 엔진(Database Engine); 을 포함하여 구성되는 것을 특징으로 한다.
한편, 상기 데이터베이스 엔진(Database Engine)은, 데이터베이스 테이블(Database Table)을 포함하여 구성되고, 상기 데이터베이스 테이블(Database Table)은, 생성자 식별 값(cId), 데이터 레코드 식별 값(uId), 가상 테이블 식별 값(gId), 생성자 식별 증가 값(ts), 해시 값(hash)을 포함하여 구성되는 것을 특징으로 한다.
여기서, 동일한 생성자 식별 값(cId)에 대한 생성자 식별 증가 값(ts)은, 순차적으로 증가하는 것을 특징으로 하고, 상기 동일한 생성자 식별 값(cId)을 가지는 데이터들은, 상기 생성자 식별 증가 값(ts)에 따라 순차적으로 연결되는 것을 특징으로 한다.
한편, 상기 가상 데이터베이스 계층(Virtual Database Layer)은, SQL 데이터 조회 쿼리를 상기 네트워크 동기화 계층(Network Sync Layer)의 전용 데이터베이스 규격으로 변환해주는 쿼리 트랜스포머(Query Transformer); 동기화를 허용할 생성자 식별 값(cId)을 관리하고, 가상 테이블의 암호키 변경 이력을 관리하는 인증기(Authenticator); 데이터 동기화를 위한 내보내기/불러오기, 암호화 지원 및 서버 동기화를 위한 입출력 기능을 하는 데이터 트랜스포터(Data Transporter)를 포함하여 구성되는 것을 특징으로 한다.
구체적으로, 상기 쿼리 트랜스포머(Query Transformer)는, 테이블 생성(Create Table), 데이터 조회(Select), 데이터 생성(Insert), 데이터 수정(Update) 및 데이터 삭제(Delete)의 기능을 수행하는 것을 특징으로 한다.
한편, 상기 응용 계층(Application Layer)은, 동일한 근거리 네트워크 영역 내에 속한 기기를 탐색하고, 상기 탐색된 해당 기기의 생성자 식별 값(cId)을 인증하는 제1 통신 관리부(BLE Manager); 와이파이 액세스 포인트(Wifi Access Point) 없이, 근접한 기기의 동기화를 관리하는 제2 통신 관리부(Wifi Direct Manager); 를 포함하여 구성되는 것을 특징으로 한다.
본 발명에 따른 기기 간에 데이터를 동기화 하는 방법은, 데이터베이스에 포함된 전체 데이터에 대한 해시 값을 산출하는 데이터베이스 해시 단계; UDP(User Datagram Protocol)를 사용하여, 동일한 근거리 영역 네트워크(LAN)으로 상기 산출된 데이터베이스 해시 값을 포함하는 자신의 브로드캐스트 패킷을 브로드캐스팅하는 해시 값 브로드캐스트 단계; 상기 자신의 브로드캐스트 패킷을 수신한 다른 기기로부터 그 기기의 데이터베이스 해시 값을 포함하는 브로드캐스트 패킷이 수신되는지를 확인하는 브로드캐스트 패킷 수신 여부 확인 단계; 를 포함하여 구성되며, 상기 다른 기기로부터 브로드캐스트 패킷이 수신되면, 해당 기기와 동기화를 위한 수신(Host) 모드로 하여 수신 모드 동작을 수행하는 수신 모드 동작 단계; 를 동작하고, 상기 다른 기기로부터 브로드캐스트 패킷이 수신되지 않은 경우에는, 동기화를 요청하는 동기화 요청 패킷이 수신되는지를 확인하는 동기화 요청 패킷 수신 여부 확인 단계; 상기 동기화 요청 패킷의 수신 여부에 따라, 해당 기기와 동기화를 위한 송신(Client) 모드로 하여 송신 모드 동작을 수행하는 송신 모드 동작 단계; 를 동작하는 것으로 구성된다.
구체적으로, 상기 수신 모드 동작 단계는, 상기 수신한 브로드캐스트 패킷에 포함된 해당 기기의 데이터베이스 해시 값과 자신의 데이터베이스 해시 값의 동일 여부를 비교하여, 해당 기기와 동기화가 필요한지를 판단하는 동기화 필요 여부 판단 단계; 상기 해당 기기와 동기화가 필요한 것으로 판단되면, 동기화를 요청하는 동기화 요청 패킷을 전송하는 요청 패킷 전송 단계; 상기 전송한 동기화 요청 패킷에 대한 응답으로, 소정의 시간 내에 동기화 수락 패킷이 수신되는지의 따라 해당 기기와 동기화가 가능한지를 확인하는 수신 동기화 가능 여부 확인 단계; 소정의 시간 내에 상기 동기화 수락 패킷이 수신되면, 해당 기기와 동기화가 가능한 것으로 확인하고, 해당 기기와의 수신 동기화 동작을 수행하는 수신 동기화 동작 단계; 상기 해당 기기와의 수신 동기화를 종료하는 수신 모드 종료 단계; 를 포함하여 구성되는 것을 특징으로 한다.
또한, 상기 해당 기기와의 수신 동기화 동작을 종료한 후, 자신의 데이터베이스에 새로운 데이터가 추가되었는지의 여부를 확인하는 갱신 여부 확인 단계; 를 추가로 포함하며, 상기 갱신된 것으로 확인되면, 상기 데이터베이스 해시 단계로 회귀하여, 상기 새로운 데이터가 추가된 데이터베이스에 대한 해시 값을 산출하는 것을 특징으로 한다.
한편, 상기 송신 모드 동작 단계는, 다른 기기로부터 동기화 요청 패킷이 수신되면 동작하며, 상기 동기화 요청 패킷 수신 후, 소정의 시간 내에 해당 기기로부터 동기화 접속 패킷이 수신되는지에 따라 해당 기기와 동기화가 가능한지를 확인하는 송신 동기화 가능 여부 확인 단계; 상기 해당 기기와 동기화가 가능한 것으로 확인되면, 해당 기기로 동기화할 데이터를 송신하는 송신 동기화 동작을 수행하는 송신 동기화 동작 단계; 상기 해당 기기와의 송신 동기화를 종료하는 송신 모드 종료 단계; 를 포함하여 구성되는 것을 특징으로 한다.
한편, 상기 수신 동기화 가능 여부 확인 단계에서, 해당 기기로부터 소정의 시간 내에 동기화 수락 패킷이 수신되지 않으면, 해당 기기와 동기화가 불가능한 것으로 판단하고 상기 해시 값 브로드캐스트 단계로 회귀하는 것을 특징으로 하고, 상기 송신 동기화 가능 여부 확인 단계에서, 해당 기기로부터 소정의 시간 내에 동기화 접속 패킷이 수신되지 않으며, 해당 기기와 동기화가 불가능한 것으로 판단하고 상기 해시 값 브로드캐스트 단계로 회귀하는 것을 특징으로 한다.
한편, 상기 갱신 여부 확인 단계에서 상기 수신 동기화를 통해 자신의 데이터베이스에 새로운 데이터가 추가되지 않은 것으로 확인된 경우 또는 상기 송신 동기화 동작을 종료하는 송신 모드 종료 단계 후에는, 해당 기기를 제외한 다른 기기로부터의 브로드캐스트 패킷의 수신을 대기하는 상태로 전환하는 것을 특징으로 한다.
본 발명에 따른 데이터베이스 계층 구조를 포함하는 기기 간에 데이터를 동기화하는 방법은, 수신자(Host)가, TCP(Transmission Control Protocol)를 사용하여 송신자의 상기 브로드캐스트 서비스(Broadcast Service)로 포트번호를 전달하는 단계; 송신자(Client)가, 상기 전달 받은 포트번호를 이용하여 해당 수신자(Host)에게 접속하는 단계; 수신자(Host)는, 상기 송신자(Client)가 접속하면, 해당 송신자(Client)에게 RSA 공개키를 전달하는 단계; 송신자(Client)는, 임의의 AES 암호화키를 생성하고, 이를 상기 수신한 RSA 공개키로 암호화하여 수신자(Host)에게 전달하는 단계; 수신자(Host)가, 상기 전달 받은 암호화된 AES 암호화키를 RSA 비밀키로 복호화하여 AES 암호화키를 획득하고, 이를 이용하여 동기화 준비완료 메시지를 암호화하여 송신자에게 전달하는 단계; 송신자(Client)는, 상기 암호화된 동기화 준비완료 메시지를 수신하면, 적어도 하나 이상의 SyncHeader 데이터를 상기 수신자에게 전달하는 단계; 수신자(Host)는, 상기 데이터베이스 엔진(Database Engine)과 연동하여 상기 수신한 SyncHeader 데이터들 중 동기화가 필요한 SyncHeader 데이터만을 추출하고, 상기 추출한 SyncHeader 데이터를 동기화 요청 값으로 하여 송신자에게 전달하는 단계; 송신자(Client)는, 상기 데이터베이스 엔진(Database Engine)으로부터 상기 동기화 요청 값에 해당하는 SyncHeader 데이터인 SyncData를 읽어 들여 수신자에게 전달하는 단계; 수신자(Host)는, 상기 전달 받은 SyncHeader에 대응하는 SyncData를 상기 데이터베이스 엔진(Database Engine)에 저장하는 단계; 수신자(Host)는, 상기 송신자(Client)와의 연결을 종료하여 동기화를 종료하는 단계; 를 포함하여 구성된다.
본 발명은 인터넷(WAN) 망을 사용하지 않고, 별도의 서버를 경유할 필요가 없기 때문에 인터넷 환경에 의존적이지 않고 근거리 통신망(LAN)을 이용하여 기기 간에 데이터 공유가 가능하기 때문에, 시간과 장소 등 환경의 제약 없이 필요에 따라 언제 어디서나 데이터를 공유할 수 있다.
따라서, 데이터를 공유함에 있어서 편리함과 효율성을 향상시켜 줄 수 있다.
도 1은 본 발명의 전체적인 구성도를 나타내는 도면이다.
도 2는 본 발명에 따른 데이터베이스 구조를 개략적으로 나타내는 도면이다.
도 3은 본 발명에 따른 Data Table 데이터의 개념도를 개략적으로 나타내는 도면이다.
도 4는 본 발명에 따른 브로드캐스트 동작의 흐름도이다.
도 5는 본 발명에 따른 기기 간 동기화 동작을 구체적으로 보이는 흐름도이다.
도 6은 동일 cId 값을 가진 데이터 레코드 집합들의 연결 형태를 나타내는 도면이다.
도 7은 본 발명에 따른 데이터 검증 동작의 순서도이다.
도 8은 본 발명에 따른 Virtual Database Layer의 구조를 개략적으로 나타내는 도면이다.
도 9 내지 도 13은 Virtual Database Layer를 구성하는 Query Transformer가 구현되는 예시를 나타내는 도면이다.
도 14는 cId의 개념을 개략적으로 나타내는 도면이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면부호를 붙였다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예컨대, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
명세서 전체에서, 어떤 부분이 다른 부분과 “연결”되어 있다고 할 때, 이는 “직접적으로 연결”되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 “전기적으로 연결”되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 본원 명세서 전체에서 사용되는 정도의 용어 “~(하는) 단계” 또는 “~의 단계”는 “~를 위한 단계”를 의미하지 않는다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
이하, 도면을 참조하여 본 발명에 대하여 상세히 설명한다.
도 1을 참조하면, 본 발명은 별도의 서버를 경유하지 않고 기기 간에 데이터를 공유할 수 있다. 이를 구현할 수 있는 본 발명에 따른 데이터베이스 구조는, 네트워크 OSI 모델의 7 계층의 제5 계층(Session 계층)부터 제7 계층(Application 계층)에 해당하는 TCP/IP 모델의 4계층의 Application 계층을, 도 2에 보이는 바와 같이 크게 3개의 계층으로 분리하여 구성될 수 있다.
상기 3개의 계층은, 네트워크 동기화 계층(Network Sync Layer, 100), 가상 데이터베이스 계층(Virtual Database Layer, 200) 및 응용 계층(Application Layer, 300)로 구성되며, 이러한 각각의 계층은 독립적으로 동작하도록 구성될 수 있다.
본 발명에서 언급하는 전자기기는, 유/무선 네트워크에 연결될 수 있는 스마트 폰, 태블릿 PC, IoT 기기, 노트북, 컴퓨터 등을 포함하여, 소정의 데이터베이스를 구비하고 유무선 통신망을 통하여 다른 전자기기와 데이터 통신을 수행할 수 있는 기기를 포함한다.
1. 네트워크 동기화 계층(Network Sync Layer, 100)
1.1. 구조
네트워크 동기화 계층(Network Sync Layer)은, 근거리 영역 네트워크(LAN)에 속한 기기 중 동기화가 필요한 기기를 찾고, 해당 기기와 동기화 작업을 진행하는 계층으로서, 하기와 같은 세부 구성을 포함하여 구성될 수 있다.
가. 브로드캐스트 서비스(Broadcast Service, 110)
본 발명의 하나의 전자기기는, UDP(User Datagram Protocol)를 사용하여 동일한 근거리 영역 네트워크(LAN)에 속한 기기를 탐색하고, 자기 자신의 데이터베이스 해시 값을 브로드캐스팅하여 동기화가 필요한 기기를 찾는 동작을 수행할 수 있다. 즉, 자신이 접속한 네트워크의 모든 전자기기에 자기 자신의 데이터베이스 해시 값을 전송하여 동기화가 필요한 기기를 찾는 것이다.
이는 근거리 영역 내에 전방위로 데이터베이스 해시 값을 포함하는 브로드캐스트 패킷을 전송하여, 자신의 데이터베이스 해시 값을 다른 기기들에 제공하는 과정이다.
여기서, 상기 데이터베이스 해시 값은, 데이터 전체에 대한 해시 값으로서, 데이터베이스에 포함된 전체 데이터를 소정의 해시함수를 이용하여 해싱하여 획득할 수 있다. 따라서, 양 기기의 데이터베이스 해시 값이 동일하다면, 이는 양 기기가 보유하고 있는 데이터베이스의 데이터가 동일하다는 것을 의미하고, 양 기기의 데이터베이스 해시 값이 다를 경우에는 서로 다른 데이터를 가지고 있다는 것이기 때문에 양 기기 간의 데이터베이스를 동기화의 필요 여부를 알 수 있다.
즉, 제1 기기는, 상기 브로드캐스트 패킷을 브로드캐스팅함에 따라 이에 대한 응답으로 다른 기기들로부터 해당 기기의 데이터베이스 해시 값을 포함하는 브로드캐스트 패킷을 수신할 수 있으며, 각 기기는 수신한 데이터베이스 해시 값과 자신의 데이터베이스 해시 값을 비교하여, 동일하면 해당 기기로 동기화를 요청하지 않고, 다를 경우에는 동기화화가 필요한 것으로 판단하고, 해당 기기로 동기화를 요청하는 동기화 요청 패킷을 전송할 수 있다.
여기서, 상기 소정의 해시함수는, 예를 들어 SHA-2(Secure Algorithm 2)에 해당하는 SHA256을 사용하여 데이터베이스 해시 값을 획득할 수 있다.
나. 동기화 서비스(Sync Service, 120)
TCP(Transmission Control Protocol)를 사용하여, 상기 브로드캐스트 서비스(Broadcast Service, 110)에서 발견한 동기화가 필요한 기기와 동기화 작업을 수행할 수 있다.
이는 단방향 동기화를 하도록 설계되어, 수신자(Host)와 송신자(Client)의 두 가지 모드로 정의되어 어느 하나의 해당 모드에 따라 수신 동기화 혹은 송신 동기화 동작을 수행하여 상대방 기기와 데이터베이스에 대하여 동기화할 수 있다.
다. 데이터베이스 엔진(Database Engine, 130)
데이터베이스 엔진(Database Engine)은, 상기 브로드캐스트 서비스(Broadcast Service, 110)와 동기화 서비스(Sync Service, 120)에서 각 동작을 수행하는 데에 필요한 데이터를 제공 및 저장하는 구성으로, 이는 모바일용 데이터베이스인 SQLite3을 활용하여 구현할 수 있다.
데이터베이스 테이블 구조는, 하기와 같은 구성요소들을 포함할 수 있다.
1) eSync TABLE
o cId: creator Id(생성자 식별 값)
- UUID(범용고유식별자)로 생성된 식별 값으로서, 이는 기기에 앱(App) 최초 설치 시 또는 기기의 상태 변경 시 생성될 수 있다. cId는 유저 계정과 관계 없는 고유 값이며, 앱을 재 설치하거나 복원할 시 반드시 신규 발급된다. 따라서, 반드시 두 개 이상의 기기가 동일한 cId 값을 가질 수 없고, 유저에 종속되지 않기 때문에 유저 한 명의 계정에 여러 개의 cId 값을 보유하도록 구성된다. (도 14 참조)
즉, 한 명의 유저가 여러 개의 기기를 보유하고 있는 상태에서, 각 기기에 앱(App)을 최초 설치하면 각 기기마다 해당 cId가 생성되므로, 한 명의 유저는 각 기기 별로 해당 cId를 보유하게 되는 것이고, 이 후 상술한 경우들에 따라 최초 생성된 이후에도 각 기기 별로 cId가 새로운 cId가 생성될 수 있다.
<cId 소유권자별 분류 예>
1) 인터넷을 통한 인증을 하지 않은 단독 기기 유저(cId 값 한 개 보유)
2) 인터넷을 통한 인증을 한 유저(cId 한 개 이상 보유)
<기기에서 신규 cId 값을 접할 시의 인증 방식>
1) cId 값과 함께 보내온 유저 정보를 유저에게 UI로 보여주고 확인 받는 방법(P2P)
2) 서버에서 cId 값의 소유권자를 확인하고 유저 인증 하는 방법(인터넷)
<이미 인증된 유저의 신규 cId 값을 인증하는 방식>
1) cId 값과 함께 보내온 유저 정보를 기반으로 이미 등록된 공유 유저 목록에서 유저 키 인증(P2P)
2) 서로 공유한 적이 없는 새로운 유저인 경우 유저에게 UI로 확인
여기서, 상기 앱(App)이라 함은, 본 발명의 데이터베이스 구조를 적용할 수 있는 모바일 플랫폼의 응용 프로그램을 의미한다.
한편, 네트워크 동기화 계층(Network Sync Layer, 100)에서는, 동기화 중에 신규 생성자 식별 값(cId)을 발견하였을 때 그 허용 여부를 판단할 수 없으므로 상위 계층에서 판단해야 한다.
o tsSync
- 이는 생성자 식별 값(cId)으로 생성한 데이터의 가장 최근 값으로서, 레코드마다 증가하는 값이므로 레코드 개수를 의미할 수 있다.
o public key: 공개키를 의미한다.
o private key: 비밀키를 의미한다.
2) Data Table
도 3은 Data Table의 개념도를 나타내는 도면으로서, 각 구성요소에 대하여 설명한다. 도 3의 (a)는 Data Table 전체 구성을 나타내는 도면이고, (b)는 생성자 식별 값(cId)을 기준으로 나열한 상태를 나타내는 도면이고, (c)는 가상테이블 식별 값(gId)을 기준으로 나열한 상태를 나타내는 도면이다.
o uId: 데이터 레코드의 식별 값을 의미한다.
o gId: 가상 테이블의 식별 값으로, 상기 Network Sync Layer(100)에서는 존재하는 데이터를 그대로 전송하기 때문에 이 값을 무시한다. 따라서, 도 3의 (c)에 보이는 바와 같이, 동일한 gId에 대하여 후술하는 ts 및 cId 값과 관계 없는 상태임을 확인할 수 있다.
o cId: 생성자 식별 값을 의미한다. 상기 cId는 기기 별 고유 값으로서, 한 명의 유저가 여러 개의 기기를 소유한 경우 각 기기에 해당하는 cId가 존재하므로, 한 명에 유저가 여러 개의 cId를 소유할 수 있다.
참고로, 상기 cId를 소유한 cId 소유권자는, 인터넷을 통한 인증을 하지 않은 단독 기기 유저와 인터넷을 통한 인증을 한 유저로 분류될 수 있으며, 여기서 단독 기기 유저는 cId를 한 개 보유하고, 인증을 한 유저는 적어도 한 개 이상의 cId를 보유할 수 있다.
o data: 데이터 필드로서, JSON 규격으로 들어가며 암호화되어 있으며, 이는 상기 gId와 마찬가지로 데이터 전송에 사용하지 않는다.
o ts: 데이터 별 임의의 식별 값으로서, cId 생성자 별로 증가하여, cId가 생성됨에 따라 그에 대응하여 증가한다. 따라서, 도 3의 (b)에 보이는 바와 같이, Data Table 전체에 대하여 cId 기준으로 나열하였을 때, 그에 대응하여 ts 값이 순차적으로 할당된 상태임을 확인할 수 있다.
o hash: 상기 uId, gId, cId, data 및 ts 값들의 조합에 대한 해시 값으로서, 변조 방지용으로 사용된다.
o sign: 생성자의 “RSA 비밀키”로 서명한 값으로, 이 또한 변조 방지용으로 사용된다. 이 값은, 하기의 식(1)에 의해 산출할 수 있다.
식(1): Encrypt(private key, 현재 데이터의 hash + 이전 데이터의 hash)
이와 같은 Data table을 이루는 구성요소들을 이용하여, 상술한 소정의 해시함수를 이용하여 데이터 전체에 대한 해시 값인 데이터베이스 해시 값을 산출할 수 있으며, 이는 하기의 식(2)에 의해 산출될 수 있다.
식(2): 데이터베이스 해시 값(DB Hash) = Hash(cId1+tsSync1+cId2+tsSync2+…)
1.2. 동작 단계
본 발명에 따른 데이터베이스 구조를 통해 양 기기 간에 이루어지는 동기화 동작의 흐름을 설명하도록 한다.
가. 브로드캐스트 동작 방법
도 4는 브로드캐스트 동작이 이루어지는 순서도를 나타내는 도면으로서, 하기와 같이 구성될 수 있다.
1) 데이터베이스 해시 단계(A-S100)
데이터베이스 해시 단계는, 데이터 전체에 대한 해시 값을 산출하는 단계로서, 자신의 데이터베이스에 포함된 전체 데이터를 소정의 해시함수를 이용하여 산출할 수 있다. 이는 상기 브로드캐스트 서비스(Broadcast Service, 110)에서 수행할 수 있다.
상술한 바와 같이, 상기 소정의 해시함수는, 예를 들어 SHA-2(Secure Algorithm 2)에 해당하는 SHA256을 사용하여 데이터베이스 해시 값을 산출할 수 있다.
2) 해시 값 브로드캐스트 단계(A-S200)
상기 브로드캐스트 서비스(Broadcast Service, 110)에서, 상기 산출된 데이터베이스 해시 값을 동일한 근거리 영역 네트워크(LAN)에 전방위로 전파하는 단계로서, UDP(User Datagram Protocol)를 사용하여 동기화가 필요한 기기를 탐색할 수 있다.
이는, 상기 데이터베이스 해시 값, 포트 번호(Port Number)를 포함하는 브로드캐스트 패킷을 브로드캐스팅하여 근거리 영역 내에 속한 다른 기기들에게 자신의 데이터베이스 해시 값을 알려줄 수 있다.
3) 브로드캐스트 패킷 수신 여부 확인 단계(A-S300)
제1 기기는 상기 데이터베이스 해시 값을 브로드캐스팅함에 따라, 그에 대한 응답으로서 다른 기기(제2 기기)로부터 그 기기(제2 기기)에 해당하는 브로드캐스트 패킷이 수신되는지를 확인하는 단계이다.
위에서 상기 제2 기기는 제1 기기의 브로드캐스트 패킷에 대한 응답으로 제1 기기로 자신의 데이터베이스 해시 값을 포함하는 제2 기기의 브로드캐스트 패킷을 송신한다.
이에, 제1 기기가 다른 기기(제2 기기)로부터 브로드캐스트 패킷을 수신하였다면 자신을 수신(Host) 모드로 설정하고 수신 모드에 해당하는 동작을 수행(A-S400)하고, 수신하지 않았다면 다른 기기로부터 동기화를 요청하는 동기화 요청 패킷을 수신하였는지를 확인(A-S500)할 수 있다.
4) 수신 모드 동작 단계(A-S400)
제1 기기가 상기 브로드캐스트 패킷 수신 여부 확인 단계(A-S300)를 통해 다른 기기(제2 기기)로부터 브로드캐스트 패킷을 수신한 것으로 확인되면, 자신을 수신(Host) 모드로 하여 하기의 수신 모드 동작을 수행할 수 있다.
4-1) 동기화 필요 여부 판단단계(A-S410)
상기에서 설명한 바와 같이, 상기 브로드캐스트 서비스(Broadcast Service, 110)는 다른 기기로부터 해당 기기의 브로드캐스트 패킷을 수신하면, 그에 포함된 데이터베이스 해시 값과 자신의 데이터베이스 해시 값의 동일 여부를 비교하여, 상대방과 데이터베이스를 동기화할 필요가 있는지를 판단할 수 있다.
비교 결과, 자신의 데이터베이스 해시 값과 상대방의 데이터베이스 해시 값이 다르면, 서로 다른 데이터를 가지고 있는 것을 의미하므로 상대방과 데이터베이스를 동기화할 필요가 있는 것으로 판단할 수 있다.
만일, 자신의 데이터베이스 해시 값과 상대방의 데이터베이스 해시 값이 동일하면, 서로 같은 데이터를 가지고 있는 것을 의미하므로 상대방과 데이터베이스를 동기화할 필요가 없는 것으로 판단한다. 해당 상대방과 동기화할 필요가 없는 것으로 판단되면, 상기 해시 값 브로드캐스트 단계(A-S200)로 회귀하여 다른 동기화 대상 기기(제3 기기)를 찾고 그에 대한 응답으로서 제3 기기의 브로드캐스트 패킷이 수신되는지를 확인하는 A-S300 단계를 진행한다.
4-2) 요청 패킷 전송 단계(A-S420)
상기 동기화 필요 여부 판단단계(A-S410)에서 상대방 기기와의 데이터베이스 동기화가 필요한 것으로 판단되면, 해당 기기로 동기화를 요청하는 동기화 요청 패킷을 전송하는 단계이다. 이는 UDP(User Datagram Protocol)를 사용하여 상대방 기기로 동기화 요청 패킷을 전송할 수 있다.
이 때, 상기 수신한 브로드캐스트 패킷에 포함된 포트 번호(Port Number)를 이용하여 해당 기기로 동기화 요청 패킷을 전송할 수 있다.
4-3) 수신 동기화 가능 여부 확인 단계(A-S430)
상기 동기화 요청 패킷을 전송한 후, 해당 기기로부터 동기화 요청 패킷에 대한 응답으로 동기화 수락 패킷이 수신되는지에 따라 해당 기기와의 동기화 작업이 가능한지를 확인할 수 있다.
이는, 상기 동기화 요청 패킷을 전송한 후, 해당 기기로부터의 상기 동기화 수락 패킷의 수신을 소정의 시간 대기하고, 상기 소정의 시간 내에 동기화 수락 패킷을 전달 받으면, 해당 기기와의 동기화가 가능한 것으로 판단한다. 가능한 것으로 판단되면, 상대방 기기로 자신의 주소(IP address), 포트번호(Port Number)를 포함하는 정보를 전송하며, 이를 동기화 접속 패킷으로 지칭할 수 있다.
한편, 소정의 시간 내에 동기화 수락 패킷을 전달 받지 못하면 상대방 기기가 이미 다른 기기와 동기화 중인 것으로 보고, 상기 해시 값 브로드캐스트(A-S200) 단계로 회귀하여 자신의 브로드캐스트 패킷을 브로드캐스팅하여 동기화가 필요한 다른 기기를 탐색할 수 있다.
4-4) 수신 동기화 동작 단계(A-S440)
상대방 기기로 자신의 주소(IP address), 포트번호(Port Number)를 포함하는 동기화 접속 패킷을 전송함에 따라, 해당 기기로부터 동기화할 데이터를 수신할 수 있으며, 이러한 동작을 수신 동기화로 지칭한다.
이러한 동작은, 상기 동기화 서비스(Sync Service, 120)에서 수행한다.
4-5) 수신 모드 종료 단계(A-S450)
상대방 기기와의 수신 동기화를 진행하여 해당 기기의 데이터베이스와 자신의 데이터베이스를 동기화하는 작업이 완료되면, 이를 종료한다.
4-6) 갱신 여부 확인 단계(A-S460)
상기 수신 동기화를 종료한 후, 자신의 데이터베이스가 갱신되었는지의 여부를 확인하는 단계이다. 상기 데이터베이스의 갱신은 상기 수신 동기화를 통해 자신의 데이터베이스에 데이터가 추가/갱신된 것을 의미하므로, 자신의 데이터베이스에 새로운 데이터가 추가/갱신된 것으로 확인되면, 상기 데이터베이스 해시 단계(A-S100)로 회귀하여 새로운 데이터가 추가된 현재 상태에서 전체 데이트베이스에 대한 해시 값을 다시 산출할 수 있다.
한편, 데이터베이스 해시가 갱신되지 않았다면, 상기 수신 동기화를 통해 상대방 기기로부터 공유(추가)된 새로운 데이터가 없는 것이므로, 다른 기기로부터의 브로드캐스트 패킷의 수신을 대기하는 상태(A-S700)로 전환한다.
5) 동기화 요청 패킷 수신 여부 확인 단계(A-S500)
상기 브로드캐스트 패킷 수신 여부 확인 단계(A-S300)에서 다른 기기로부터 브로드캐스트 패킷이 수신되지 않으면, 다른 기기로부터 동기화를 요청하는 동기화 요청 패킷이 수신되는지의 여부를 확인한다.
여기서, 상기 동기화 요청 패킷도 수신되지 않은 것으로 확인되면, 상기 브로드캐스트 패킷의 수신을 대기하는 상태(A-S700)를 유지한다.
6) 송신 모드 동작 단계(A-S600)
상기 동기화 요청 패킷 수신 여부 확인 단계(A-S500)에서 다른 기기로부터 동기화를 요청하는 동기화 요청 패킷이 수신된 것으로 확인되면, 자신의 데이터베이스를 상대방에게 공유하기 위하여 하기의 동기화 작업을 수행하고, 이러한 동작을 송신 동기화로 지칭한다.
6-1) 송신 동기화 가능 여부 확인 단계(A-S610)
상기 수신한 동기화 요청 패킷에 해당하는 상대방 기기로부터 소정의 시간 내에 동기화 진행을 위한 동기화 접속 패킷이 수신되는지에 따라, 해당 기기와의 송신 동기화가 가능한지의 여부를 확인할 수 있다.
이는, 상기 동기화 요청 패킷을 수신한 후, 해당 기기로부터 소정의 시간 내에 동기화 접속 패킷이 수신되면, 상기 동기화 접속 패킷에 포함된 정보를 이용하여 해당 기기로의 송신 동기화가 가능한 것으로 판단한다.
만일, 소정의 시간 내에 상기 동기화 접속 패킷이 수신되지 않으면, 이를 상대방 기기가 이미 다른 기기와 동기화 중인 것으로 보고, 상기 해시 값 브로드캐스트(A-S200) 단계로 회귀하여 자신의 브로드캐스트 패킷을 브로드캐스팅하여 동기화가 필요한 다른 기기를 탐색할 수 있다.
여기서, 상기 동기화 접속 패킷은, 상대방 기기의 주소(IP address), 포트번호(Port Number)를 포함할 수 있다.
6-2) 송신 동기화 동작 단계(A-S620)
상기 상대방 기기로부터 동기화 접속 패킷을 수신하면, 이를 이용하여 해당 기기에 접속하여, 상대방 기기로 동기화할 데이터를 송신하는 송신 동기화를 수행할 수 있다. 이와 같은 송신 동기화 동작은 상기 동기화 서비스(Sync Service, 120)에서 수행한다.
6-3) 송신 모드 종료 단계(A-S630)
상기 상대방 기기로 동기화할 데이터를 송신하는 송신 동기화를 완료하면, 송신 모드를 종료한다. 상기 송신 모드를 종료하면, 다른 기기로부터의 브로드캐스트 패킷을 수신을 대기하는 상태(A-S700)로 전환한다.
한편, 상기 브로드캐스트 패킷의 수신을 대기하는 상태에서는, 상술한 브로드캐스트 패킷 수신 여부 확인 단계(A-S300)를 수행할 수 있다.
나. 동기화 동작 방법
상술한 바와 같이, 동기화 서비스(Sync Service, 120)는 수신자(Host) 모드 또는 송신자(Client) 모드로 설정되어, 해당 모드에 따른 동기화 작업을 수행한다.
도 5를 참조하여, 수신자(Host)와 송신자(Client)로 구분하여, 해당 모드에 따라 수행하는 동기화 동작 방법을 설명하도록 하며, 하기의 동기화 동작은 상기 동기화 서비스(Sync Service, 120)에서 수행한다.
<수신자(Host) 모드>
1) 동기화 요청에 대한 응답으로 상대방 기기(Client)로부터 동기화 수락 패킷을 수신하면, TCP를 사용하여 랜덤 포트를 열고, 열린 포트번호(Port Number)를 상대방의 “브로드캐스트 서비스(Broadcast Service, 110)”로 전달한다. (B-S100)
2) 상기 포트번호를 전달 받은 송신자(Client)의 접속이 들어오면, 해당 송신자(Client)에게 “RSA 공개키(Public key)”를 전달한다. (B-S200)
3) 송신자(Client)로부터 “AES 암호화키”를 수신하면(송신자는 상기 전달받은 “RSA 공개키(Public key)”로 암호화된 “AES 암호화키”를 송신), 이를 “RSA 비밀키(Private key)”로 복호화하여 “AES 암호화키”를 획득한다. (B-S300)
4) 상기 “AES 암호화키”로 동기화 준비 완료를 의미하는 메시지를 암호화하여 송신자(Client)에게 전달한다. (B-S400)
5) 송신자(Client)로부터 하나 이상의 “SyncHeader” 데이터를 수신한다. (B-S500)
6) “데이터베이스 엔진(Database Engine, 130)”과 연동하여, 상기 송신자(Client)로부터 수신한 “SyncHeader” 데이터들 중 동기화가 필요한 “SyncHeader” 만 남기고 나머지는 제외한다. (B-S600)
7) 상기 동기화가 필요한 “SyncHeader”를 동기화 요청 값(Request)으로 하여 송신자(Client)에게 전송한다. (B-S700)
8) 상기 동기화 요청 값에 대한 응답으로, 송신자(Client) 로부터 상기 “SyncHeader” 에 대응하는 “SyncData”를 수신한다. (B-S800)
9) 상기 수신한 “SyncData”를 “데이터베이스 엔진(Database Engine, 130)”에 저장한다. (B-S900)
10) 송신자(Client)에게 추가로 요청할 “SyncHeader”가 없을 경우, 송신자(Client)와의 통신 연결을 해제하여 동기화 작업을 종료한다. (B-S1000)
이후, 동기화를 완료한 “SyncHeader” 외에 송신자(Clinet)에게 추가로 동기화를 요청할 “SyncHeader”가 존재하면, B-S700 내지 B-S900을 반복 수행하여 수신 동기화를 완료할 수 있다.
<송신자(Client) 모드>
1) TCP를 사용하여, 동기화를 요청 받은 상대방 기기(Host)로부터 전달 받은 주소(IP Address)와 포트번호(Port Number)로 해당 수신자(Host)에게 접속한다. (C-S100)
2) 접속되면, 해당 수신자(Host)로부터 “RSA 공개키(Public key)”를 수신한다. (C-S200)
3) 임의의 “AES 암호화키”를 생성하고, 상기 생성된 “AES 암호화키”를 상기 수신자(Host)로부터 수신한 “RSA 공개키(Public key)”를 사용하여 암호화한 후 수신자(Host)에게 전송한다. (C-S300)
4) 수신자(Host)로부터 동기화 준비 완료를 의미하는 메시지를 수신한다. (C-S400)
5) 상기 동기화 준비 완료를 의미하는 메시지를 수신함에 따라, “데이터베이스 엔진(Database Engine, 130)”과 연동하여, 하나 이상의 “SyncHeader” 데이터를 수신자(Host)에게 일괄 전송한다. (C-S500)
6) 수신자(Host)로부터 동기화가 필요한 “SyncHeader”에 대한 동기화 요청 값(Request)을 수신하며, “SyncHeader” 동기화를 요청 받는다. (C-S600)
7) 상기 요청 받은 동기화 요청 값(Request)에 해당하는 “SyncData” 데이터를 “데이터베이스 엔진(Database Engine, 130)”에서 읽어온 후, 이를 수신자(Host)에게 전송한다. (C-S700)
8) 수신자(Host)에 의해 통신 연결이 해제되면, 해당 수신자(Host)와의 송신 동기화 작업을 종료한다. (C-S800)
이후, 수신자(Host)로부터 “SyncHeader” 에 대한 추가 동기화 요청을 수신하면, 상기 C-S600 및 S700을 반복 수행하여 추가적인 송신 동기화 작업을 수행할 수 있다.
여기서, 상기 “SyncHeader” 는, cId(생성자 식별 값), 공개키(Public key), tsSync를 포함하여 구성될 수 있다.
또한, 상기 “SyncData”는 Data table 레코드와 동일한 구조로 이루어진다.
다. 데이터 검증 방법
수신 동기화를 통해, 상대방(Clinet)으로부터 수신한 데이터를 검증하는 방법을 설명하도록 한다.
우선, 상기 수신한 데이터의 구조에 대하여 설명하면, 도 6에 나타낸 바와 같이, 해시, cId, ts, 본문 데이터, 서명(sign)가 하나로 집합된 형태로, 이를 데이터 레코드 집합으로 지칭할 수 있다.
도면에 보이는 바와 같이, device 1이라는 동일한 생성자 식별 값(cId)을 가지는 데이터 레코드 집합은 체인 형태로 연결되어 있다. 레코드 헤더 안에는 이전 데이터의 레코드 해시 값이 포함되며, 상기 레코드 해시 값은 레코드 헤더의 해시 값을 의미한다.
여기서, 최초로 데이터 생성 시, 이는 이전 레코드가 존재하지 않기 때문에 실제 데이터베이스 테이블에는 존재하지 않는 가상의 최초(Genesis) 레코드를 가정하며, 최초 레코드(Data#0, Genesis Record)의 해시 값은 생성자 식별 값(cId)의 해시 값으로 설정된다. 여기서, 최초의 데이터 생성 시 서명(sign) 값이 null인 이유는, 최초 레코드(Data#0, Genesis Record)는 데이터 검증을 위해 모든 기기에서 알 수 있어야 하므로 서명하지 않기 때문에 null 값을 가진다.
최초 레코드(Data#0, Genesis Record)와 연결된 각각의 레코드(Data#1,Data#2,…)는 레코드 헤더에 포함된 생성자 식별 값(cId)과 공개키(Public key) 값을 이용하여 하기의 식(3)에 의해 서명(sign)을 검증할 수 있다.
식(3): Decrypt(public key, 서명(sign)) = 해당 레코드 해시 값+이전 레코드 해시 값
이를 통해 모든 레코드의 무결성은 공개키(Public key)와 생성자 식별 값(cId)으로 검증이 가능하지만, 다른 기기로부터 최초로 생성자 식별 값(cId)과 공개키(Public key)를 제공 받는 경우라면, 해킹에 의해 공개키가 아닌 다른 키를 수신할 수가 있다. 이를 위한 대책으로서, 다른 기기로부터 최초로 생성자 식별 값(cId) 및 공개키(Public key)를 제공 받는 경우에는 허용된 생성자 식별 값(cId)을 검증하는 절차를 수행하여 보완하는 것으로 구성된다.
도 6 및 7을 참조하여, 본 발명에 따른 데이터의 무결성을 검증하는 방법을 설명하도록 한다.
1) 상대방 기기로부터 수신한 데이터들을 ts 값을 기준으로 정렬한다. (D-S100)
여기서, ts 값은 데이터 별 임의의 식별 값으로서, 0, 1, 2, 3… 등의 숫자로 이루어진다. 동일한 cId(생성자 식별 값)를 가지는 데이터는, ts 값을 기준으로 정렬하였을 때, 도 5에 보이는 바와 같이 첫 데이터 레코드 집합부터 마지막 데이터 레코드 집합까지 순차적으로 연결되어야 한다. 즉, device 1이라는 cId(생성자 식별 값)에 대하여 수신한 데이터에 대하여 ts 값을 기준으로 정렬하면, 0, 1, 2, 3, 4, 5..와 같이 정렬되어야 하는 것이다. 하지만, 0, 1, 2, 4, 5와 같이 3이 빠진 상태로 정렬되었다면, 이는 데이터 무결성의 검증을 실패(D-S900)한 것으로 판단할 수 있다.
2) ts 값을 기준으로 정렬한 데이터들에서, 첫번째 데이터의 ts 값이 상대방에게 요청하였던 ts 값과 동일한 값인지를 비교한다. (D-S200)
예를 들어, 상대방에게 데이터 동기화 요청 시, ts=10으로 요청하였다면, 상기 정렬된 데이터들에서 첫번째 데이터는 ts 값이 10이어야 한다. 만일, 요청하였던 ts 값과 첫번째로 수신한 데이터의 ts 값이 다르다면, 이는 데이터 무결성이 검증을 실패한 것으로 판단(D-S900)한다.
3) 해당 cId의 마지막 데이터 레코드 집합을 조회한다. (D-S300)
상기에서 설명한 바와 같이, 동일한 cId 값을 가지는 데이터는 연속된 ts 값을 가지므로 정렬된 ts 값 중 가장 큰 값을 구하여 그에 해당하는 데이터 레코드 집합을 조회하는 것으로, 해당 cId의 마지막 데이터 레코드 집합을 조회할 수 있다.
4) 상기 조회된 데이터 레코드 집합에 해당하는 본문 데이터의 해시 값을 산출한다. (D-S400)
5) 상기 산출된 해시 값과 해당 데이터 레코드 집합의 해시 값의 일치 여부를 비교한다. (D-S500)
비교 결과, 일치하면 후술하는 단계를 수행하고, 일치하지 않을 경우 데이터 무결성의 검증을 실패한 것으로 판단한다.
6) 해당 데이터 레코드 집합의 서명(sign) 값을 공개키(Public key)를 이용하여 복호화한다. (D-S600)
여기서, 상기 서명(sign) 값을 복호화화면, 해당 데이터 레코드의 해시 값과 이전 데이터 레코드의 해시 값을 가진다.
7) 상기 복호화 된 서명(sign) 값이, 해당 데이터 레코드의 해시 값 및 이전 데이터 레코드의 해시 값과 동일한지를 비교한다. (D-S700)
서명(sign) 값은 생성자만 암호화할 수 있으므로, 상기 복호화 한 서명(sign) 값이 상기 조회한 해당 데이터 레코드의 해시 값과 이전 데이터 레코드의 해시 값과 동일하면, 해당 데이터의 무결성 및 생성자 보증을 할 수 있다.
비교 결과, 동일하면 후술하는 단계를 수행하고, 동일하지 않을 경우 데이터 무결성의 검증을 실패한 것으로 판단(D-S900)한다.
8) 추가로 무결성 검증을 수행할 데이터가 존재하는지를 확인하여, 존재하는 경우 상기 D-S400으로 회귀하여 상술한 단계들을 수행하고, 존재하지 않으면 데이터 무결성의 검증을 완료한 것으로 판단한다. (D-S800)
2. 가상 데이터베이스 계층(Virtual Database Layer, 200)
가상 데이터베이스 계층(Virtual Database Layer)은, 상기 네트워크 동기화 계층(Network Sync Layer, 100)의 상위 계층이며 가상 데이터베이스(Virtual Database)로서, 구체적으로는 도 8에 보이는 바와 같이 쿼리 트랜스포머(Query Transformer, 210), 인증기(Authenticator, 220) 및 데이터 트랜스포터(Data Transporter, 230)를 포함하여 구성될 수 있다.
가. 쿼리 트랜스포머(Query Transformer, 210)
앱(App)에서 데이터베이스에 접근할 때, 일반적인 SQL 데이터 조회 쿼리(Query)를 상기 Network Sync Layer(100)의 전용 데이터베이스 규격으로 변환해주는 구성으로서, 이에 의해 앱(App)에서 모바일 데이터베이스 코드의 변경 없이 본 발명에 따른 데이터베이스 구조를 적용하는 것을 가능하게 한다. (도 8 참조)
여기서, 상기 앱(APP)은, 본 발명에 따른 데이터베이스 구조의 적용이 가능한 모바일 플랫폼의 응용 프로그램을 의미한다.
상기 쿼리 트랜스포머(Query Transformer)는, 테이블 생성(Create Table), 데이터 조회(Select), 데이터 생성(Insert), 데이터 수정(Update) 및 데이터 삭제(Delete)의 기능을 수행하도록 구성될 수 있다.
1) 테이블 생성(Create Table, 도 9 참조)
테이블 생성 쿼리가 실행되면, 실제로 테이블을 생성하지 않고 가상 테이블 정보에 신규 테이블 정보를 추가할 수 있다.
신규 테이블 정보를 추가할 시, 인덱싱(Indexing)할 필드 목록, 임의 생성된 gId(가상 테이블의 식별 값), 임의 생성된 데이터 암호화를 위한 키를 포함하는 부가 정보를 추가할 수 있다.
이와 같은 테이블 생성(Create Table) 기능은, 도 9에 나타낸 예시와 같이 구현될 수 있다.
2) 데이터 조회(Select, 도 10 참조)
이는 일반 데이터 조회 쿼리를 분석하여 해당 가상 테이블의 정보를 불러오기 위한 맞춤 쿼리로 재 작성된 후, 실제 데이터베이스에서 해당 데이터를 불러올 수 있다. 이 과정에서 암호화(Encryption)의 복호화(Decryption) 과정이 수행되며, 인덱싱이 필요한 경우 가상 테이블 정보에서 제공된 인덱스 정보로 조회할 수 있다.
이러한 데이터 조회(Select) 기능은, 도 10에 나타낸 예시와 같이 구현될 수 있다.
3) 데이터 생성(Insert, 도 11 참조)
이는 테이블 정보를 불러온 후, 해당 데이터를 암호화하여 데이터 레코드를 추가할 수 있다. 이러한 데이터 생성(Insert) 기능은, 도 11에 나타낸 예시와 같이 구현될 수 있다. (편의상 인덱싱용 데이터 처리 부분을 제외함)
4) 데이터 변경(Update, 도 12 참조)
상기 데이터 조회(Select)와 유사한 방법으로 업데이트(Update) 쿼리를 분석하여 실제 데이터베이스에서 해당하는 실제 레코드 정보를 불러온 후, 상기 불러온 레코드에 dFlag = 1, 즉 삭제 처리를 한다. 그 후, 데이터 생성(Insert)으로 변경사항이 적용된 데이터 레코드를 생성하는 것으로 이루어진다. 이 때, 변경사항이 적용된 데이터 레코드는, 이전 레코드의 데이터 레코드 식별 값(uId)을 포함한다. 이러한 데이터 변경(Update) 기능은 도 12에 나타낸 예시와 같이 구현될 수 있다. (편의상 인덱싱용 데이터 처리 부분은 제외함)
5) 데이터 삭제(Delete, 도 13 참조)
이는 해당 데이터가 삭제되었다는 정보를 생성하는 것으로 구현된다. 구체적으로, 데이터 조회(Select)와 유사한 방법으로 데이터 삭제(Delete) 쿼리를 분석하여 실제 데이터베이스에서 해당하는 실제 레코드 정보를 불러온 후, 상기 불러온 레코드에 dFlag = 1, 즉 삭제 처리를 한다. 그 후, 데이터 생성(Insert) 기능으로 삭제 사실을 생성하는 것으로 이루어진다. 이 때, 삭제 사실은, 이전 레코드의 데이터 레코드 값(uId)을 포함한다. 이러한 데이터 삭제(Delete) 기능은 도 13에 나타낸 예시와 같이 구현될 수 있다.
나. 인증기(Authenticator, 220)
동기화를 허용할 생성자 식별 값(cId)을 관리하고, 가상 테이블의 암호키 변경 이력을 관리하는 기능을 한다. 키 변경 시, 추가되는 신규 데이터는 변경된 키로 암호화되고, 기존 데이터는 그대로 사용되기 때문에 데이터의 해독을 위해서는 암호키의 변경 이력이 필요하다. 따라서, 인증기(Authenticator)는 가상 테이블의 암호키 변경 이력을 관리하여, 데이터 해독 시 해당 데이터의 암호화 버전에 따라 해당 키를 제공해줌으로써 해당 데이터의 해독이 가능하도록 한다.
다. 데이터 트랜스포터(Data Transporter, 230)
데이터 동기화를 위한 내보내기/불러오기 기능 및 암호화를 지원하는 기능을 수행하며, 서버 동기화용 입출력 기능을 한다.
3. 응용 계층(Application Layer, 300)
응용 계층(Application Layer)은, 서버 계정 관리부(Server Account Manager, 310), 제1 통신 관리부(BLE Manager, 320) 및 제2 통신 관리부(Wifi Direct Manager, 330)을 포함하여 구성될 수 있다.
가. 서버 계정 관리부(Server Account Manager, 미도시)
이는 서버와 동기화를 위한 계정을 관리하고, 서버에서 데이터 동기화를 하거나 허용된 cId(생성자 식별 값)의 목록을 업데이트하고 관리할 수 잇다.
여기서, 상기 서버는 인터넷 상의 온라인 서버를 의미하는 것으로서, 본원발명은 서버를 경유하지 않고 기기 간 자체에서 데이터 동기화가 가능하지만, 상기 서버 계정 관리부를 추가로 구성하여 필요에 따라 서버와 동기화하여 자신의 데이터를 서버에 백업하는 것이 가능할 수 있다.
나. 제1 통신 관리부(BLE Manager, 미도시)
동일한 근거리 네트워크 영역 내에 속한 기기를 탐색하고, 해당 생성자 식별 값(cId)을 인증하여, 해당 생성자 식별 값(cId)이 근거리 영역 내의 기기에 해당하는 것임을 보장할 수 있다.
다. 제2 통신 관리부(Wifi Direct Manager, 미도시)
Wifi Access Point 없이 근접한 기기의 동기화를 관리하는 기능을 하는 구성으로, Wifi망에 접속되지 않는 환경에서 직접 근접한 기기와 일대일로 동기화하기 위한 인터페이스이다.
한편, 본 발명의 기술적 사상은 상기 실시 예에 따라 구체적으로 기술되었으나, 상기 실시 예는 그 설명을 위한 것이며, 그 제한을 위한 것이 아님을 주지해야 한다. 또한, 본 발명의 기술분야에서 당업자는 본 발명의 기술 사상의 범위 내에서 다양한 실시 예가 가능함을 이해할 수 있을 것이다.
100: 네트워크 동기화 계층(Network Sync Layer)
110: 브로드캐스트 서비스(Broadcast Service)
120: 동기화 서비스(Sync Service)
130: 데이터베이스 엔진(Database Engine)
200: 가상 데이터베이스 계층(Virtual Database Layer)
210: 쿼리 트랜스포머(Query Transformer)
220: 인증기(Authenticator)
230: 데이터 트랜스포터(Data Transporter)
300: 응용 계층(Application Layer)

Claims (16)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 데이터베이스에 포함된 전체 데이터에 대한 해시 값을 산출하는 데이터베이스 해시 단계;
    UDP(User Datagram Protocol)를 사용하여, 동일한 근거리 영역 네트워크(LAN)으로 상기 산출된 데이터베이스 해시 값을 포함하는 자신의 브로드캐스트 패킷을 브로드캐스팅하는 해시 값 브로드캐스트 단계;
    상기 자신의 브로드캐스트 패킷을 수신한 다른 기기로부터 그 기기의 데이터베이스 해시 값을 포함하는 브로드캐스트 패킷이 수신되는지를 확인하는 브로드캐스트 패킷 수신 여부 확인 단계;
    를 포함하여 구성되며,
    상기 다른 기기로부터 브로드캐스트 패킷이 수신되면, 해당 기기와 동기화를 위한 수신(Host) 모드로 하여 수신 모드 동작을 수행하는 수신 모드 동작 단계; 를 동작하고,
    상기 다른 기기로부터 브로드캐스트 패킷이 수신되지 않은 경우에는, 동기화를 요청하는 동기화 요청 패킷이 수신되는지를 확인하는 동기화 요청 패킷 수신 여부 확인 단계;
    상기 동기화 요청 패킷의 수신 여부에 따라, 해당 기기와 동기화를 위한 송신(Client) 모드로 하여 송신 모드 동작을 수행하는 송신 모드 동작 단계;
    를 동작하는 것으로 구성되는 기기 간 데이터 동기화 방법.
  9. 제8항에 있어서,
    상기 수신 모드 동작 단계는,
    상기 수신한 브로드캐스트 패킷에 포함된 해당 기기의 데이터베이스 해시 값과 자신의 데이터베이스 해시 값의 동일 여부를 비교하여, 해당 기기와 동기화가 필요한지를 판단하는 동기화 필요 여부 판단 단계;
    상기 해당 기기와 동기화가 필요한 것으로 판단되면, 동기화를 요청하는 동기화 요청 패킷을 전송하는 요청 패킷 전송 단계;
    상기 전송한 동기화 요청 패킷에 대한 응답으로, 소정의 시간 내에 동기화 수락 패킷이 수신되는지의 따라 해당 기기와 동기화가 가능한지를 확인하는 수신 동기화 가능 여부 확인 단계;
    소정의 시간 내에 상기 동기화 수락 패킷이 수신되면, 해당 기기와 동기화가 가능한 것으로 확인하고, 해당 기기와의 수신 동기화 동작을 수행하는 수신 동기화 동작 단계;
    상기 해당 기기와의 수신 동기화를 종료하는 수신 모드 종료 단계;
    를 포함하여 구성되는 것을 특징으로 하는 기기 간 데이터 동기화 방법.
  10. 제9항에 있어서,
    상기 해당 기기와의 수신 동기화 동작을 종료한 후, 자신의 데이터베이스에 새로운 데이터가 추가되었는지의 여부를 확인하는 갱신 여부 확인 단계;
    를 추가로 포함하며,
    상기 갱신된 것으로 확인되면, 상기 데이터베이스 해시 단계로 회귀하여, 상기 새로운 데이터가 추가된 데이터베이스에 대한 해시 값을 산출하는 것을 특징으로 하는 기기 간 데이터 동기화 방법.
  11. 제10항에 있어서,
    상기 송신 모드 동작 단계는, 다른 기기로부터 동기화 요청 패킷이 수신되면 동작하며,
    상기 동기화 요청 패킷 수신 후, 소정의 시간 내에 해당 기기로부터 동기화 접속 패킷이 수신되는지에 따라 해당 기기와 동기화가 가능한지를 확인하는 송신 동기화 가능 여부 확인 단계;
    상기 해당 기기와 동기화가 가능한 것으로 확인되면, 해당 기기로 동기화할 데이터를 송신하는 송신 동기화 동작을 수행하는 송신 동기화 동작 단계;
    상기 해당 기기와의 송신 동기화를 종료하는 송신 모드 종료 단계;
    를 포함하여 구성되는 것을 특징으로 하는 기기 간 데이터 동기화 방법.
  12. 제11항에 있어서,
    상기 수신 동기화 가능 여부 확인 단계에서, 해당 기기로부터 소정의 시간 내에 동기화 수락 패킷이 수신되지 않으면, 해당 기기와 동기화가 불가능한 것으로 판단하고 상기 해시 값 브로드캐스트 단계로 회귀하는 것을 특징으로 하고,
    상기 송신 동기화 가능 여부 확인 단계에서, 해당 기기로부터 소정의 시간 내에 동기화 접속 패킷이 수신되지 않으며, 해당 기기와 동기화가 불가능한 것으로 판단하고 상기 해시 값 브로드캐스트 단계로 회귀하는 것을 특징으로 하는 기기 간 데이터 동기화 방법.
  13. 제12항에 있어서,
    상기 갱신 여부 확인 단계에서 상기 수신 동기화를 통해 자신의 데이터베이스에 새로운 데이터가 추가되지 않은 것으로 확인된 경우 또는 상기 송신 동기화 동작을 종료하는 송신 모드 종료 단계 후에는, 해당 기기를 제외한 다른 기기로부터의 브로드캐스트 패킷의 수신을 대기하는 상태로 전환하는 것을 특징으로 하는 기기 간 데이터 동기화 방법.
  14. 삭제
  15. 삭제
  16. 제8항 내지 제13항 중 어느 한 항에 따른 기기 간 데이터 동기화 방법을 수행하는 컴퓨터 프로그램을 포함하는 전자기기.
KR1020190064029A 2019-05-30 2019-05-30 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법 KR102263053B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190064029A KR102263053B1 (ko) 2019-05-30 2019-05-30 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190064029A KR102263053B1 (ko) 2019-05-30 2019-05-30 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법

Publications (2)

Publication Number Publication Date
KR20200137520A KR20200137520A (ko) 2020-12-09
KR102263053B1 true KR102263053B1 (ko) 2021-06-10

Family

ID=73786610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190064029A KR102263053B1 (ko) 2019-05-30 2019-05-30 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법

Country Status (1)

Country Link
KR (1) KR102263053B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102463665B1 (ko) * 2021-02-18 2022-11-09 (주)알투비솔루션 원격 dbms 테이블간 고성능 테이블 데이터 정합성 검증 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10111825A (ja) * 1996-10-04 1998-04-28 Kokusai Denshin Denwa Co Ltd <Kdd> 複数データベース一致化更新方法および装置
CN101409614B (zh) * 2007-10-12 2011-04-13 华为技术有限公司 一种数据同步方法、系统和设备
KR101179554B1 (ko) * 2009-03-26 2012-09-05 한국전자통신연구원 모바일 클라우드 플랫폼을 구비한 모바일 단말 장치
US9917881B2 (en) * 2012-10-22 2018-03-13 Samsung Electronics Co., Ltd. Apparatus, system, and method for transferring data across mobile terminals paired using near field communication (NFC)
KR102226836B1 (ko) * 2013-10-14 2021-03-11 삼성전자주식회사 근거리 통신을 이용하여 컨텐츠를 공유하는 단말기 및 방법

Also Published As

Publication number Publication date
KR20200137520A (ko) 2020-12-09

Similar Documents

Publication Publication Date Title
US11196573B2 (en) Secure de-centralized domain name system
CN106254324B (zh) 一种存储文件的加密方法及装置
US7443986B2 (en) Key allocating method and key allocation system for encrypted communication
KR102134302B1 (ko) 무선 네트워크 접속 방법 및 장치, 및 저장 매체
TWI475860B (zh) 可攜式裝置關聯性
CN110545190B (zh) 一种签名处理的方法、相关装置以及设备
EP2657871B1 (en) Secure configuration of mobile application
CN101605137B (zh) 安全分布式文件系统
RU2512118C2 (ru) Протокол привязки устройства к станции
US8572387B2 (en) Authentication of a peer in a peer-to-peer network
US20120254622A1 (en) Secure Access to Electronic Devices
WO2019117889A1 (en) Mechanism for achieving mutual identity verification via one-way application-device channels
CN104506527B (zh) 多维信息指针平台及其数据访问方法
US11367065B1 (en) Distributed ledger system for electronic transactions
US8638932B2 (en) Security method and system and computer-readable medium storing computer program for executing the security method
RU2685975C2 (ru) Обеспечение безопасности связи с расширенными мультимедийными платформами
US10560528B2 (en) Cloud-based management of access to a data storage system on a local network
CN115001841A (zh) 一种身份认证方法、装置及存储介质
JP2011176435A (ja) 秘密鍵共有システム、方法、データ処理装置、管理サーバ、及びプログラム
KR101952329B1 (ko) 블록체인 기반 암호화폐의 트랜잭션에 이용되는 주소 정보 생성 방법, 전자 장치 및 컴퓨터 판독 가능한 기록 매체
US20110010544A1 (en) Process distribution system, authentication server, distribution server, and process distribution method
WO2023221591A1 (zh) 一种数据传输的方法、相关装置、设备以及存储介质
EP4096160A1 (en) Shared secret implementation of proxied cryptographic keys
EP3282639B1 (en) Method for operating server and client, server, and client apparatus
KR102263053B1 (ko) 근거리 영역 네트워크(lan) 환경에서 기기 간 데이터 동기화가 가능한 데이터베이스 구조 및 이를 이용한 데이터 동기화 방법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right