KR102134848B1 - Method for encrypting data using individual encryption key - Google Patents

Method for encrypting data using individual encryption key Download PDF

Info

Publication number
KR102134848B1
KR102134848B1 KR1020190105240A KR20190105240A KR102134848B1 KR 102134848 B1 KR102134848 B1 KR 102134848B1 KR 1020190105240 A KR1020190105240 A KR 1020190105240A KR 20190105240 A KR20190105240 A KR 20190105240A KR 102134848 B1 KR102134848 B1 KR 102134848B1
Authority
KR
South Korea
Prior art keywords
data
server
divided
user terminal
information
Prior art date
Application number
KR1020190105240A
Other languages
Korean (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 KR1020190105240A priority Critical patent/KR102134848B1/en
Application granted granted Critical
Publication of KR102134848B1 publication Critical patent/KR102134848B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key 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 key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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/088Usage 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • H04L2209/38
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

A data security method is provided. According to the present invention, the data security method comprises the steps of: obtaining, by a server, first data from a first user terminal; dividing, by the server, the obtained first data; shuffling, by the server, the divided data in a preset method; obtaining, by the server, second data including information on the division of the obtained first data and information on the preset method; encrypting, by the server, at least one of third data of the divided first data and the second data using a first encryption key; transmitting, by the server, the encrypted data to the first user terminal; and transmitting, by the server, the remaining divided data other than the third data among the divided first data to an external server.

Description

개별 암호키를 이용한 데이터 암호화 방법{Method for encrypting data using individual encryption key}Method for encrypting data using individual encryption key}

본 발명은 데이터 보안 방법 및 시스템에 관한 것이다. The present invention relates to a data security method and system.

데이터 보안에 대한 중요성은 날로 증가하고 있다. 더 강한 데이터 보안 방법과 관련된 연구가 진행되고 있으나, 강력한 보안 방법일수록 복잡한 암호화 알고리즘을 적용하여 암호화 및 복호화에 오랜 시간이 걸리는 단점이 존재한다. 이러한 단점은 암호화 하고자 하는 데이터의 크기가 커질수록 더욱 두드러진다. 즉, 크기가 큰 데이터를 복잡한 알고리즘으로 암호화 하면 데이터 처리 속도가 매우 낮아지는 문제점이 존재한다. 따라서, 효율적인 데이터 보안 방법의 필요성이 대두되고 있다.The importance of data security is increasing day by day. Although studies related to stronger data security methods are being conducted, the stronger security method has the disadvantage that it takes a long time to encrypt and decrypt by applying a complex encryption algorithm. This disadvantage becomes more pronounced as the size of the data to be encrypted increases. That is, there is a problem in that data processing speed is very low when large data is encrypted with a complex algorithm. Therefore, there is a need for an efficient data security method.

한편, 블록체인(Block Chain)은 네트워크에 참여하는 모든 사용자가 관리 대상이 되는 모든 데이터를 분산하여 저장하는 데이터 분산처리기술을 말한다. 거래 정보가 담긴 원장(原帳)을 거래 주체나 특정 기관에서 보유하는 것이 아니라 네트워크 참여자 모두가 나누어 가지는 기술이라는 점에서 '분산원장기술(DLT:Distributed Ledger Technology)' 또는 '공공거래장부'라고도 한다. 블록체인은 거래 내용이 담긴 블록(Block)을 사슬처럼 연결(chain)한 것이라 하여 붙여진 명칭이다.On the other hand, Block Chain (Block Chain) refers to a data distribution processing technology that distributes and stores all data subject to management by all users participating in the network. It is also called'Distributed Ledger Technology' (DLT) or'Public Ledger' in that it is a technology shared by all network participants rather than being held by a trading entity or a specific institution. . Blockchain is a name given as a block that contains the contents of a transaction, which is a chain.

블록체인은 금융기관에서 모든 거래를 담보하고 관리하는 기존의 금융 시스템에서 벗어나 P2P(Peer to Peer;개인 대 개인) 거래를 지향하는, 탈(脫)중앙화를 핵심 개념으로 한다. P2P란 서버나 클라이언트 없이 개인 컴퓨터 사이를 연결하는 통신망을 말하며, 연결된 각각의 컴퓨터가 서버이자 클라이언트 역할을 하며 정보를 공유하는 방식이다.Blockchain takes the core concept of decentralization, which aims for peer-to-peer (P2P) transactions, away from the existing financial system that secures and manages all transactions at financial institutions. P2P is a communication network that connects between personal computers without a server or client, and each connected computer acts as a server and client and shares information.

블록체인은 중앙 시스템이 운영하는 것이 아닌 분산된 컴퓨팅 자원을 이용하므로 탈중앙화의 특징을 갖는다. 또한 블록체인은 네트워크 상에서 발생하는 모든 거래에 대하여 투명하게 관리할 수 있다. 모든 거래는 거래 발생 시점부터 추적이 가능하고, 누구나 공개된 거래 기록에 접근할 수 있으며 거래의 양성화와 규제 비용을 절감하는 효과를 얻을 수 있다. 또한 블록체인은 위변조가 불가능하다는 특징이 있다. 블록체인은 이전 블록의 정보를 이용하여 블록을 생성한다. 블록은 사슬처럼 모두 연결되어 있는 구조이기 때문에 블록의 특정 거래를 조작하려면 이후에 생성된 모든 블록의 정보도 변경해야 한다. 블록체인 네트워크의 51%를 동시에 해킹하는 일은 사실상 불가능하기 때문에 위변조에 대한 가장 신뢰있는 기술이라고 평가받고 있다. 또한 블록체인은 확장성의 특징을 갖는다. 대부분의 블록체인 기술은 오픈소스 소프트웨어로 높은 확장성을 가지고 있다.Blockchain has the feature of decentralization because it uses distributed computing resources rather than a central system. In addition, the blockchain can be transparently managed for all transactions occurring on the network. All transactions can be tracked from the time the transaction occurs, anyone can access the public transaction records, and the effect of training and reducing regulatory costs can be obtained. In addition, blockchain has a feature that it cannot be forged. Blockchain creates blocks using information from previous blocks. Blocks are structures that are all connected like a chain, so if you want to manipulate a specific transaction of a block, you must also change the information of all the blocks created later. Since it is virtually impossible to hack 51% of the blockchain network at the same time, it is regarded as the most reliable technology for forgery and alteration. Also, the blockchain has the characteristics of scalability. Most blockchain technology is open source software and has high scalability.

등록특허공보 제10-1252549호, 2010.05.31Registered Patent Publication No. 10-1252549, May 31, 2010

본 발명이 해결하고자 하는 과제는 데이터 보안을 위한 방법 및 시스템을 제공하는 것이다.The problem to be solved by the present invention is to provide a method and system for data security.

본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the following description.

상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 데이터 보안 방법은, 서버가, 제1 사용자 단말로부터 제1 데이터를 획득하는 단계; 상기 서버가, 상기 획득된 제1 데이터를 분할하는 단계; 상기 서버가, 상기 분할된 데이터를 기 설정된 방법으로 셔플하는 단계; 상기 서버가, 상기 획득된 제1 데이터 분할에 대한 정보 및 상기 기 설정된 방법에 관한 정보를 포함하는 제2 데이터를 획득하는 단계; 상기 서버가, 상기 분할된 제1 데이터 중 적어도 하나의 제3 데이터 및 상기 제2 데이터를 제1 암호키를 이용하여 암호화 하는 단계; 상기 서버는, 상기 제1 사용자 단말로 상기 암호화된 데이터를 전송하는 단계; 및상기 서버가, 상기 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 외부 서버로 전송하는 단계;를 포함한다.A data security method according to an aspect of the present invention for solving the above-described problems, the server, obtaining the first data from the first user terminal; Dividing the obtained first data by the server; The server shuffling the divided data in a preset method; Obtaining, by the server, second data including information on the obtained first data partition and information on the preset method; Encrypting, by the server, at least one third data and the second data among the divided first data using a first encryption key; The server, transmitting the encrypted data to the first user terminal; And transmitting, by the server, the remaining divided data other than the third data among the divided first data to an external server.

이때, 상기 서버는, 상기 제1 데이터를 다운로드하기 위한 요청을 수신하는 단계; 상기 외부 서버가, 상기 요청에 따라, 상기 상기 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 상기 서버로 전송 하는 단계; 상기 서버가, 상기 제1 사용자 단말로 상기 적어도 하나의 제3 데이터 및 상기 제2 데이터를 요청하는 단계; 상기 제1 사용자 단말이, 상기 외부 서버의 요청이 유효한 경우, 상기 암호화되어 저장된 데이터를 복호화 하는 단계; 상기 제1 사용자 단말이 상기 복호화된 제2 데이터 및 제3 데이터를 상기 외부 서버로 전송하는 단계; 및 상기 외부 서버는, 상기 제2 데이터를 바탕으로 분할된 제1 데이터를 재구성 하는 단계; 를 포함할 수 있다.At this time, the server, receiving a request to download the first data; Transmitting, by the external server, the divided data excluding the third data among the divided first data to the server according to the request; The server requesting the at least one third data and the second data to the first user terminal; Decrypting the encrypted and stored data when the request of the external server is valid by the first user terminal; Transmitting, by the first user terminal, the decrypted second data and third data to the external server; And the external server reconstructing the first data divided based on the second data. It may include.

이때, 상기 분할하는 단계는, 상기 분할된 데이터에 순차적으로 인덱스를 부가하는 단계;를 포함하고, 상기 셔플하는 단계는, 상기 인덱스가 부가된 분할된 데이터를 랜덤하게 셔플하고, 상기 제2 데이터는, 상기 분할된 데이터들의 인덱스 정보를 포함할 수 있다.In this case, the dividing step includes: sequentially adding an index to the divided data, and the shuffling step randomly shuffles the divided data to which the index is added, and the second data is , May include index information of the divided data.

이때, 상기 제1 데이터를 재구성하는 단계는, 상기 제2 데이터에 포함된 인덱스를 바탕으로 분할된 제1 데이터를 재구성할 수 있다.In this case, in the reconstructing of the first data, the divided first data may be reconstructed based on the index included in the second data.

이때, 상기 셔플하는 단계는, 상기 분할된 제1 데이터를 기 설정된 알고리즘에 따라 셔플하고, 상기 재구성하는 단계는, 상기 기설정된 알고리즘을 역변환하여 분할된 제1 데이터를 재구성 할 수 있다.At this time, the shuffling step may shuffle the divided first data according to a preset algorithm, and the reconstructing step may reconstruct the partitioned first data by inverse transforming the preset algorithm.

이때, 상기 제2 데이터 및 상기 제3 데이터는, 서로 다른 암호키에 의해 각각 암호화 될 수 있다.At this time, the second data and the third data may be respectively encrypted by different encryption keys.

이때, 상기 제1 데이터가 제1 사용자 단말 및 제2 사용자 단말에 의해 공유되는 경우, 상기 서버가, 상기 분할된 제1 데이터 중 적어도 하나의 제4 데이터 및 상기 제4 데이터를 제2 암호키를 이용하여 암호화 하는 단계; 상기 서버는, 상기 제2 사용자 단말로 상기 암호화된 데이터를 전송하는 단계; 를 더 포함할 수 있다.At this time, when the first data is shared by the first user terminal and the second user terminal, the server may generate a second encryption key for at least one of the fourth data and the fourth data among the divided first data. Encryption using; The server, transmitting the encrypted data to the second user terminal; It may further include.

이때, 상기 서버는, 상기 제1 데이터를 다운로드하기 위한 요청을 수신하는 단계; 상기 외부 서버가, 상기 요청에 따라, 상기 상기 분할된 제1 데이터 중 제3 데이터 및 상기 제4 데이터를 제외한 나머지 분할 데이터를 상기 서버로 전송 하는 단계; 상기 서버가, 상기 복수의 사용자 단말로, 상기 제2 데이터, 제3 데이터 및 제4 데이터를 요청하는 단계; 상기 제1 사용자 단말 및 상기 제2 사용자 단말이, 상기 서버의 요청이 유효한 경우, 상기 암호화되어 저장된 데이터를 복호화 하는 단계; 상기 제1 사용자 단말 및 상기 제2 사용자 단말이 상기 복호화된 데이터를 상기 서버로 전송하는 단계; 및 상기 서버는, 상기 제2 데이터 및 상기 제1 사용자 단말 및 상기 제2 사용자 단말로부터 수신한 제3 데이터 및 제4 데이터를 바탕으로 분할된 제1 데이터를 재구성 하는 단계; 를 포함할 수 있다.At this time, the server, receiving a request to download the first data; Transmitting, by the external server, the remaining divided data excluding the third data and the fourth data among the divided first data to the server according to the request; The server requesting the second data, the third data, and the fourth data to the plurality of user terminals; Decrypting the encrypted and stored data when the request of the server is valid by the first user terminal and the second user terminal; Transmitting the decrypted data to the server by the first user terminal and the second user terminal; And the server reconstructing the divided first data based on the second data and the third data and the fourth data received from the first user terminal and the second user terminal; It may include.

이때, 상기 제1 사용자 단말 및 상기 제2 사용자 단말이, 상기 서버의 요청이 유효한 경우, 상기 암호화되어 저장된 데이터를 복호화 하는 단계는, 상기 제1 사용자 단말 및 상기 제2 사용자 단말의 사용자 중 기 설정된 수 이상의 사용자가 복호화에 동의한 경우, 상기 암호화되어 저장된 데이터를 복호화 하는 단계;를 포함할 수 있다.At this time, when the first user terminal and the second user terminal, the request of the server is valid, the step of decrypting the encrypted and stored data is set among the users of the first user terminal and the second user terminal And decrypting the encrypted and stored data when more than one user agrees to the decryption.

이때, 상기 제2 데이터, 상기 제3 데이터 및 상기 제4 데이터는 블록체인에 저장될 수 있다.At this time, the second data, the third data, and the fourth data may be stored in the blockchain.

상술한 본 개시의 다양한 실시예에 따라, 적은 데이터를 암호화하고도 보안성을 높이고, 데이터 전송 속도를 높일 수 있는 효과가 있다.According to various embodiments of the present disclosure described above, there is an effect of increasing security and speeding up data transmission even if a small amount of data is encrypted.

본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.

도 1은 본 발명의 일 실시예에 따른 플랫폼을 개괄적으로 설명하기 위한 예시도이다.
도 2는 본 발명에 따른 시스템을 상세히 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 보안 방법을 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 데이터 재구성 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 데이터를 셔플하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 또 다른 실시예에 따른 데이터를 셔플하는 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 복수의 사용자가 제1 데이터를 공유하는 경우의 데이터 보안 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 복수의 사용자가 제1 데이터를 공유하는 경우의 데이터 보안 방법을 설명하기 위한 흐름도이다.
도 9는 일 실시 예에 따른 장치의 구성도이다.
1 is an exemplary view for schematically explaining a platform according to an embodiment of the present invention.
2 is a block diagram for explaining the system according to the present invention in detail.
3 is a flowchart illustrating a data security method according to an embodiment of the present invention.
4 is a flowchart illustrating a data reconstruction method according to an embodiment of the present invention.
5 is a flowchart illustrating a method of shuffling data according to an embodiment of the present invention.
6 is a flowchart illustrating a method of shuffling data according to another embodiment of the present invention.
7 is a flowchart illustrating a data security method when a plurality of users share first data according to an embodiment of the present invention.
8 is a flowchart illustrating a data security method when a plurality of users share first data according to an embodiment of the present invention.
9 is a configuration diagram of an apparatus according to an embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. Advantages and features of the present invention, and methods for achieving them will be clarified with reference to embodiments described below in detail together with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only the present embodiments allow the disclosure of the present invention to be complete, and are common in the art to which the present invention pertains. It is provided to fully inform the skilled person of the scope of the present invention, and the present invention is only defined by the scope of the claims.

본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.The terminology used herein is for describing the embodiments and is not intended to limit the present invention. In the present specification, the singular form also includes the plural form unless otherwise specified in the phrase. As used herein, “comprises” and/or “comprising” does not exclude the presence or addition of one or more other components other than the components mentioned. Throughout the specification, the same reference numerals refer to the same components, and “and/or” includes each and every combination of one or more of the components mentioned. Although "first", "second", etc. are used to describe various components, it goes without saying that these components are not limited by these terms. These terms are only used to distinguish one component from another component. Therefore, it goes without saying that the first component mentioned below may be the second component within the technical spirit of the present invention.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms (including technical and scientific terms) used in this specification may be used in a sense that can be commonly understood by those skilled in the art to which the present invention pertains. In addition, terms that are defined in a commonly used dictionary are not ideally or excessively interpreted unless specifically defined.

명세서에서 사용되는 "부" 또는 “모듈”이라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부" 또는 “모듈”은 어떤 역할들을 수행한다. 그렇지만 "부" 또는 “모듈”은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부" 또는 “모듈”은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부" 또는 “모듈”은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부" 또는 “모듈”들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부" 또는 “모듈”들로 결합되거나 추가적인 구성요소들과 "부" 또는 “모듈”들로 더 분리될 수 있다.The term "part" or "module" as used in the specification means a hardware component such as software, FPGA or ASIC, and "part" or "module" performs certain roles. However, "part" or "module" is not meant to be limited to software or hardware. The "unit" or "module" may be configured to be in an addressable storage medium or may be configured to reproduce one or more processors. Thus, as an example, “part” or “module” means components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, Includes procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, database, data structures, tables, arrays and variables. The functionality provided within components and "parts" or "modules" can be combined into a smaller number of components and "parts" or "modules" or into additional components and "parts" or "modules" Can be further separated.

공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 구성요소와 다른 구성요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 구성요소들의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들어, 도면에 도시되어 있는 구성요소를 뒤집을 경우, 다른 구성요소의 "아래(below)"또는 "아래(beneath)"로 기술된 구성요소는 다른 구성요소의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 구성요소는 다른 방향으로도 배향될 수 있으며, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.The spatially relative terms “below”, “beneath”, “lower”, “above”, “upper”, and the like are shown in the figure as one figure. It can be used to easily describe a correlation between a component and other components. The spatially relative terms should be understood as terms including different directions of components in use or operation in addition to the directions shown in the drawings. For example, if a component shown in the drawing is turned over, a component described as "below" or "beneath" of another component will be placed "above" of the other component. Can. Thus, the exemplary term “below” can include both the directions below and above. The component can also be oriented in other directions, so that spatially relative terms can be interpreted according to the orientation.

본 명세서에서, 컴퓨터는 적어도 하나의 프로세서를 포함하는 모든 종류의 하드웨어 장치를 의미하는 것이고, 실시 예에 따라 해당 하드웨어 장치에서 동작하는 소프트웨어적 구성도 포괄하는 의미로서 이해될 수 있다. 예를 들어, 컴퓨터는 스마트폰, 태블릿 PC, 데스크톱, 노트북 및 각 장치에서 구동되는 사용자 클라이언트 및 애플리케이션을 모두 포함하는 의미로서 이해될 수 있으며, 또한 이에 제한되는 것은 아니다.In the present specification, the computer means all kinds of hardware devices including at least one processor, and may be understood as a meaning encompassing a software configuration operating in a corresponding hardware device according to an embodiment. For example, a computer may be understood as meaning including, but not limited to, a smart phone, a tablet PC, a desktop, a notebook, and a user client and application running on each device.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 명세서에서 설명되는 각 단계들은 컴퓨터에 의하여 수행되는 것으로 설명되나, 각 단계의 주체는 이에 제한되는 것은 아니며, 실시 예에 따라 각 단계들의 적어도 일부가 서로 다른 장치에서 수행될 수도 있다.Each step described in this specification is described as being performed by a computer, but the subject of each step is not limited thereto, and according to an embodiment, at least some of the steps may be performed in different devices.

도 1은 본 발명의 일 실시예에 따른 플랫폼을 개괄적으로 설명하기 위한 예시도이다.1 is an exemplary view for schematically explaining a platform according to an embodiment of the present invention.

도 1에 도시된 바와 같이, 플랫폼은 의뢰인과 작업자를 연결해주며, 중간에서 다양한 서비스를 제공할 수 있다. 일 실시예로, 플랫폼은 의뢰자로부터 데이터 작업에 관한 의뢰를 받고, 해당 의뢰에 대응되는 작업자를 매칭하여 작업자에게 의뢰자의 데이터 작업을 할당할 수 있다. 데이터 작업 할당 과정에서 플랫폼은 인공 지능 모델을 이용하여 작업자에게 최적화된 UX/UI 툴을 제공할 수 있다. As shown in Figure 1, the platform connects the client and the worker, and can provide various services in the middle. In one embodiment, the platform may receive a request for a data operation from a requester, and allocate a requester's data operation to a worker by matching an operator corresponding to the request. In the process of data task allocation, the platform can use artificial intelligence models to provide optimized UX/UI tools to workers.

또 다른 실시예로, 플랫폼은 의뢰자와 작업자 사이에서 전송되는 데이터의 보안성을 높이기 위한 시스템을 구축할 수 있다. 예를 들어, 플랫폼은 의뢰자가 제공한 데이터를 암호화하여 작업자에게 제공하고, 작업자에 의해 생성된 작업물을 암호화하여 의뢰자에게 제공할 수 있다.In another embodiment, the platform may build a system for increasing the security of data transmitted between the client and the worker. For example, the platform may encrypt the data provided by the client and provide it to the worker, and encrypt the work generated by the worker and provide it to the client.

이 외에도, 플랫폼은 인공 지능 모델을 이용하여 작업자에 의해 생성된 작업물을 검수하여 작업자에게 재작업을 요청하거나, 의뢰자에게 전달할 수 있다.In addition to this, the platform may inspect the work created by the worker using an artificial intelligence model to request the worker to rework or deliver the work to the client.

도 2는 본 발명에 따른 시스템을 상세히 설명하기 위한 블록도이다.2 is a block diagram for explaining the system according to the present invention in detail.

도 2에 개시된 바와 같이, 시스템(1)은 제1 사용자 단말 내지 제6 사용자 단말(11 내지 16), 서버(20) 및 외부 서버(21)를 포함할 수 있다. 이때, 제1 사용자 단말 내지 제6 사용자 단말(11 내지 16)의 적어도 하나의 단말은 도 1에 개시된 의뢰자에 대응되는 단말이고, 또 다른 적어도 하나의 단말은 도 1에 개시된 판매자에 대응되는 단말일 수 있다. 또한, 서버(20)는 도 1에 개시된 플랫폼에 대응되는 서버일 수 있다. 설명의 편의를 위해 본 개시에서는 제1 사용자 단말 내지 제3 사용자 단말(11 내지 13)은 의뢰자에 대응되는 사용자 단말로, 제4 사용자 단말 내지 제6 사용자 단말(14 내지 16)은 판매자에 대응되는 사용자 단말로 보나, 이에 한정되는 것은 아니다.2, the system 1 may include a first user terminal to a sixth user terminal 11 to 16, a server 20 and an external server 21. At this time, at least one terminal of the first user terminal to the sixth user terminal 11 to 16 is a terminal corresponding to the client disclosed in FIG. 1, and another at least one terminal is a terminal corresponding to the seller disclosed in FIG. 1. Can. Further, the server 20 may be a server corresponding to the platform disclosed in FIG. 1. For convenience of description, in the present disclosure, the first user terminal to the third user terminal 11 to 13 are user terminals corresponding to the sponsor, and the fourth user terminal to sixth user terminals 14 to 16 correspond to the seller. Although viewed as a user terminal, it is not limited thereto.

이때, 제1 사용자 단말(11)은 데이터를 서버(20)로 전송할 수 있다. 서버(20)는 분할된 데이터를 셔플하고, 분할된 데이터에 대한 정보 및 셔플에 대한 정보를 저장한 작은 데이터 크기를 가지는 파일을 만들 수 있다. 서버(20)는 해당 파일을 암호화 하여 제1 사용자 단말(11)로 전송할 수 있으며, 제1 사용자 단말(11)은 작은 데이터 크기를 가지는 파일만으로 전체 데이터를 보안할 수 있는 효과가 존재한다. At this time, the first user terminal 11 may transmit data to the server 20. The server 20 shuffles the divided data and can create a file having a small data size that stores information about the divided data and information about the shuffle. The server 20 may encrypt the corresponding file and transmit it to the first user terminal 11, and the first user terminal 11 has an effect of securing the entire data only with a file having a small data size.

한편, 서버(20)는 분할된 데이터 중 사용자 단말로 제공된 분할 데이터를 제외한 나머지 데이터를 외부 서버(21)로 전송할 수 있다. 이때, 외부 서버(21)가 수신한 데이터는 무작위로 섞인 데이터로 원본 데이터를 유추하기 어려운 특징이 있다. 따라서, 공격자가 외부 서버(21)에 저장된 데이터를 해킹하더라도, 제1 사용자 단말(11)이 전송한 원본 데이터에 대한 정보를 알 수 없어 원본 데이터를 보호할 수 있다. 또한, 공격자가 제1 사용자 단말(11)에 저장된 암호화된 데이터를 해킹하더라도, 암호화된 데이터를 복호화 하지 못하거나, 외부 서버(21)에 저장된 분할 데이터가 없다면 원본 데이터를 획득할 수 없다.Meanwhile, the server 20 may transmit the remaining data other than the divided data provided to the user terminal among the divided data to the external server 21. At this time, the data received by the external server 21 is randomly mixed, and it is difficult to infer the original data. Therefore, even if an attacker hacks data stored in the external server 21, it is possible to protect the original data because the information on the original data transmitted by the first user terminal 11 is unknown. Also, even if an attacker hacks the encrypted data stored in the first user terminal 11, the original data cannot be obtained without decrypting the encrypted data or without the divided data stored in the external server 21.

한편, 본 발명에 따른 시스템(1)에서, 서버(20) 및 외부 서버(21)는 하나의 서버로 구현될 수 있음은 물론이다.Meanwhile, of course, in the system 1 according to the present invention, the server 20 and the external server 21 may be implemented as one server.

도 3은 본 발명의 일 실시예에 따른 데이터 보안 방법을 설명하기 위한 흐름도이다.3 is a flowchart illustrating a data security method according to an embodiment of the present invention.

단계 S105에서, 서버(20)는 제1 데이터를 획득할 수 있다. 이때 제1 데이터는 제1 사용자 단말(11)로부터 제공된 데이터일 수 있다. In step S105, the server 20 may acquire the first data. In this case, the first data may be data provided from the first user terminal 11.

단계 S110에서, 서버(20)는 획득한 제1 데이터를 분할할 수 있다. 일 실시예로, 서버(20)는 제1 데이터를 기 설정된 크기 또는 기 설정된 개수로 분할 할 수 있다. 구체적으로, 서버(20)는 제1 데이터를 10개의 분할 데이터로 분할하며, 10개의 분할 데이터의 크기는 모두 동일할 수 있다. 또는, 서버(20)는 제1 데이터를 10개의 분할 데이터로 분할하며, 10개의 분할 데이터의 크기는 각각 상이하게 분할될 수 있다. In step S110, the server 20 may divide the acquired first data. In one embodiment, the server 20 may divide the first data into a preset size or a preset number. Specifically, the server 20 divides the first data into 10 pieces of divided data, and the size of the 10 pieces of divided data may be the same. Alternatively, the server 20 divides the first data into 10 divided data, and the size of the 10 divided data may be divided differently.

또는, 서버(20)는 제1 데이터를 기 설정된 크기(예를 들어(100KB, 또는 10MB 등)로 분할할 수 있다. 이 경우, 제1 데이터의 크기에 따라 분할되는 데이터의 개수가 상이할 것이다. Alternatively, the server 20 may divide the first data into a predetermined size (for example (100KB, or 10MB, etc.). In this case, the number of data divided according to the size of the first data will be different. .

또는, 서버(20)는 제1 데이터의 일부는 기 설정된 크기로 분할되나 나머지 데이터는 임의의 방식으로 분할될 수도 있다.Alternatively, the server 20 may divide a part of the first data into a predetermined size, but the rest of the data may be divided in an arbitrary manner.

단계 S115에서, 서버(20)는 분할된 제1 데이터를 셔플할 수 있다. 이때, 서버(20)는 분할된 제1 데이터를 셔플하는 경우, 셔플에 대한 정보를 획득할 수 있다. 즉, 서버(20)는 셔플된 데이터를 다시 원래대로 재구성 하기 위한 셔플 정보를 획득할 수 있다. 서버(20)는 기 설정된 알고리즘에 따라 분할 데이터를 셔플하거나, 분할된 데이터에 인덱스 정보를 부가하는 방법 등을 이용하여 셔플 정보를 획득할 수 있다. In step S115, the server 20 may shuffle the divided first data. At this time, when the server 20 shuffles the divided first data, information on the shuffle may be obtained. That is, the server 20 may obtain shuffle information for reconstructing shuffled data back to the original state. The server 20 may obtain shuffle information by shuffling the divided data according to a predetermined algorithm or by adding index information to the divided data.

단계 S120에서, 서버(20)는 분할된 제1 데이터에 대한 분할 정보 및 셔플 정보를 포함하는 제2 데이터를 획득할 수 있다.In step S120, the server 20 may obtain second data including split information and shuffle information for the split first data.

분할 정보는 제1 데이터로부터 분할된 데이터임을 표시하는 정보를 포함할 수 있으며, 셔플 정보는 분할된 데이터가 어떻게 셔플되었는지와 관련된 정보를 포함할 수 있다.The split information may include information indicating that the data is split from the first data, and the shuffle information may include information related to how the split data is shuffled.

단계 S125에서, 서버(20)는 제2 데이터 및 분할된 제1 데이터 중 적어도 하나의 제3 데이터를 암호화 할 수 있다.In step S125, the server 20 may encrypt at least one third data among the second data and the divided first data.

즉, 서버(20)는 제1 데이터 재구성을 위한 제2 데이터를 암호화 하여 복호화 없이 제1 데이터를 재구성 하지 못하게 할 수 있다. 또한, 서버(20)는 제1 데이터의 일부인 제3 데이터를 암호화 하여 다른 사용자가 제2 데이터에 대한 정로를 알고 있다고 하더라고 완전한 제1 데이터를 재구성하지 못하게 할 수 있다. That is, the server 20 may encrypt the second data for reconstructing the first data so that the first data cannot be reconstructed without decryption. In addition, the server 20 may encrypt the third data that is part of the first data, so that other users may not reconstruct the complete first data even though they know that the path to the second data is known.

한편, 제2 데이터 및 제3 데이터는 서로 다른 암호키를 이용하여 암호화 되거나, 서로 다른 암호화 방법으로 암호화 되어 보안성을 향상시킬 수 있다.Meanwhile, the second data and the third data may be encrypted using different encryption keys or may be encrypted using different encryption methods to improve security.

한편, 상술한 실시예에서는 제2 데이터 및 제3 데이터를 서버(20)가 암호화 하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 또 다른 실시예로, 서버(20)는 제2 데이터 및 제3 데이터를 제1 사용자 단말(11)로 전송하고, 제1 사용자 단말(11)이 자신의 암호키를 이용하여 제2 데이터 및 제3 데이터를 암호화 할 수 있음은 물론이다. 이하에서는 서버(20)가 데이터 암호화를 수행하는 것으로 설명하나, 다양한 사용자 단말이 해당 과정을 수행할 수 있음은 물론이다.Meanwhile, in the above-described embodiment, the second data and the third data are described as being encrypted by the server 20, but the present invention is not limited thereto. In another embodiment, the server 20 transmits the second data and the third data to the first user terminal 11, and the first user terminal 11 uses the encryption key of the second data and second data. Of course, you can encrypt data. Hereinafter, the server 20 will be described as performing data encryption, but it is needless to say that various user terminals can perform the corresponding process.

단계 S130에서, 서버(20)는 암호화된 데이터를 제1 사용자 단말(11)로 전송할 수 있다.In step S130, the server 20 may transmit the encrypted data to the first user terminal (11).

이때, 서버(20)는 제2 데이터 및 제3 데이터를 삭제하여 보안성을 향상시킬 수 있다. 한편, 상술한 바와 같이, 암호화가 제1 사용자 단말(11)에서 수행되는 경우, 단계 S130은 생략될 수 있다.At this time, the server 20 may improve security by deleting the second data and the third data. Meanwhile, as described above, when encryption is performed in the first user terminal 11, step S130 may be omitted.

한편, 제1 사용자 단말(11)은 암호화된 데이터를 블록 체인에 저장할 수 있다. 데이터를 블록 체인에 저장함으로서, 위변조가 불가능하고, 보안이 향상되는 효과가 존재하며, 후술하는 바와 같이, 복수의 사용자가 제1 데이터를 공유하는 경우 효과적으로 암호화 데이터를 관리할 수 있다. 이에 대한 자세한 사항은 후술한다.Meanwhile, the first user terminal 11 may store encrypted data in a blockchain. By storing the data in a blockchain, forgery and alteration is impossible, and an effect of improving security exists. As described later, when multiple users share the first data, it is possible to effectively manage the encrypted data. Details of this will be described later.

단계 S135에서, 서버(20)는 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 외부 서버(21)로 전송할 수 있다.In step S135, the server 20 may transmit the remaining divided data other than the third data among the divided first data to the external server 21.

즉, 서버(20)는 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 데이터는 상대적으로 보안성이 약한 외부 서버(21)에 저장할 수 있다. 외부 서버(21)가 공격자에 의해 해킹 당하는 경우라도, 1)분할된 데이터를 어떻게 배열 해야되는 지에 대한 정보가 없고, 2)정보가 있더라도 제3 데이터가 존재하지 않으므로 완전한 제1 데이터를 재구성할 수 없을 것이다. 나아가, 상술한 바와 같이, 다양한 방법을 통해 제1 데이터를 분할하여 제3 데이터의 크기를 유동적으로 설정하여, 공격자가 제3 데이터를 유추하기 어렵게 되는 효과가 존재한다.That is, the server 20 may store the remaining data other than the third data among the divided first data in the external server 21 having relatively weak security. Even when the external server 21 is hacked by an attacker, 1) there is no information on how to arrange the divided data, and 2) even if there is information, the third data does not exist, so the complete first data can be reconstructed. Will not. Furthermore, as described above, there is an effect that it is difficult for an attacker to infer the third data by dividing the first data through various methods to dynamically set the size of the third data.

한편, 단계 S125에서, 및 후술하는 단계 S155에서는 보안성을 더욱 향상시키기 위하여 서버(20)의 시큐어 월드에서 암호화 및 복호화 과정이 수행되고, 나머지 단계는 노멀 월드에서 수행될 수 있다.Meanwhile, in step S125, and in step S155, which will be described later, in order to further improve security, an encryption and decryption process is performed in the secure world of the server 20, and the remaining steps can be performed in the normal world.

시큐어 월드란 보안성을 확보한 데이터 처리 아키텍처를 의미하고, 노멀 월드란 일반적인 데이터 처리 아키텍처를 의미하며 두개의 월드는 선택적으로 동작하며 두개의 월드가 동시에 사용될 수는 없다.Secure world means a secure data processing architecture, normal world means a general data processing architecture, and two worlds operate selectively, and two worlds cannot be used simultaneously.

일 실시예로, 서버(20)는 "ARM 트러스트존 아키텍처(ARM Trustzone Architecture)"가 사용될 수 있다. "ARM 트러스트존 아키텍처(ARM Trustzone Architecture)" 로는 마이크로 프로세스 시스템용의 ARM사(社)의 두 개로 분할된 런타임-아키텍처가 공지되어 있다. 이와 같은 런타임-아키텍처는 두 가지의 런타임 환경을 포함한다. 그 중 하나인 비보안 런타임 환경은, "노멀 존(Normal Zone)" 또는 "노멀 월드(Normal World)"로 지칭될 수 있다. 비보안 런타임 환경은 정상 운영 체제에 의해서 제어될 수 있다. 다른 하나의 런타임 환경인 보안 런타임 환경은 "트러스트 존(Trustzone)" 또는 "트러스티드 월드(TrustedWorld)" 또는 "시큐어 월드(Secure World)로 지칭될 수 있다. 보안 런타임 환경은 안전 운영체제에 의해 제어된다. In one embodiment, "ARM Trustzone Architecture" may be used as the server 20. As the "ARM Trustzone Architecture", two divided runtime-architectures from ARM for microprocessor systems are known. This runtime-architecture includes two runtime environments. One of them, the non-secure runtime environment, may be referred to as a “normal zone” or a “normal world”. The insecure runtime environment can be controlled by a normal operating system. Another runtime environment, the secure runtime environment, may be referred to as a "Trustzone" or "TrustedWorld" or "Secure World. The secure runtime environment is controlled by a safe operating system. .

여기서, 정상 운영 체제는 예를 들어, 안드로이드, 윈도우 폰, 심비안 등과 같은 통상적인 운영 체제일 수 있으며, 안전 운영 체제는 예를 들어, MOBICORE, RedCastle 등과 같이 기존 운영 체제 내에 보안 기능이 통합된 보안 커널(security kernel)을 삽입한 운영 체제일 수 있다. ARM 트러스트 존에 따르면, 상술한 비보안 런타임 환경 및 보안 런타임 환경은 가상 실행 환경으로 정의될 수 있다.Here, the normal operating system may be, for example, an ordinary operating system such as Android, Windows phone, Symbian, etc., and the safe operating system is a security kernel in which security functions are integrated in an existing operating system, such as MOBICORE, RedCastle, etc. (security kernel). According to the ARM trust zone, the above-described non-secure runtime environment and secure runtime environment may be defined as a virtual execution environment.

도 4는 본 발명의 일 실시예에 따른 데이터 재구성 방법을 설명하기 위한 흐름도이다.4 is a flowchart illustrating a data reconstruction method according to an embodiment of the present invention.

단계 S140에서, 서버(20)는 제1 데이터 다운로드 요청을 수신할 수 있다. 이때, 서버(20)는 제4 사용자 단말(14)로부터 제1 데이터를 다운로드하기 위한 요청을 수신할 수 있다. 일 실시예로, 제4 사용자 단말(14)가 제1 사용자 단말(11)의 제1 데이터를 이용하여 작업할 작업자 단말인 경우, 서버(20)는 제4 사용자 단말(14)에게 제1 데이터 다운로드 요청을 수신할 수 있다. 또 다른 실시예로, 서버(20)가 여러 작업자 단말 중 제4 작업자 단말(14)이 작업을 수행하기에 적합하다고 판단한 경우, 서버(20) 자체가 제1 데이터 다운로드 요청을 발생시킬 수도 있다. In step S140, the server 20 may receive a first data download request. At this time, the server 20 may receive a request to download the first data from the fourth user terminal 14. In one embodiment, when the fourth user terminal 14 is a worker terminal to work using the first data of the first user terminal 11, the server 20 first data to the fourth user terminal 14 A download request can be received. In another embodiment, when the server 20 determines that the fourth worker terminal 14 is suitable for performing the work among the multiple worker terminals, the server 20 itself may generate a first data download request.

단계 S145에서, 외부 서버(21)는 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 서버(20)로 전송할 수 있다. 다만, 이에 한정되는 것은 아니고, 외부 서버(21)은 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 제4 사용자 단말(14)로 직접 전송할 수도 있음은 물론이다.In step S145, the external server 21 may transmit the remaining divided data excluding the third data among the divided first data to the server 20. However, the present invention is not limited thereto, and the external server 21 may directly transmit the remaining divided data excluding the third data among the divided first data to the fourth user terminal 14.

단계 S150에서, 서버(20)는 제1 사용자 단말(11)로 제2 데이터 및 제3 데이터를 요청할 수 있다. 즉, 제2 데이터 및 제3 데이터가 존재해야 제1 데이터를 재구성하여 복원할 수 있으므로, 서버(20)는 제2 데이터 및 제3 데이터를 제1 사용자 단말(11)로 요청할 수 있다.In step S150, the server 20 may request the second data and the third data from the first user terminal 11. That is, since the second data and the third data must exist to reconstruct and reconstruct the first data, the server 20 may request the second and third data from the first user terminal 11.

단계 S155에서, 요청이 유효한 경우, 제1 사용자 단말(11)은 암호화된 데이터를 복호화 할 수 있다.In step S155, if the request is valid, the first user terminal 11 may decrypt the encrypted data.

이때, 요청이 유효한지 판단하는 방법은 다양할 수 있다. 일 실시예로, 서버(20)로부터 요청을 수신하면, 제1 사용자 단말(11)은 서버(20)로 기 설정된 패스워드 또는 키를 요청할 수 있다. 패스워드 또는 키가 유효한 경우, 제1 사용자 단말(11)은 자신의 키로 암호화된 데이터를 복호화 하여 제2 데이터 및 제3 데이터를 획득할 수 있다.At this time, the method for determining whether the request is valid may vary. In one embodiment, upon receiving a request from the server 20, the first user terminal 11 may request a preset password or key from the server 20. When the password or the key is valid, the first user terminal 11 may obtain the second data and the third data by decrypting the data encrypted with its own key.

단계 S160에서, 제1 사용자 단말(11)은 복호화된 제2 데이터 및 제3 데이터를 서버(20)로 전송할 수 있다.In step S160, the first user terminal 11 may transmit the decrypted second data and third data to the server 20.

이때, 제2 데이터 및 제3 데이터를 전송하기 위한 통신 채널의 보안이 보장되지 않는 경우, 제1 사용자 단말(11)은 서버(20)와 공유하는 공개키로 제2 데이터 및 제3 데이터를 암호화 하여 전송할 수 있다. 서버(20)는 자신의 비밀키로 암호화된 데이터를 복호화 하여 제2 데이터 및 제3 데이터를 획득할 수 있을 것이다.At this time, if the security of the communication channel for transmitting the second data and the third data is not guaranteed, the first user terminal 11 encrypts the second data and the third data with a public key shared with the server 20 Can transmit. The server 20 may obtain the second data and the third data by decrypting the data encrypted with its own secret key.

단계 S165에서, 서버(20)는 제2 데이터를 바탕으로 분할된 제1 데이터를 재구성 할 수 있다. 즉, 서버(20)는 제3 데이터를 제1 사용자 단말(11)로부터 수신하고, 나머지 분할된 제1 데이터를 외부 서버(21)로부터 수신하였으므로, 분할된 제1 데이터 전부를 가지고 있다. 또한, 제2 데이터는 분할된 데이터가 어떻게 셔플되었는지에 대한 정보를 가지고 있으므로 서버(20)는 분할된 제1 데이터를 재구성하여 복원할 수 있다.In step S165, the server 20 may reconstruct the divided first data based on the second data. That is, since the server 20 receives the third data from the first user terminal 11 and the remaining divided first data from the external server 21, the server 20 has all of the divided first data. In addition, since the second data has information on how the divided data is shuffled, the server 20 may reconstruct and reconstruct the divided first data.

추가적으로, 서버(20)는 복원된 제1 데이터를 제4 사용자 단말(14)로 전송할 수 있음은 물론이다.Additionally, the server 20 may transmit the restored first data to the fourth user terminal 14, of course.

한편, 본 발명에 따른 또 다른 실시예로, 외부 서버(21)는 제3 데이터를 제외한 분할된 제1 데이터를 저장하고 있으며, 같은 방법으로 다른 복수의 분할된(그러나 불충분한)데이터를 저장하고 있을 수 있다. 이때, 외부 서버(21)는 분할된 제1 데이터와 나머지 분할된 데이터들을 무작위로 보관할 수 있다. 상기 방식으로 데이터를 저장할 경우, 외부 서버(21)는 복수의 분할된 데이터를 구분없이 저장하게 되어 공격자가 분할된 제1 데이터가 무엇인지조자 모르게 만들 수 있다. On the other hand, in another embodiment according to the present invention, the external server 21 stores the divided first data excluding the third data, and stores a plurality of different divided (but insufficient) data in the same way. It can be. At this time, the external server 21 may randomly store the divided first data and the remaining divided data. When the data is stored in the above manner, the external server 21 stores a plurality of divided data without distinction, so that an attacker may not know what the divided first data is.

복수의 데이터들 속에서 분할된 제1 데이터를 식별하기 위해, 서버(20)는 분할된 제1 데이터 각각에 임의의 인덱스를 부가할 수 있다. 나아가, 외부 서버(21)에 저장된 모든 분할 데이터는 상이한 인덱스를 가질 수 있음은 물론이다. 부가되는 인덱스는 분할된 제1 데이터 각각마다 모두 상이한 것으로, 분할된 데이터의 인덱스만 가지고는 해당 데이터가 분할된 제1 데이터인지를 알 수 없다. 따라서, 서버(20)는 분할된 제1 데이터의 순서에 따라 부가된 인덱스를 정렬한 테이블에 대한 정보를 분할 정보로 생성할 수 있다. 생성된 분할 정보는 제2 데이터에 포함될 수 있다. 이때, 인덱스는 분할된 데이터의 특정 위치에 삽입될 수 있고, 이러한 위치 정보 또한 분할 정보에 포함될 수 있다. 나아가, 분할 정보는 인덱스의 크기 정보를 더 포함할 수 있다. To identify the divided first data among the plurality of data, the server 20 may add an arbitrary index to each of the divided first data. Furthermore, it goes without saying that all divided data stored in the external server 21 may have different indexes. The added indexes are different for each of the divided first data, and it is not known whether the corresponding data is the divided first data only by the index of the divided data. Accordingly, the server 20 may generate information about the table in which the indexes added are sorted according to the order of the first partitioned data. The generated segmentation information may be included in the second data. At this time, the index may be inserted at a specific location of the divided data, and such location information may also be included in the division information. Furthermore, the segmentation information may further include index size information.

예를 들어, 제1 데이터가 제1-1데이터, 제1-2 데이터, 제1-3 데이터로 분할되는 경우를 가정할 수 있다. 예를 들어, 제1-1 데이터는 0010이고, 제1-2 데이터는 1111, 제1-3 데이터는 0000일 수 있다. 이때, 특정 위치 정보는 예를 들어 '데이터 중 두번째 비트 이후'일 수 있고, 인덱스의 크기는 2비트인 경우를 가정한다. 이때, 제1-1 데이터에 부가되는 인덱스는 00이고, 제1-2 데이터에 부가되는 인덱스는 01이고, 제1-3 데이터에 부가되는 인덱스는 10일 수 있다. For example, it may be assumed that the first data is divided into first-first data, first-second data, and first-third data. For example, 1-1 data may be 0010, 1-2 data may be 1111, and 1-3 data may be 0000. In this case, it is assumed that the specific location information may be, for example,'after the second bit of data', and the size of the index is 2 bits. In this case, the index added to the 1-1 data may be 00, the index added to the 1-2 data may be 01, and the index added to the 1-3 data may be 10.

서버(20)는 인덱스 크기 정보로부터 임의의 인덱스를 생성하고, 위치 정보에 따라 인덱스를 생성할 수 있다. 최종적으로 제1-1 데이터는 00(00)10, 제1-2 데이터는 11(01)11, 제1-3 데이터는 00(10)00이 될 것이다(설명의 편의상 부가된 인덱스는 괄호 처리하였다)The server 20 may generate an arbitrary index from the index size information and generate an index according to the location information. Finally, the 1-1 data will be 00(00)10, the 1-2 data will be 11(01)11, and the 1-3 data will be 00(10)00. Did)

서버(20)는 '인덱스는 처음 두비트 이후부터 시작하며, 2비트의 크기를 가진다'라는 정보를 제2 데이터로 저장할 수 있다. 즉, 제2 데이터는 세번째 네번째 비트가 인덱스라는 정보를 가진다. 나아가 제2 데이터는 000110의 데이터를 더 포함할 수 있다. 000110의 첫 두자리는 제1-1 데이터의 인덱스, 다음 두자리는 제1-2 데이터의 인덱스, 마지막 두 자리는 제1-3 데이터의 인덱스이다.The server 20 may store the information that the'index starts after the first two bits and has a size of 2 bits' as second data. That is, the second data has information that the third and fourth bits are indexes. Furthermore, the second data may further include 000110 data. The first two digits of 000110 are the index of the 1-1 data, the next two digits are the index of the 1-2 data, and the last two digits are the index of the 1-3 data.

서버(20)는 인덱스의 위치 정보를 바탕으로 외부 서버(21)에 존재하는 모든 데이터로부터 인덱스를 추출하고, 추출된 인덱스를 바탕으로 분할된 제1 데이터를 획득할 수 있다. 상술한 설명에서는 인덱스의 크기가 2비트이므로 동일한 인덱스가 복수개 생성될 수 있으나, 이는 설명의 편의를 위한 것일 뿐, 인덱스의 크기가 기 설정된 값 이상으로 커질 경우, 동일한 인덱스의 발생 빈도가 현저히 낮아진다. 한편, 동일한 인덱스를 가지는 분할 데이터가 존재하는 경우라고 하더라도, 외부 서버(21)에 존재하는 분할 데이터는 모두 상이한 인덱스를 가지고 있으므로, 이 경우 분할된 데이터의 크기 정보를 이용하여 동일한 인덱스를 가지는 복수의 데이터 중 분할된 제1 데이터를 찾아낼 수 있다(즉, 분할된 제1 데이터의 크기 정보 또한 제2 데이터에 저장될 수 있다). The server 20 may extract an index from all data existing in the external server 21 based on the location information of the index, and obtain the divided first data based on the extracted index. In the above description, since the size of the index is 2 bits, a plurality of identical indexes may be generated, but this is for convenience only, and when the size of the index increases beyond a preset value, the frequency of occurrence of the same index is significantly lowered. On the other hand, even if the divided data having the same index exists, since the divided data existing in the external server 21 all have different indexes, in this case, a plurality of partitioned data having the same index using size information of the divided data The divided first data may be found (that is, size information of the divided first data may also be stored in the second data).

도 5는 본 발명의 일 실시예에 따른 데이터를 셔플하는 방법을 설명하기 위한 흐름도이다.5 is a flowchart illustrating a method of shuffling data according to an embodiment of the present invention.

단계 S210에서, 서버(20)는 분할된 데이터에 순차적으로 인덱스를 부가할 수 있다.In step S210, the server 20 may sequentially add indexes to the divided data.

단계 S220에서, 서버(20)는 인덱스가 부가된 데이터를 랜덤하게 셔플할 수 있다(S220).In step S220, the server 20 may randomly shuffle indexed data (S220).

상술한 바와 같이, 인덱스는 분할 데이터의 특정 위치에 특정 크기로 삽입될 수 있음은 물론이다. 위치 정보 및 크기 정보가 암호화 되므로, 공격자는 인덱스가 무엇인지 알 수 없다.Of course, as described above, the index can be inserted in a specific size at a specific location of the divided data. Because the location and size information is encrypted, an attacker cannot know what the index is.

단계 S230에서, 서버(20)는 제2 데이터에 포함된 인덱스를 바탕으로 분할된 제1 데이터를 재구성 할 수 있다.In step S230, the server 20 may reconstruct the divided first data based on the index included in the second data.

상술한 예에서, 서버(20)가 인덱스 00을 가지는 제1-1 데이터, 인덱스 10을 가지는 제1-3 데이터, 인덱스 01을 가지는 제1-2 데이터를 획득하면 제2 데이터에 포함된 인덱스 정보 000110을 이용하여 제1-1 데이터, 제1-2 데이터, 제1-3 데이터의 순서로 데이터를 정렬하여 복원할 수 있다.In the above example, when the server 20 acquires the 1-1 data having the index 00, the 1-3 data having the index 10, and the 1-2 data having the index 01, the index information included in the second data Using 000110, data can be sorted and restored in the order of 1-1 data, 1-2 data, and 1-3 data.

도 6은 본 발명의 또 다른 실시예에 따른 데이터를 셔플하는 방법을 설명하기 위한 흐름도이다.6 is a flowchart illustrating a method of shuffling data according to another embodiment of the present invention.

*단계 S310에서, 서버(20)는 분할된 제1 데이터를 기 설정된 알고리즘에 따라 셔플할 수 있다. 이때, 기 설정된 알고리즘은 예를 들어 분할 후 홀수번째 데이터와 짝수번째 데이터를 섞는 알고리즘이거나, 분할된 데이터 중 0의 개수 또는 1의 개수의 순서에 따라 오름차순 또는 내림차순으로 정렬하는 알고리즘일 수 있다(이 경우, 0 또는 1의 개수가 동일한 경우, 원래의 순서대로 배열할 수 있을 것이다).* In step S310, the server 20 may shuffle the divided first data according to a preset algorithm. At this time, the preset algorithm may be, for example, an algorithm that mixes odd-numbered data with even-numbered data after division, or may be an algorithm that sorts in ascending or descending order according to the order of the number of 0s or 1s among the divided data (this Case, if the number of 0 or 1 is the same, it may be arranged in the original order).

서버(20)는 기 설정된 알고리즘에 대한 정보를 제2 데이터에 포함시켜 제2 데이터를 암호화 할 수 있다. 이 경우, 분할된 제1 데이터(제3 데이터를 제외한)는 셔플된 순서에 따라 외부 서버(21)로 저장될 것이다.The server 20 may encrypt the second data by including information about a predetermined algorithm in the second data. In this case, the divided first data (except the third data) will be stored in the external server 21 according to the shuffled order.

단계 S320에서, 서버(20)는 기 설정된 알고리즘을 역변환하여 분할된 제1 데이터를 재구성 할 수 있다.In step S320, the server 20 may reconstruct the divided first data by inversely transforming a predetermined algorithm.

도 6의 실시예의 경우, 외부 서버(21)는 분할된 제1 데이터를 셔플된 순서에 따라 저장하고 있어야 하므로, 상술한 바와 같이 모든 데이터를 임의로 섞어서 관리하지 못할 것이다.In the case of the embodiment of FIG. 6, the external server 21 must store the divided first data in a shuffled order, and as described above, it will not be possible to mix and manage all data arbitrarily.

도 7은 본 발명의 일 실시예에 따른 복수의 사용자가 제1 데이터를 공유하는 경우의 데이터 보안 방법을 설명하기 위한 흐름도이다.7 is a flowchart illustrating a data security method when a plurality of users share first data according to an embodiment of the present invention.

구체적으로, 제1 데이터는 복수의 사용자 단말이 함께 공유하고 있는 데이터일 수 있다. 이 경우, 제1 데이터 다운을 요청하면, 복수의 사용자 전부 또는 기 설정된 인원의 동의가 있어야 제1 데이터를 다운로드 할 수 있어야 할 것이다.Specifically, the first data may be data shared by a plurality of user terminals. In this case, when requesting the first data download, the first data should be downloaded only with the consent of all or a predetermined number of users.

설명의 편의를 위해, 이하에서는 복수의 사용자 단말을 제1 사용자 단말(11) 및 제2 사용자 단말(12)의 경우로 한정하여 설명하나, 세개 이상의 사용자 단말의 경우에도 본 발명에 따른 사상이 적용될 수 있음은 물론이다.For convenience of description, hereinafter, a plurality of user terminals will be described as being limited to the case of the first user terminal 11 and the second user terminal 12, but the idea according to the present invention may also be applied to three or more user terminals. Of course it can.

단계 S410에서, 서버(20)는 분할된 제1 데이터 중 제4 데이터를 제2 암호키를 이용해 암호화 할 수 있다.In step S410, the server 20 may encrypt the fourth data among the divided first data using the second encryption key.

즉, 서버(20)는 제1 사용자 단말의 경우와 마찬가지로, 분할된 제1 데이터 중 적어도 하나인 제4 데이터와 분할 정보 및 셔플 정보를 포함하는 제2 데이터를 암호화 할 수 있다. 이때, 분할 정보 및 셔플 정보를 포함하는 제2 데이터는 제1 사용자 단말(11)로 제공되는 제2 데이터와 동일할 수 있으나, 이에 한정되는 것은 아니다.That is, as in the case of the first user terminal, the server 20 may encrypt the fourth data, which is at least one of the divided first data, and second data including split information and shuffle information. At this time, the second data including the segmentation information and shuffle information may be the same as the second data provided to the first user terminal 11, but is not limited thereto.

일 실시예로, 제1 사용자 단말 및 제2 사용자 단말(12)은 분할 정보 및 셔플 정보를 포함하는 제2 데이터를 분할하여 획득할 수 있고, 각기 자신의 데이터만을 암호화 할 수 있다. 구체적으로, 제2 데이터가 제2-1 데이터 및 제2-2 데이터로 분할되고, 제1 사용자 단말(11)은 제2-1 데이터 및 제3 데이터를 암호화 하고, 제2 사용자 단말(12)는 제2-2 데이터 및 제4 데이터를 암호화 할 수 있다. 이때, 제2-1 데이터 및 제2-2 데이터는 중복되는 부분이 있을 수 있으나, 이에 한정되는 것은 아니다. 또한, 제2-1 데이터 및 제2-2 데이터는 제1 사용자 단말(11)의 제1 데이터에 대한 지분율과 제2 사용자 단말(12)의 제2 데이터에 대한 지분율에 따라 결정될 수도 있음은 물론이다. 즉, 제2 데이터에 대한 더 적은 데이터를 가지고 있을수록 (해킹 등의 방법에 의해서) 제1 데이터를 재구성하는 것이 더 어려워 질 것이므로, 지분율에 따라 제2 데이터를 분할 할 수도 있다. 또는, 제2-1 데이터는 제2 데이터 중 분할 정보를 포함하고, 제2-2 데이터는 제2 데이터 중 셔플 정보를 포함할 수도 있다.In an embodiment, the first user terminal and the second user terminal 12 may obtain the second data including the division information and shuffle information by dividing the data, and encrypt only their own data. Specifically, the second data is divided into 2-1 data and 2-2 data, and the first user terminal 11 encrypts the 2-1 data and the third data, and the second user terminal 12 Can encrypt the 2-2 data and the 4th data. In this case, the 2-1 data and the 2-2 data may have overlapping parts, but are not limited thereto. In addition, the 2-1 data and the 2-2 data may be determined according to the share ratio of the first data of the first user terminal 11 and the share of the second data of the second user terminal 12, of course to be. That is, the less data for the second data, the more difficult it is to reconstruct the first data (by hacking, etc.), so the second data may be divided according to the stake. Alternatively, the 2-1 data may include segmentation information among the second data, and the 2-2 data may include shuffle information among the second data.

한편, 제1 데이터를 공유하는 사용자 단말이 복수개일 경우, 복수의 사용자 단말 중 특정 사용자 단말만 제2 데이터에 대한 정보를 수신할 수도 있다. 예를 들어, 제1 데이터를 공유하는 사용자 단말이 세개이고, 이중 두개의 단말만이 제2 데이터에 대한 암호화 데이터를 수신할 수 있다. 나머지 하나의 사용자 단말은 분할된 제1 데이터 중 적어도 하나의 분할 데이터만을 가지고 있을 수 있다.Meanwhile, when there are a plurality of user terminals sharing the first data, only a specific user terminal among the plurality of user terminals may receive information on the second data. For example, there are three user terminals sharing the first data, and only two of the terminals can receive the encrypted data for the second data. The other user terminal may have only at least one segmented data among the divided first data.

단계 S420에서, 서버(20)는 암호화된 데이터를 제2 사용자 단말(12)로 전송할 수 있다.In step S420, the server 20 may transmit the encrypted data to the second user terminal 12.

한편, 암호화 데이터를 복수의 사용자 단말이 공유하는 경우, 각각의 사용자 단말이 가지고 있는 암호화된 데이터는 블록체인에 저장될 수 있다. 각각의 사용자 단말은 블록체인 네트워크를 구성하는 복수의 노드 중 하나일 수 있으며, 암호화된 데이터는 블록체인의 트랜잭션 상에 기록되어 복수의 사용자 단말에서의 데이터 위조 및 변조를 방지할 수 있다. 이를 위해 각각의 노드는 블록 생성부를 포함할 수 있으며, 블록 생성부를 통해 블록체인에 저장된 데이터를 관리할 수 있다.On the other hand, when a plurality of user terminals share encrypted data, encrypted data possessed by each user terminal may be stored in the blockchain. Each user terminal may be one of a plurality of nodes constituting the blockchain network, and the encrypted data may be recorded on a transaction in the blockchain to prevent data forgery and tampering in multiple user terminals. To this end, each node may include a block generator, and through the block generator, data stored in the blockchain can be managed.

이때, 블록 생성부는 암호화된 데이터뿐만 아니라, 암호화된 데이터를 복호화 하여 서버(20)로 전송하기 위한 규약을 더 포함하여 블록 체인에 저장할 수 있다. 예를 들어, 특정 데이터를 가지고 있는 사용자 단말로부터 제2 데이터 및 제3 데이터를 요청받으면, 블록 생성부에 의해 블록 체인에 저장된 규약에 따라 복호화된 제2 데이터 및 제3 데이터를 서버(20)로 전송할 수 있다. 이때, 특정 데이터란 제1 데이터를 공유하는 사용자 단말들이 복호화를 위해 생성한 임의의 단말이고, 특정 데이터를 가지고 있는 사용자 단말이란, 제1 데이터를 공유하는 사용자 단말들로부터 특정 데이터를 수신한 단말(예를 들어 제4 사용자 단말(14))일 수 있다.At this time, the block generation unit may further store an encrypted data as well as a protocol for decrypting and transmitting the encrypted data to the server 20 in the blockchain. For example, when the second data and the third data are requested from the user terminal having specific data, the second data and the third data decrypted according to the rules stored in the blockchain by the block generation unit to the server 20 Can transmit. In this case, the specific data is an arbitrary terminal generated for decoding by user terminals sharing the first data, and a user terminal having specific data is a terminal receiving specific data from user terminals sharing the first data ( For example, it may be a fourth user terminal 14).

도 8은 본 발명의 일 실시예에 따른 복수의 사용자가 제1 데이터를 공유하는 경우의 데이터 보안 방법을 설명하기 위한 흐름도이다.8 is a flowchart illustrating a data security method when a plurality of users share first data according to an embodiment of the present invention.

단계 S430에서, 서버(20)는 제1 데이터 다운로드 요청을 수신할 수 있다.In step S430, the server 20 may receive a first data download request.

이때, 서버(20)는 제4 사용자 단말(14)로부터 제1 데이터를 다운로드하기 위한 요청을 수신할 수 있다. 일 실시예로, 제4 사용자 단말(14)가 제1 사용자 단말(11) 및 제2 사용자 단말(12)의 제1 데이터를 이용하여 작업할 작업자 단말인 경우, 서버(20)는 제4 사용자 단말(14)에게 제1 데이터 다운로드 요청을 수신할 수 있다. 또 다른 실시예로, 서버(20)가 여러 작업자 단말 중 제4 작업자 단말(14)이 작업을 수행하기에 적합하다고 판단한 경우, 서버(20) 자체가 제1 데이터 다운로드 요청을 발생시킬 수도 있다.At this time, the server 20 may receive a request to download the first data from the fourth user terminal 14. In one embodiment, when the fourth user terminal 14 is a worker terminal to work using the first data of the first user terminal 11 and the second user terminal 12, the server 20 is the fourth user The terminal 14 may receive a request for downloading the first data. In another embodiment, when the server 20 determines that the fourth worker terminal 14 is suitable for performing the work among the multiple worker terminals, the server 20 itself may generate a first data download request.

단계 S440에서, 서버(20)는 분할된 제1 데이터 중 제3 데이터 및 제4 데이터를 제외한 나머지 분할 데이터를 다운로드 할 수 있다In step S440, the server 20 may download the remaining divided data other than the third data and the fourth data among the divided first data.

다만, 이에 한정되는 것은 아니고, 외부 서버(21)은 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 제4 사용자 단말(14)로 직접 전송할 수도 있음은 물론이다.However, the present invention is not limited thereto, and the external server 21 may directly transmit the remaining divided data excluding the third data among the divided first data to the fourth user terminal 14.

단계 S450에서, 서버(20)는 제1 사용자 단말(11) 및 제2 사용자 단말(12)에게 각각 제2 데이터, 제3 데이터 및 제4 데이터를 요청할 수 있다.In step S450, the server 20 may request the second data, the third data, and the fourth data from the first user terminal 11 and the second user terminal 12, respectively.

단계 S460에서, 요청이 유효한 경우, 제1 사용자 단말(11) 및 제2 사용자 단말(12)은 암호화된 데이터를 복호화 할 수 있다.In step S460, if the request is valid, the first user terminal 11 and the second user terminal 12 may decrypt the encrypted data.

단계 S470에서, 제1 사용자 단말(11) 및 제2 사용자 단말(12)은 서버(20)로 암호화된 데이터를 전송할 수 있다. In step S470, the first user terminal 11 and the second user terminal 12 may transmit the encrypted data to the server 20.

단계 S480에서, 서버(20)는 수신한 제2 데이터 및 분할 데이터를 바탕으로 분할된 제1 데이터를 재구성 할 수 있다.In step S480, the server 20 may reconstruct the divided first data based on the received second data and divided data.

이 경우, 제1 사용자 단말(11) 또는 제2 사용자 단말 중 어느 하나의 단말로부터 암호화된 데이터를 수신하지 못하면, 제1 데이터 재구성이 불가능하므로, 공유된 제1 데이터를 더욱 안전하게 관리할 수 있다.In this case, if the encrypted data is not received from either the first user terminal 11 or the second user terminal, reconstruction of the first data is impossible, so that the shared first data can be more safely managed.

한편, 상술한 실시예에서는 서버(20)가 제1 데이터를 분할하고, 제2 데이터 및 제3 데이터를 암호화 하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 즉, 상술한 서버(20)의 동작은 제1 사용자 단말(11)에서 수행될 수 있음은 물론이다.Meanwhile, in the above-described embodiment, the server 20 has been described as dividing the first data and encrypting the second data and the third data, but is not limited thereto. That is, the operation of the above-described server 20 can be performed in the first user terminal 11, of course.

일 실시예로, 제1 사용자 단말(11)은 제1 데이터를 분할하고, 분할 정보 및 셔플 정보를 포함하는 제2 데이터를 생성할 수 있다. 제1 사용자 단말(11)은 서버(20)로 제3 데이터를 제외한 나머지 분할 데이터를 전송하고, 제2 데이터 및 제3 데이터를 암호화 할 수 있다. In one embodiment, the first user terminal 11 may divide the first data and generate second data including the division information and shuffle information. The first user terminal 11 may transmit the divided data excluding the third data to the server 20 and encrypt the second data and the third data.

제1 다운로드 요청을 서버(20)로부터 수신하면, 제1 사용자 단말은 요청의 유효성을 확인하고, 유효한 경우, 암호화된 데이터를 복호화 하여 획득한 제2 데이터 및 제3 데이터를 서버(20)로 전송할 수 있다.When the first download request is received from the server 20, the first user terminal verifies the validity of the request and, if valid, decrypts the encrypted data and transmits the obtained second data and third data to the server 20 Can.

서버(20)는 외부 서버(21)로부터 수신한 분할 데이터 및 제1 사용자 단말(11)로부터 수신한 제2 데이터 및 제3 데이터를 바탕으로 제1 데이터를 재구성 할 수 있다. The server 20 may reconstruct the first data based on the divided data received from the external server 21 and the second data and third data received from the first user terminal 11.

도 9는 일 실시 예에 따른 장치의 구성도이다.9 is a configuration diagram of an apparatus according to an embodiment.

프로세서(102)는 하나 이상의 코어(core, 미도시) 및 그래픽 처리부(미도시) 및/또는 다른 구성 요소와 신호를 송수신하는 연결 통로(예를 들어, 버스(bus) 등)를 포함할 수 있다.The processor 102 may include one or more cores (not shown) and a connection passage (for example, a bus) that transmits and receives signals to and from a graphic processing unit (not shown) and/or other components. .

한편, 프로세서(102)는 프로세서(102) 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시)을 더 포함할 수 있다. 또한, 프로세서(102)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템온칩(SoC: system on chip) 형태로 구현될 수 있다. On the other hand, the processor 102 is a RAM (Random Access Memory, not shown) and a ROM (Read-Only Memory) that temporarily and/or permanently stores signals (or data) processed inside the processor 102. , Not shown). In addition, the processor 102 may be implemented in the form of a system on chip (SoC) including at least one of a graphic processing unit, RAM, and ROM.

메모리(104)에는 프로세서(102)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리(104)에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다.The memory 104 may store programs (one or more instructions) for processing and controlling the processor 102. Programs stored in the memory 104 may be divided into a plurality of modules according to functions.

본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.The steps of a method or algorithm described in connection with an embodiment of the present invention may be implemented directly in hardware, a software module executed by hardware, or a combination thereof. The software modules may include random access memory (RAM), read only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, hard disk, removable disk, CD-ROM, or It may reside on any type of computer readable recording medium well known in the art.

본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 애플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.The components of the present invention may be implemented as a program (or application) to be executed in combination with a hardware computer, and stored in a medium. The components of the present invention may be implemented in software programming or software components, and similarly, embodiments include C, C++, including various algorithms implemented in a combination of data structures, processes, routines or other programming components. , Can be implemented in programming or scripting languages such as Java, assembler, etc. Functional aspects can be implemented with algorithms running on one or more processors.

이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다. The embodiments of the present invention have been described above with reference to the accompanying drawings, but those skilled in the art to which the present invention pertains may be implemented in other specific forms without changing the technical spirit or essential features of the present invention. You will understand. Therefore, it should be understood that the above-described embodiments are illustrative in all respects and not restrictive.

11: 제1 사용자 단말
12: 제2 사용자 단말
13: 제3 사용자 단말
14: 제4 사용자 단말
15: 제5 사용자 단말
16: 제6 사용자 단말
20: 서버
21: 외부 서버
11: first user terminal
12: second user terminal
13: third user terminal
14: fourth user terminal
15: fifth user terminal
16: 6th user terminal
20: Server
21: external server

Claims (1)

개별 암호키를 이용한 데이터 암호화 방법에 있어서,
서버가, 제1 사용자 단말로부터 제1 데이터를 획득하는 단계;
상기 서버가, 상기 획득된 제1 데이터를 분할하는 단계;
상기 서버가, 상기 분할된 데이터를 기 설정된 방법으로 셔플하는 단계;
상기 서버가, 상기 획득된 제1 데이터 분할에 대한 정보 및 상기 기 설정된 방법에 관한 정보를 포함하는 제2 데이터를 획득하는 단계;
상기 서버가, 상기 분할된 제1 데이터 중 적어도 하나의 제3 데이터 및 상기 제2 데이터를 제1 암호키를 이용하여 암호화 하는 단계;
상기 서버는, 상기 제1 사용자 단말로 상기 암호화된 데이터를 전송하는 단계;
상기 서버가, 상기 서버에 저장된 상기 제2 데이터 및 상기 적어도 하나의 제3 데이터를 삭제하는 단계; 및
상기 서버가, 상기 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 외부 서버로 전송하는 단계; 를 포함하고,
상기 서버는, 상기 제1 데이터를 다운로드하기 위한 요청을 수신하는 단계;
상기 외부 서버가, 상기 요청에 따라, 상기 분할된 제1 데이터 중 제3 데이터를 제외한 나머지 분할 데이터를 상기 서버로 전송 하는 단계;
상기 서버가, 상기 제1 사용자 단말로 상기 적어도 하나의 제3 데이터 및 상기 제2 데이터를 요청하는 단계;
상기 제1 사용자 단말이, 상기 외부 서버의 요청이 유효한 경우, 상기 암호화되어 저장된 데이터를 복호화 하는 단계;
상기 제1 사용자 단말이 상기 복호화된 제2 데이터 및 제3 데이터를 상기 외부 서버로 전송하는 단계; 및
상기 외부 서버는, 상기 제2 데이터를 바탕으로 분할된 제1 데이터를 재구성 하는 단계; 를 포함하고,
상기 분할하는 단계는,
상기 분할된 제1 데이터에 순차적으로 인덱스를 부가하되, 상기 분할된 제1 데이터 각각의 기 설정된 위치에 상기 인덱스가 부가되는 단계; 를 포함하고,
상기 셔플하는 단계는,
상기 인덱스가 부가된 분할된 데이터를 랜덤하게 셔플하고,
상기 제2 데이터는, 상기 분할된 제1 데이터들의 인덱스 정보를 포함하고,
상기 인덱스 정보는 상기 분할된 제1 데이터의 순서에 따라 부가된 인덱스를 정렬한 테이블 정보, 상기 분할된 제1 데이터 각각의 기 설정된 위치에 부가되기 위한 위치 정보 및 인덱스의 크기 정보를 포함하고,
상기 제2 데이터를 바탕으로 분할된 제1 데이터를 재구성 하는 단계는,
상기 위치 정보를 바탕으로, 상기 분할된 제1 데이터 각각으로부터 인덱스를 추출하는 단계;
상기 추출된 인덱스 및 상기 테이블 정보를 바탕으로 상기 분할된 제1 데이터를 재구성 하는 단계; 를 포함하고,
상기 제1 암호키를 이용하여 암호화 하는 단계는,
ARM 트러스트존 아키텍쳐의 보안 런타임 환경인 시큐어 월드 환경에서 암호화되고,
상기 제2 데이터 및 상기 제3 데이터는, 서로 다른 암호키에 의해 각각 암호화 되는 것을 특징으로 하는 개별 암호키를 이용한 데이터 암호화 방법.
In the data encryption method using an individual encryption key,
The server, obtaining the first data from the first user terminal;
Dividing the obtained first data by the server;
The server shuffling the divided data in a preset method;
Obtaining, by the server, second data including information on the obtained first data partition and information on the preset method;
Encrypting, by the server, at least one third data and the second data among the divided first data using a first encryption key;
The server, transmitting the encrypted data to the first user terminal;
Deleting, by the server, the second data and the at least one third data stored in the server; And
Transmitting, by the server, other divided data excluding the third data among the divided first data to an external server; Including,
The server comprises: receiving a request to download the first data;
Transmitting, by the external server, the remaining divided data excluding the third data among the divided first data to the server according to the request;
The server requesting the at least one third data and the second data to the first user terminal;
Decrypting the encrypted and stored data when the request of the external server is valid by the first user terminal;
Transmitting, by the first user terminal, the decrypted second data and third data to the external server; And
The external server, reconstructing the first data divided based on the second data; Including,
The dividing step,
Sequentially adding an index to the divided first data, and adding the index to a predetermined position of each of the divided first data; Including,
The shuffling step,
Shuffle the divided data to which the index is added,
The second data includes index information of the divided first data,
The index information includes table information in which indexes added according to the order of the divided first data, position information for adding to each of the divided first data, and size information of the index,
Reconstructing the first data divided based on the second data,
Extracting an index from each of the divided first data based on the location information;
Reconstructing the divided first data based on the extracted index and the table information; Including,
Encrypting using the first encryption key,
Encrypted in the secure world environment, the secure runtime environment of the ARM trustzone architecture,
The second data and the third data, each data encryption method using a separate encryption key, characterized in that each encrypted by a different encryption key.
KR1020190105240A 2019-08-27 2019-08-27 Method for encrypting data using individual encryption key KR102134848B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190105240A KR102134848B1 (en) 2019-08-27 2019-08-27 Method for encrypting data using individual encryption key

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190105240A KR102134848B1 (en) 2019-08-27 2019-08-27 Method for encrypting data using individual encryption key

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020190015227A Division KR102023038B1 (en) 2019-02-08 2019-02-08 Data security methods and systems

Publications (1)

Publication Number Publication Date
KR102134848B1 true KR102134848B1 (en) 2020-07-16

Family

ID=71839598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190105240A KR102134848B1 (en) 2019-08-27 2019-08-27 Method for encrypting data using individual encryption key

Country Status (1)

Country Link
KR (1) KR102134848B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171207A (en) * 2002-11-19 2004-06-17 Nec Corp Data protection/storage method and server
KR20130022613A (en) * 2011-08-25 2013-03-07 주식회사 팬택 Apparatus and method for securing contents in cloud computing
KR101252549B1 (en) 2008-11-21 2013-04-08 한국전자통신연구원 Method for safely distributing encoding/decoding programs and a symmetric key and Devices for partitioning and injecting them for safe distribution in a security domain environment
JP2015517685A (en) * 2012-05-29 2015-06-22 ▲ホア▼▲ウェイ▼技術有限公司 Method, apparatus and system for implementing media data processing
KR20190010251A (en) * 2017-07-21 2019-01-30 건국대학교 산학협력단 A method and apparatus of lpes for security enhancement in cloud storage transport phase

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171207A (en) * 2002-11-19 2004-06-17 Nec Corp Data protection/storage method and server
KR101252549B1 (en) 2008-11-21 2013-04-08 한국전자통신연구원 Method for safely distributing encoding/decoding programs and a symmetric key and Devices for partitioning and injecting them for safe distribution in a security domain environment
KR20130022613A (en) * 2011-08-25 2013-03-07 주식회사 팬택 Apparatus and method for securing contents in cloud computing
JP2015517685A (en) * 2012-05-29 2015-06-22 ▲ホア▼▲ウェイ▼技術有限公司 Method, apparatus and system for implementing media data processing
KR20190010251A (en) * 2017-07-21 2019-01-30 건국대학교 산학협력단 A method and apparatus of lpes for security enhancement in cloud storage transport phase

Similar Documents

Publication Publication Date Title
CN109936626B (en) Method, node and storage medium for implementing privacy protection in block chain
US9171145B2 (en) Protecting cryptographic secrets using file system attributes
EP2267628B1 (en) Token passing technique for media playback devices
CN110032885B (en) Method, node and storage medium for implementing privacy protection in block chain
CN108259171B (en) Shader file protection method and device
US10122713B2 (en) Method and device for the secure authentication and execution of programs
CN110881063B (en) Storage method, device, equipment and medium of private data
US20170104736A1 (en) Secure data storage on a cloud environment
CN110020549B (en) Method, node and storage medium for implementing privacy protection in block chain
CN110020856B (en) Method, node and storage medium for realizing mixed transaction in block chain
US20080229115A1 (en) Provision of functionality via obfuscated software
CN109040134B (en) Information encryption design method and related device
CN112148755A (en) Private data access method, device, equipment and system based on secret sharing
CN111612462A (en) Method, node and storage medium for implementing privacy protection in block chain
US11394698B2 (en) Multi-party computation (MPC) based authorization
US20190171841A1 (en) Method and system for encrypting files and storing the encrypted files in a storage file system
CN108256343B (en) Encryption method and device and decryption method and device of Shader file
CN110008737B (en) Method, node and storage medium for implementing privacy protection in block chain
CN117240625B (en) Tamper-resistant data processing method and device and electronic equipment
CN108256342B (en) Encryption method and device and decryption method and device of Shader file
KR102023038B1 (en) Data security methods and systems
KR102134848B1 (en) Method for encrypting data using individual encryption key
KR102134849B1 (en) Method for encrypting data according to data sharing using by changing encryption key
KR102134850B1 (en) Data transmission method using data segmentation
KR102134852B1 (en) Data reconstruction method using a combination of partitioned data

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant