KR102515367B1 - 블록체인 기반 데이터 공유 방법 - Google Patents

블록체인 기반 데이터 공유 방법 Download PDF

Info

Publication number
KR102515367B1
KR102515367B1 KR1020230008852A KR20230008852A KR102515367B1 KR 102515367 B1 KR102515367 B1 KR 102515367B1 KR 1020230008852 A KR1020230008852 A KR 1020230008852A KR 20230008852 A KR20230008852 A KR 20230008852A KR 102515367 B1 KR102515367 B1 KR 102515367B1
Authority
KR
South Korea
Prior art keywords
value
encryption key
key
view
data
Prior art date
Application number
KR1020230008852A
Other languages
English (en)
Inventor
전하진
김민수
나인주
Original Assignee
주식회사 그래파이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 그래파이 filed Critical 주식회사 그래파이
Priority to KR1020230008852A priority Critical patent/KR102515367B1/ko
Application granted granted Critical
Publication of KR102515367B1 publication Critical patent/KR102515367B1/ko

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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)
  • Power Engineering (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따른 뷰 생성자 단말(view constructor terminal)의 데이터 공유 플랫폼 관리 방법(data sharing platform management method)은 데이터가 제1 암호키(encryption key)를 이용하여 암호화된 암호화 데이터(encrypted data)를 클라우드(cloud)에 업로드하는 동작; 상기 제1 암호키가 제2 암호키를 이용하여 암호화된 제1 값 및 상기 클라우드에서 상기 암호화 데이터에 접근하기 위한 제1 경로(path)를 키-값 쌍(key-value pair)의 형태로 블록체인(blockchain)에 업로드하는 동작; 상기 제1 경로를 이용하여 상기 제1 값을 상기 블록체인으로부터 획득하는 동작; 상기 제1 값을 제3 암호키를 이용하여 복호화함으로써 상기 제1 암호키를 획득하는 동작; 상기 제1 경로 및 상기 제1 암호키를 제4 암호키를 이용하여 암호화함으로써 제2 값을 획득하는 동작; 상기 데이터의 공유를 위한 뷰(view)에 접근 가능한 뷰 참여자 단말의 목록 및 상기 제4 암호키를 상기 제2 암호키를 이용하여 암호화함으로써 제3 값을 획득하는 동작; 및 상기 제2 값 및 상기 제3 값 각각을 대응하는 키와 함께 키-값 쌍의 형태로 상기 블록체인에 업로드함으로써 상기 뷰를 생성하는 동작을 포함할 수 있다.

Description

블록체인 기반 데이터 공유 방법{BLOCKCHAIN-BASED DATA SHARING METHOD}
아래 개시는 블록체인 기반 데이터 공유 방법에 관한 것이다.
개인 정보(예: 전자 건강 기록(electronic health record))를 안전하게 공유하기 위한 블록체인 기반 데이터 공유 방법들이 존재한다. 다양한 계층의 사람들이 데이터를 서로 공유하기 위해서, 별도의 보안 채널(secure channel) 없이 일반적인 클라우드 저장소(cloud storage)를 이용하여 데이터를 공유할 수 있는 방법이 필요할 수 있다.
위에서 설명한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 본 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.
일 실시예는 암호키 및 블록체인을 이용하여 데이터를 공유함으로써 보안 채널 없이 일반적인 클라우드 저장소를 이용하여 데이터를 공유하는 방법을 제공할 수 있다.
일 실시예는 암호키 및 블록체인을 이용하여 데이터를 공유함으로써 뷰에 대한 접근 권한을 사용자에게 손쉽게 부여하고, 뷰에 대한 접근 권한을 사용자로부터 손쉽게 회수할 수 있는 방법을 제공할 수 있다.
다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.
일 실시예에 따른 뷰 생성자 단말(view constructor terminal)의 데이터 공유 플랫폼 관리 방법(data sharing platform management method)은 데이터가 제1 암호키(encryption key)를 이용하여 암호화된 암호화 데이터(encrypted data)를 클라우드(cloud)에 업로드하는 동작; 상기 제1 암호키가 제2 암호키를 이용하여 암호화된 제1 값 및 상기 클라우드에서 상기 암호화 데이터에 접근하기 위한 제1 경로(path)를 키-값 쌍(key-value pair)의 형태로 블록체인(blockchain)에 업로드하는 동작; 상기 제1 경로를 이용하여 상기 제1 값을 상기 블록체인으로부터 획득하는 동작; 상기 제1 값을 제3 암호키를 이용하여 복호화함으로써 상기 제1 암호키를 획득하는 동작; 상기 제1 경로 및 상기 제1 암호키를 제4 암호키를 이용하여 암호화함으로써 제2 값을 획득하는 동작; 상기 데이터의 공유를 위한 뷰(view)에 접근 가능한 뷰 참여자 단말의 목록 및 상기 제4 암호키를 상기 제2 암호키를 이용하여 암호화함으로써 제3 값을 획득하는 동작; 및 상기 제2 값 및 상기 제3 값 각각을 대응하는 키와 함께 키-값 쌍의 형태로 상기 블록체인에 업로드함으로써 상기 뷰를 생성하는 동작을 포함할 수 있다.
상기 제1 암호키는 상기 데이터의 암호화 및 상기 암호화 데이터의 부호화를 위한 제1 대칭키(symmetric key)를 포함할 수 있다.
상기 제2 암호키는 상기 뷰의 생성자의 제1 공개키(public key)를 포함할 수 있다.
상기 제3 암호키는 상기 제1 공개키에 대응하는 제1 비밀키(private key)를 포함할 수 있다.
상기 제4 암호키는 상기 제1 대칭키의 암호화 및 암호화된 제1 대칭키의 부호화를 위한 제2 대칭키를 포함할 수 있다.
상기 방법은 상기 뷰에 대한 접근 권한(access right)을 획득하고자 하는 플랫폼 참여자(platform participant)의 제2 공개키에 기초하여 상기 플랫폼 참여자의 단말에 상기 접근 권한을 부여하는 동작을 더 포함할 수 있다.
상기 부여하는 동작은 상기 제3 값에 대응하는 키(key)를 이용하여 상기 블록체인으로부터 상기 제3 값을 획득하는 동작; 상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작, 상기 목록에 상기 플랫폼 참여자를 추가함으로써 상기 목록을 갱신하는 동작; 갱신된 목록을 상기 제2 암호키를 이용하여 암호화하고, 상기 제4 암호키를 상기 제2 공개키를 이용하여 암호화함으로써 제4 값을 획득하는 동작; 및 상기 블록체인에 저장된 상기 제3 값을 상기 제4 값으로 교체하는 동작을 포함할 수 있다.
상기 방법은 상기 제4 암호키와 다른 제5 암호키를 이용하여 상기 제1 경로 및 상기 제1 암호키를 암호화함으로써 상기 목록 중에서 하나 이상의 뷰 참여자 단말로부터 상기 뷰에 대한 접근 권한을 회수하는 동작을 더 포함할 수 있다.
상기 회수하는 동작은 상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작; 상기 제3 값을 상기 제3 암호키를 이용하여 부호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작; 상기 제2 값을 상기 제4 암호키를 이용하여 부호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작; 상기 제1 경로 및 상기 제1 암호키를 상기 제5 암호키를 이용하여 암호화함으로써 제5 값을 획득하는 동작; 상기 제5 암호키를 상기 목록 중에서 상기 하나 이상의 뷰 참여자 단말을 제외한 나머지 뷰 참여자 단말 각각의 제3 공개키를 이용하여 암호화함으로써 제6 값을 획득하는 동작; 상기 블록체인에 저장된 상기 제2 값을 상기 제5 값으로 교체하는 동작; 및 상기 블록체인에 저장된 상기 제3 값을 상기 제6 값으로 교체하는 동작을 포함할 수 있다.
일 실시예에 따른 뷰 참여자 단말(view participant terminal)의 데이터 공유 플랫폼 관리 방법(data sharing platform management method)은 상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 제2 값 및 상기 제3 값을 상기 블록체인으로부터 획득하는 동작; 상기 제3 값을 뷰 참여자의 비밀키를 이용하여 복호화함으로써 상기 제4 암호키를 획득하는 동작; 상기 제4 암호키를 이용하여 상기 제2 값을 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작; 상기 제1 경로를 이용하여 상기 클라우드로부터 상기 암호화 데이터를 획득하는 동작; 및 상기 암호화 데이터를 상기 제1 암호키를 이용하여 복호화함으로써 상기 데이터를 획득하는 동작을 포함할 수 있다.
상기 방법은 상기 비밀키에 대응되는 상기 뷰 참여자의 공개키를 이용하여 상기 뷰 참여자의 참여자 데이터를 상기 뷰에 추가하는 동작을 더 포함할 수 있다.
상기 추가하는 동작은 상기 참여자 데이터를 대칭키(symmetric key)를 이용하여 암호화함으로써 생성된 암호화된 참여자 데이터(encrypted participant data)를 클라우드에 업로드하는 동작; 상기 대칭키를 상기 공개키를 이용하여 암호화함으로써 생성된 제7 값 및 상기 클라우드에서 상기 암호화된 참여자 데이터에 접근하기 위한 제2 경로를 키-값 쌍의 형태로 상기 블록체인에 업로드하는 동작; 상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작; 상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작; 상기 제2 값을 상기 제4 암호키를 이용하여 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작; 상기 제1 경로, 상기 제2 경로, 상기 제1 암호키, 및 상기 대칭키를 상기 제4 암호키로 암호화함으로써 제8 값을 획득하는 동작; 및 상기 블록체인에 저장된 상기 제2 값을 상기 제8 값으로 교체하는 동작을 포함할 수 있다.
상기 방법은 상기 뷰에서 상기 데이터를 제거하는 동작을 더 포함할 수 있다.
상기 제거하는 동작은 상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작; 상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작; 상기 제2 값을 상기 제4 암호키를 이용하여 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작; 상기 제1 경로 중에서 제거 대상 데이터에 연관된 하나 이상의 경로를 제외한 나머지 경로 및 상기 제1 암호키 중에서 상기 제거 대상 데이터에 연관된 하나 이상의 암호키를 제외한 나머지 암호키를 상기 제4 암호키를 이용하여 암호화함으로써 제9 값을 획득하는 동작; 및 상기 블록체인에 저장된 상기 제2 값을 상기 제9 값으로 교체하는 동작을 포함할 수 있다.
도 1은 전자 기록을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 데이터 공유 플랫폼을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 데이터 공유 플랫폼을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 클라우드 및 블록체인에 데이터를 업로드하는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 뷰 생성 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 뷰 접근 권한 부여 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 뷰 접근 권한 회수 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 뷰 기반 데이터 다운로드 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 뷰에 데이터를 추가하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 뷰로부터 데이터를 제거하는 방법을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 뷰 생성자 장치의 동작을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 뷰 참여자 장치의 동작을 설명하기 위한 도면이다.
도 13은 일 실시예에 따른 플랫폼 참여자 장치의 개략적인 블록도이다.
도 14는 일 실시예에 따른 뷰 생성자 장치의 개략적인 블록도이다.
도 15는 일 실시예에 따른 뷰 참여자 장치의 개략적인 블록도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 예를 들어, '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 또한, '~부'는 하나 이상의 프로세서를 포함할 수 있다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 전자 기록을 설명하기 위한 도면이다.
도 1을 참조하면 정보(예: 개인 정보)는 종이 기반 기록(11) 및 전자 기록(16)(예: 전자 건강 기록(electronic health record))의 형태(format)으로 기록될 수 있다.
전자 기록(16)은 종이 기반 기록에 비해 취급이 편리하고 접근성이 높을 수 있다. 다만, 전자 기록(16)은 데이터 유출과 같은 보안 문제를 야기할 수 있다. 보안성을 강화하고, 전자 기록(16)을 다양한 객체들 간에 공유하기 위해 블록체인(blockchain) 기반 데이터 공유 플랫폼(data sharing platform)이 이용될 수 있다. 예를 들어, 환자의 전자 건강 기록은 환자, 병원, 연구소, 바이오뱅크(biobank), 데이터 생산자(data producer), 및 심의기관(예: 기관생명윤리위원회(institutional review board)(IRB))과 같은 다양한 객체들 간에 안전하게 공유될 필요가 있다.
도 2 및 도 3은 일 실시예에 따른 데이터 공유 플랫폼을 설명하기 위한 도면이다.
도 2 및 도 3을 참조하면, 일 실시예에 따른 데이터 공유 플랫폼(200)은 플랫폼 참여자 단말(22), 클라우드(24), 및 블록체인(26)을 포함할 수 있다.
플랫폼 참여자 단말(22)은 뷰 참여자 단말(22-1) 및 뷰 생성자 단말(22-2)을 포함할 수 있다. 예를 들어, 플랫폼 참여자 단말(22)는 뷰를 생성함으로써 뷰 생성자 단말(22-2)의 자격 및 뷰 참여자 단말(22-1)의 자격을 획득할 수 있다. 다른 예를 들어, 플랫폼 참여자 단말(22)은 다른 플랫폼 참여자 단말(미도시)이 생성한 뷰에 대한 접근 권한을 획득함으로써 뷰 참여자 단말(22-1)의 자격을 획득할 수 있다.
플랫폼 참여자 단말(22)은 클라우드(24) 및 블록체인(26) 각각에 다양한 형태의 데이터를 업로드 할 수 있다. 예를 들어, 플랫폼 참여자 단말(22)은 데이터를 암호화하고, 암호화 데이터(encrypted data)(31)를 클라우드(24)에 업로드할 수 있다.
플랫폼 참여자 단말(22)은 클라우드(31)에서 저장된 데이터(예: 암호화 데이터(31))에 접근하기 위한 경로 및 경로에 대응되는 키를 키(35)-값(37) 쌍(key-value pair)의 형태로 블록체인(26)에 업로드할 수 있다. 아래 표는 데이터 공유 플랫폼(220)을 설명하기 위해 본 명세서에서 사용된 표기법(notation)을 나타낸다.
[표 1]
Figure 112023008186620-pat00001
클라우드(24)에는 데이터가 저장될 수 있다. 예를 들어, 클라우드(24)에는 전자 건강 기록(예: 엑스레이(X-ray) 이미지, 수술 영상, 및/또는 유전체 서열)이 암호화되어 생성된 암호화 데이터(31)가 저장될 수 있다. 클라우드(24)에 저장된 암호화 데이터(31)에 접근하기 위해서는 경로(path)(예: 데이터 접근 경로)가 필요할 수 있다.
블록체인(26)에는 클라우드(24)에서 저장된 암호화 데이터(31)에 접근하기 위한 값(37)(예: 경로) 및 값(37)에 대응하는 키(35)가 키-값 쌍의 형태로 저장될 수 있다.
도 4는 일 실시예에 따른 클라우드 및 블록체인에 데이터를 업로드하는 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 일 실시예에 따르면, 동작 410 내지 동작 440은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.
동작 410에서, 플랫폼 참여자 단말(22)은 데이터 암호키(data encryption key)를 이용하여 데이터({data})(예: 전자 건강 기록)를 암호화할 수 있다. 예를 들어, 플랫폼 참여자 단말(22)은 대칭키(symmetric key)(KD)를 이용하여 데이터({data})를 암호화할 수 있다.
동작 420에서, 플랫폼 참여자 단말(22)은 암호화 데이터(41)(예: 도 3의 암호화 데이터(31))를 클라우드(24)에 업로드할 수 있다. 플랫폼 참여자 단말(22)은 복수의 데이터(미도시)를 암호화하고, 복수의 암호화 데이터(미도시)를 클라우드(24)에 업로드할 수도 있다. 복수의 암호화 데이터(미도시)는 하나의 클라우드(24)에 업로드 될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 복수의 암호화 데이터(미도시) 각각은 서로 다른 클라우드들(미도시)에 업로드 될 수도 있다.
동작 430에서, 플랫폼 참여자 단말(22)은 클라우드(43)으로부터 클라우드(24)에 저장된 암호화 데이터(41)에 접근하기 위한 경로({path})(예: 도 3의 경로(33))를 획득할 수 있다.
동작 440에서, 플랫폼 참여자 단말(22)은 암호키를 이용하여 데이터 암호화(예: 동작 410의 데이터 암호화)에 사용된 데이터 암호키(KD)를 암호화하고, 암호화된 결과 값(예: 암호문)을 경로({path})와 함께 키-값 쌍(45)의 형태로 블록체인(26)에 업로드할 수 있다. 예를 들어, 플랫폼 참여자 단말(22)은 플랫폼 참여자(A)의 공개키(PubKA)를 이용하여 데이터 암호키(KD)를 암호화할 수 있다.
키-값 쌍(45)의 값은 데이터({data})의 해시 값을 더 포함할 수 있다. 데이터 해시 값은 데이터({data})의 무결성을 보장하기 위해 사용될 수 있다. 데이터 해시값은 암호화된 데이터 암호키에 연결될 수 있다. 본 명세서에서 구분자(
Figure 112023028480089-pat00031
)는 연접(concatenation)을 나타낼 수 있다. 다만, 본 명세서에서 설명되는 구분자(
Figure 112023028480089-pat00032
)를 이용한 데이터 표현 방식은 설명을 위한 일 예이고, 데이터 표현 방식이 본 발명의 권리 범위를 제한하는 것으로 해석되어서는 안 된다.
플랫폼 참여자 단말(22)은 경로({path})에 대한 암호화를 수행할 수도 있다. 예를 들어, 플랫폼 참여자 단말(22)은 암호키(예: 플랫폼 참여자(A)의 공개키(PubKA))를 이용하여 경로({path}를 암호화할 수 있다. 경로({path})에 대한 암호화가 수행된 경우, 키-값 쌍(45)는 경로({path}) 대신 암호화된 경로(미도시)를 포함할 수 있다.
도 5는 일 실시예에 따른 뷰 생성 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예에 따르면, 동작 510 내지 동작 540은 순차적으로 수행될 수 있지만 이에 한정되지 않는다. 예를 들어, 둘 이상의 동작이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해, 플랫폼 참여자(A)가 뷰를 생성하는 경우를 예로 들어 설명하도록 한다.
동작 510에서, 뷰 생성자 단말(52)(예: 도 2의 뷰 생성자 단말(22-2))은 경로({path1}~{pathn})을 이용하여 뷰에 포함시킬 데이터에 대한 정보(예: 데이터 암호키, 데이터 해시 값)를 블록체인(26)에서 검색할 수 있다. 본 명세서에서 뷰(view)는 데이터에 대한 접근 권한을 가진 사용자(예: 사용자 단말)에게만 데이터를 공유하기 위한 하나 이상의 기본 데이터로부터 유도되는 가상 데이터 셋을 의미할 수 있다.
뷰 생성자 단말(52)은 뷰 생성자 단말(52)에 의해 클라우드(예: 도 4의 클라우드(24))에 업로드된 데이터를 뷰에 포함시킬 수 있다. 뷰 생성자 단말(52)은 뷰 생성자 단말(52)에 의해 클라우드(24)에 업로드된 데이터에 대한 접근 경로({path1}~{pathn})를 가지고 있을 수 있다.
동작 520에서, 뷰 생성자 단말(52)은 블록체인(26)으로부터 경로({path1}~{pathn})에 대응하는 키-값 쌍의 값(51)을 획득할 수 있다. 값(51)은 암호화된 데이터 암호키 및/또는 데이터 해시 값을 포함할 수 있다.
동작 530에서, 뷰 생성자 단말(52)은 암호키를 이용하여 값(51)을 복호화(decryption)함으로써 데이터 암호키(KD)를 획득할 수 있다. 예를 들어, 데이터 암호키(KD)가 뷰 생성자(A)의 공개키(PubKA)를 이용하여 암호화된 경우, 뷰 생성자 단말(52)은 공개키(PubKA)에 대응되는 뷰 생성자(A)의 비밀키(PrivKA)(또는 개인키)를 이용하여 값(51)을 복호화 할 수 있다.
동작 540에서, 뷰 생성자 단말(52)은 블록체인(26)에 제1 키-값 쌍(53) 및 제2 키-값 쌍(55)을 업로드함으로써 뷰를 생성할 수 있다. 뷰 생성자 단말(52)은 뷰 암호키(KV)(예: 대칭키)를 이용하여 데이터의 경로({path1}~{pathn}), 데이터 암호키(KD)(예: 대칭키), 및/또는 데이터 해시 값을 암호화함으로써 제2 키-값 쌍(55)의 값을 생성할 수 있다. 뷰 생성자 단말(52)은 암호키를 이용하여 뷰 참여자 단말(예: 도 2의 뷰 참여자 단말의 목록({user:A}) 및/또는 뷰 암호키(KV)를 암호화함으로써 제1 키-값 쌍(53)의 값을 생성할 수 있다. 예를 들어, 뷰 생성자 단말(52)은 뷰 생성자(A)의 공개키(PubKA)를 이용하여 뷰 참여자 단말의 목록({user:A}) 및/또는 뷰 암호키(KV)를 암호화할 수 있다. 다른 예를 들어, 뷰 생성자 단말(52)은 공개키(PubKA)를 이용하여 뷰 암호키(KV)를 암호화하고, 뷰 암호키(KV)를 이용하여 뷰 참여자 단말의 목록({user:A})을 암호화할 수 있다. 공개키(PubKA)를 이용하여 뷰 참여자 단말의 목록({user:A})을 암호화하는 경우, 뷰 생성자 단말(52)만이 뷰 참여자 단말의 목록({user:A})을 확인할 수 있지만, 대칭키(KV)를 이용하여 뷰 참여자 단말의 목록({user:A})을 암호화하는 경우, 뷰 생성자 단말(52)뿐만 아니라 다른 뷰 참여자 단말 또한 뷰 참여자 단말의 목록({user:A})을 확인할 수 있다.
일 실시예에 따르면, 키-값 쌍들(53, 55)의 키들은 키-값 쌍들(53, 55)의 값들에 대응하는 고유 값을 포함할 수 있다. 예를 들어, 키-값 쌍들(53, 55)의 키는 뷰 생성자의 식별자 및/또는 뷰의 이름을 포함할 수 있다.
도 6은 일 실시예에 따른 뷰 접근 권한 부여 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 일 실시예에 따르면, 동작 610 내지 동작 650은 순차적으로 수행될 수 있지만 이제 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해, 플랫폼 참여자(A)에 의해 생성된 뷰에 대한 접근 권한을 플랫폼 참여자(B)에게 부여하는 경우를 예로 들어 설명하도록 한다.
동작 610에서, 뷰 생성자(A)의 단말(52) (예: 도 2의 뷰 생성자 단말(22-2))은 뷰에 대한 접근 권한을 얻고자 하는 플랫폼 참여자(B)의 공개키(PubKB)를 플랫폼 참여자(B)의 단말(22)로부터 획득할 수 있다.
동작 620에서, 뷰 생성자 단말(52)은 블록체인(26)에 저장된 키-값 쌍의 키(61)를 이용하여 뷰에 대한 정보(예: 뷰 암호키(KV) 및/또는 뷰 참여자 단말의 목록({user:A}))를 검색할 수 있다. 뷰 생성자 단말(52)은 키(61)에 대한 정보를 가지고 있으며, 키(61)를 블록체인(26)에서 정보를 검색하기 위한 검색어로 이용할 수 있다.
동작 630에서, 뷰 생성자 단말(52)은 블록체인(26)로부터 키(61)에 대응하는 키-값 쌍의 값(63)을 획득할 수 있다. 값(63)은 뷰 암호키(KV) 및 뷰 참여자 단말의 목록({user:A})이 암호화된 값을 포함할 수 있다.
동작 640에서, 뷰 생성자 단말(52)은 암호키를 이용하여 값(63)을 복호화함으로써 뷰 참여자 단말의 목록({user:A}) 및/또는 뷰 암호키(KV)를 획득할 수 있다. 예를 들어, 값(63)이 뷰 생성자(A)의 공개키(PubKA)를 이용하여 암호화된 경우, 뷰 생성자 단말(52)은 공개키(PubKA)에 대응하는 뷰 생성자(A)의 비밀키(PrivKA)를 이용하여 값(63)을 복호화 할 수 있다.
동작 650에서, 뷰 생성자 단말(52)은 키-값 쌍(65)을 블록체인(26)에 업로드함으로써 원장(ledger)을 업데이트하고, 플랫폼 참여자(B)의 단말(22)에 뷰 접근 권한을 부여할 수 있다. 키-값 쌍(65)이 블록체인(26)에 업로드됨으로써, 키(61)에 대응하는 값(63)은 값(65-1)으로 교체될 수 있다.
뷰 생성자 단말(52)은 뷰 참여자 목록({user:A})에 플랫폼 참여자 단말(22)를 추가하고, 업데이트된 뷰 참여자 목록({user:A}
Figure 112023008186620-pat00002
{user:B})을 암호키(예: 공개키(PubKA) 또는 뷰 암호키(KV))를 이용하여 암호화할 수 있다. 뷰 생성자 단말(52)은 뷰 암호키(KV)(예: 대칭키)를 암호키(예: 뷰 생성자(A)의 공개키(PubKA) 및 플랫폼 참여자(B)의 공개키(PubKB))를 이용하여 암호화할 수 있다.
일 실시예에 따르면, 뷰 생성자 단말(52) 및 뷰 참여자 단말(미도시)은 뷰 생성자 단말(52)이 아닌 뷰 참여자 단말(미도시)에 의해 뷰에 대한 접근 권한을 수정하는 것을 방지할 수 있다. 예를 들어, 뷰 생성자 단말(52) 또는 뷰 참여자 단말(미도시)은 뷰에 대한 접근 권한을 부여하기 위한 키-값 쌍(예: 키-값 쌍(65))이 뷰 생성자 단말(52)이 아닌 뷰 참여자 단말(미도시)에 의해 블록체인(26)에 업로드되는 것을 감지 및 차단할 수 있다.
도 7은 일 실시예에 따른 뷰 접근 권한 회수 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 일 실시예에 따르면, 동작 710 내지 760은 순차적으로 수행될 수 있지만, 이에 한정되지 않는다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해, 뷰 생성자(A)의 단말(52)에 의해 생성된 뷰에 대한 접근 권한을 가지는 뷰 참여자들(A, B, C)이 존재하고, 뷰 참여자(C)의 단말(미도시)로부터 접근 권한을 회수하는 경우를 예로 들어 설명하도록 한다.
동작 710에서, 뷰 생성자 단말(52)(예: 도 2의 뷰 생성자 단말(22-2))은 블록체인(26)에 저장된 키-값 쌍의 키(71)를 이용하여 뷰에 대한 정보(예: 뷰 암호키(KV) 및/또는 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00003
{user:B}
Figure 112023008186620-pat00004
{user:C}))를 검색할 수 있다.
동작 720에서, 뷰 생성자 단말(52)은 블록체인(26)으로부터 키(71)에 대응하는 키-값 쌍의 값(72)을 획득할 수 있다. 값(72)은 뷰 암호키(KV) 및 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00005
{user:B}
Figure 112023008186620-pat00006
{user:C})이 암호화된 값을 포함할 수 있다.
동작 730에서, 뷰 생성자 단말(52)은 암호키를 이용하여 값(72)을 복호화함으로써 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00007
{user:B}
Figure 112023008186620-pat00008
{user:C}) 및/또는 뷰 암호키(KV)를 획득할 수 있다. 예를 들어, 값(72)에 포함된 암호키(KV)가 뷰 참여자들(A, B, C) 각각의 공개키(PubKA, PubKB, PubKC)를 이용하여 암호화된 경우, 뷰 생성자 단말(52)은 공개키(PubKA)에 대응하는 뷰 생성자(A)의 비밀키(PrivKA)를 이용하여 값(72)을 복호화 할 수 있다.
동작 740에서, 뷰 생성자 단말(52)은 블록체인(26)에 저장된 키-값 쌍의 키(73)를 이용하여 뷰에 포함된 데이터({data1}~{datan})에 대한 정보(예: 데이터 경로, 데이터 암호키, 및/또는 데이터 해시 값)를 검색할 수 있다.
동작 750에서, 뷰 생성자 단말(52)은 블록체인(26)으로부터 키(73)에 대응하는 키-값 쌍의 값(74)을 획득할 수 있다. 값(74)은 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~ KDn)(예: 대칭키), 및/또는 데이터 해시 값이 암호화된 값을 포함할 수 있다.
동작 760에서, 뷰 생성자 단말(52)은 뷰 암호키(KV)(예: 동작 730에서 획득된 뷰 암호키(KV))를 이용하여 값(74)을 복호화함으로써 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~ KDn), 및/또는 데이터 해시 값을 획득할 수 있다.
동작 770에서, 뷰 생성자 단말(52)은 제1 키-값 쌍(75) 및 제2 키-값 쌍(76)을 블록체인(27)에 업로드함으로써 원장을 업데이트하고, 뷰 참여자(C)의 단말(미도시)로부터 뷰에 대한 접근 권한을 회수할 수 있다. 제1 키-값 쌍(75) 및 제2 키-값 쌍(76)이 블록체인(27)에 업로드됨으로써, 키(71)에 대응하는 값(72)은 제1 키-값 쌍(75)에 포함된 값으로 교체되고, 키(72)에 대응하는 값(74)은 제2 키-값 쌍(76)에 포함된 값으로 교체될 수 있다.
뷰 생성자 단말(52)은 이전 뷰 암호키(KV)와는 다른 뷰 암호키(KV')를 이용하여 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~KDn), 및/또는 데이터 해시 값을 암호화함으로써 제2 키-값 쌍(76)을 생성할 수 있다. 뷰 생성자 단말(52)은 뷰 참여자(C)의 단말이 제외된 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00009
{user:B})을 암호키(예: 공개키(PubKA) 또는 뷰 암호키(KV'))를 이용하여 암호화하고, 뷰 암호키(KV')를 암호키(예: 뷰 참여자(A)의 공개키(PubKA) 및 뷰 참여자(B)의 공개키(PubKB))를 이용하여 암호화함으로써 제1 키-값 쌍(75)을 생성할 수 있다. 뷰 참여자(C)는 뷰 암호키(KV')를 획득할 수 없으므로, 뷰 참여자(C)의 단말(미도시)은 뷰에 접근할 수 없다.
일 실시예에 따르면, 뷰 생성자 단말(52) 및 뷰 참여자 단말(미도시)은 뷰 생성자 단말(52)이 아닌 뷰 참여자 단말(미도시)에 의해 뷰에 대한 접근 권한을 수정하는 것을 방지할 수 있다. 예를 들어, 뷰 생성자 단말(52) 또는 뷰 참여자 단말(미도시)은 뷰에 대한 접근 권한을 회수하기 위한 키-값 쌍(예: 키-값 쌍들(75, 76))이 뷰 생성자 단말(52)이 아닌 뷰 참여자 단말(미도시)에 의해 블록체인(26)에 업로드되는 것을 감지 및 차단할 수 있다.
도 8은 일 실시예에 따른 뷰 기반 데이터 다운로드 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 일 실시예에 따르면, 동작 810 내지 860은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해, 플랫폼 참여자(A)가 뷰 생성자인 동시에 뷰 참여자이고, 플랫폼 참여자(B)가 뷰 참여자이고, 플랫폼 참여자(B)가 뷰에 포함된 데이터를 다운로드하는 경우를 예로 들어 설명하도록 한다.
동작 810에서, 뷰 참여자(B)의 단말(82)(예: 도 2의 뷰 참여자 단말(22-1))은 블록체인(26)에 저장된 키-값 쌍들의 키들(81, 82)을 이용하여 뷰에 대한 정보(예: 뷰 암호키(KV) 및/또는 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00010
{user:B})) 및/또는 데이터({data1}~{datan})에 대한 정보(데이터 경로, 데이터 암호키, 및/또는 데이터 해시 값)을 검색할 수 있다.
동작 820에서, 뷰 참여자 단말(82)은 블록체인(26)으로부터 키(81)에 대응하는 키-값 쌍의 값(83) 및 키(82)에 대응하는 키-값 쌍의 값(84)을 획득할 수 있다. 값(83)은 뷰 암호키(KV) 및 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00011
{user:B})이 암호화된 값을 포함할 수 있다. 값(84)은 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~ KDn), 및/또는 데이터 해시 값이 암호화된 값을 포함할 수 있다.
동작 830에서, 뷰 참여자 단말(82)은 값들(83, 84)을 복호화함으로써 클라우드(24)로부터 다운로드하고자 하는 데이터({datan})에 접근하기 위한 경로({pathn})를 획득할 수 있다. 뷰 참여자 단말(82)은 값(83)을 암호키를 이용하여 복호화함으로써 뷰 암호키(KV)를 획득할 수 있다. 예를 들어, 뷰 암호키(KV)가 뷰 참여자들(A, B)의 공개키들(PubKA, PubKB)를 이용하여 암호화된 경우, 뷰 참여자 단말(82)은 공개키(PubKB)에 대응되는 뷰 참여자(B)의 비밀키(PrivKB)를 이용하여 값(83)을 복호화함으로써, 뷰 암호키(KV)를 획득할 수 있다. 뷰 참여자 단말(82)은 뷰 암호키(KV)를 이용하여 값(84)을 복호화 함으로써 다운로드 대상 데이터({datan})에 접근하기 위한 경로({pathn})를 획득할 수 있다.
동작 840 및 동작 850에서, 뷰 참여자 단말(82)은 다운로드 대상 데이터({datan})에 접근하기 위한 경로({pathn})를 이용하여 클라우드(24)에서 다운로드 대상 데이터({datan})가 암호화된 암호화 데이터(85)를 검색하고, 클라우드(24)로부터 암호화 데이터(85)를 획득할 수 있다.
동작 860에서, 뷰 참여자 단말(82)은 암호화 데이터(85)를 데이터 암호키(KDn)를 이용하여 복호화함으로써 다운로드 대상 데이터({datan})을 획득할 수 있다.
일 실시예에 따르면, 뷰 참여자는 참여중인 뷰의 이름 및/또는 참여 중인 뷰 내에서 뷰 참여자 자신의 위치에 대한 정보를 알 수 있다. 다만, 뷰 참여자 단말은 뷰의 이름 및/또는 위치 정보만을 가지고 암호화 데이터를 복호화 할 수 없으므로, 데이터 공유 플랫폼(200)은 데이터의 공유를 위해 별도의 보안 채널을 필요로 하지 않을 수 있다.
도 9는 일 실시예에 따른 뷰에 데이터를 추가하는 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 일 실시예에 따르면, 동작 910 내지 동작 970은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해 플랫폼 참여자(A)가 뷰 생성자인 동시에 뷰 참여자이고, 플랫폼 참여자(B)가 뷰 생성자(A)에 의해 생성된 뷰에 참여하고 있는 경우를 예로 들어 설명하도록 한다.
동작 910 및 동작 920에서, 뷰 참여자(B)의 단말(82)(예: 도 2의 뷰 참여자 단말(22-1))은 뷰 참여자 단말(82)에 의해 클라우드(예: 도 2 내지 4 및 도 8의 클라우드(24))에 업로드된 데이터(예: 데이터({datan+1}))에 대한 경로({pathn+1})를 이용하여 블록체인(26)으로부터 데이터({datan+1})의 데이터 암호키(KDn+1)가 암호화된 값(91)을 획득할 수 있다.
동작 930에서, 뷰 참여자 단말(82)은 암호키를 이용하여 값(91)을 복호화함으로써 데이터 암호키(KDn+1)를 획득할 수 있다. 예를 들어, 데이터 암호키(KDn+1)가 뷰 참여자(B)의 공개키(PubKB)로 암호화된 경우, 뷰 참여자 단말(82)은 공개키(PubKB)에 대응되는 뷰 참여자(B)의 비밀키(PrivKB)를 이용하여 값(91)을 복호화함으로써 데이터 암호키(KDn+1)를 획득할 수 있다.
동작 940에서, 뷰 참여자 단말(82)은 블록체인(26)에 저장된 키-값 쌍들의 키들(92, 93)을 이용하여 뷰에 대한 정보(예: 뷰 암호키(KV) 및/또는 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00012
{user:B})) 및/또는 뷰에 포함된 데이터({data1}~{datan})에 대한 정보(데이터 경로, 데이터 암호키, 및/또는 데이터 해시 값)을 검색할 수 있다.
동작 950에서, 뷰 참여자 단말(82)은 블록체인(26)으로부터 키(92)에 대응하는 키-값 쌍의 값(94) 및 키(93)에 대응하는 키-값 쌍의 값(95)을 획득할 수 있다. 값(94)은 뷰 암호키(KV) 및 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00013
{user:B})이 암호화된 값을 포함할 수 있다. 값(95)은 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~KDn), 및/또는 데이터 해시 값이 암호화된 값을 포함할 수 있다.
동작 960에서, 뷰 참여자 단말(82)은 암호키를 이용하여 값(94)를 복호화함으로써 뷰 암호키(KV)를 획득할 수 있다. 예를 들어, 뷰 암호키(KV)가 뷰 참여자들(A, B)의 공개키들(PubKA, PubKB)을 이용하여 암호화된 경우, 뷰 참여자 단말(82)은 공개키(PubKB)에 대응되는 뷰 참여자(B)의 비밀키(PrivKB)를 이용하여 값(94)를 복호화함으로써 뷰 암호키(KV)를 획득할 수 있다. 뷰 참여자 단말(82)은 뷰 암호키(KV)를 이용하여 값(95)을 복호화함으로써 뷰에 포함된 데이터의 경로({path1}~{pathn}), 데이터 암호키(KD1~KDn), 및/또는 데이터 해시 값을 획득할 수 있다.
동작 970에서, 뷰 참여자 단말(82)은 뷰에 포함된 데이터({data1}~{datan})의 정보에 뷰에 추가하고자 하는 데이터({datan+1})의 경로({pathn+1}), 데이터 암호키(KDn+1), 및/또는 데이터({datan+1})의 해시 값을 연결할 수 있다. 뷰 참여자 단말(82)은 연결된 값(예: 데이터({data1}~{datan+1})에 대한 정보))을 뷰 암호키(KV)를 이용하여 암호화하고, 암호화된 값 및 대응하는 키를 포함하는 키-값 쌍(96)을 블록체인에 업로드할 수 있다.
도 10은 일 실시예에 따른 뷰로부터 데이터를 제거하는 방법을 설명하기 위한 도면이다.
도 10을 참조하면, 일 실시예에 따르면, 동작 1010 내지 동작 1040은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 이하에서는, 설명의 편의를 위해 플랫폼 참여자(A)가 뷰 생성자인 동시에 뷰 참여자이고, 플랫폼 참여자(B)가 뷰 생성자(A)에 의해 생성된 뷰에 참여하고 있는 경우를 예로 들어 설명하도록 한다.
동작 1010에서, 뷰 참여자 단말(82)(예: 도 2의 뷰 참여자 단말(22-1))은 블록체인(26)에 저장된 키-값 쌍들의 키들(101, 102)을 이용하여 뷰에 대한 정보(예: 뷰 암호키(KV) 및/또는 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00014
{user:B})) 및/또는 데이터({data1}~{datan})에 대한 정보(데이터 경로, 데이터 암호키, 및/또는 데이터 해시 값)을 검색할 수 있다.
동작 1020에서, 뷰 참여자 단말(82)은 블록체인(26)으로부터 키(101)에 대응하는 키-값 쌍의 값(103) 및 키(102)에 대응하는 키-값 쌍의 값(104)을 획득할 수 있다. 값(103)은 뷰 암호키(KV) 및 뷰 참여자 단말의 목록({user:A}
Figure 112023008186620-pat00015
{user:B})이 암호화된 값을 포함할 수 있다. 값(104)은 데이터 경로({path1}~{pathn}), 데이터 암호키(KD1~KDn), 및/또는 데이터 해시 값이 암호화된 값을 포함할 수 있다.
동작 1030에서, 뷰 참여자 단말(82)은 암호키를 이용하여 값(103)를 복호화함으로써 뷰 암호키(KV)를 획득할 수 있다. 예를 들어, 뷰 암호키(KV)가 뷰 참여자들(A, B)의 공개키들(PubKA, PubKB)을 이용하여 암호화된 경우, 뷰 참여자 단말(82)은 공개키(PubKB)에 대응되는 뷰 참여자(B)의 비밀키(PrivKB)를 이용하여 값(103)을 복호화함으로써 뷰 암호키(KV)를 획득할 수 있다. 뷰 참여자 단말(82)은 뷰 암호키(KV)를 이용하여 값(104)을 복호화함으로써 뷰에 포함된 데이터의 경로({path1}~{pathn}), 데이터 암호키(KD1~KDn), 및/또는 데이터 해시 값을 획득할 수 있다.
동작 1040에서, 뷰 참여자 단말(82)는 데이터({data1}~{datan})에 대한 정보 중에서 뷰로부터 제거하고자 하는 데이터(예: 데이터{datan})에 대한 정보(예: 경로({pathn}), 데이터 암호키(KDn), 및/또는 데이터 해시 값)을 삭제할 수 있다. 뷰 참여자 단말(82)은 제거 대상 데이터({datan})를 제외한 나머지 데이터(예: 데이터({data1}~{datan-1})에 대한 정보를 대응하는 키와 함께 키-값 쌍(105)의 형태로 블록체인(26)에 업로드할 수 있다.
도 11은 일 실시예에 따른 뷰 생성자 단말의 동작을 설명하기 위한 도면이다.
도 11을 참조하면, 일 실시예에 따르면, 동작 1110 내지 동작 1170은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 동작 1110 내지 동작 1170은 도 2 내지 도 7을 참조하여 설명한 뷰 생성자 단말(예: 도 2 내지 도 7의 뷰 생성자 단말(52))의 동작과 실질적으로 동일할 수 있다. 이에 중복되는 설명은 생략하도록 한다.
동작 1110에서, 뷰 생성자 단말(52)은 데이터 암호키(예: 도 4의 대칭키(KD))를 이용하여 데이터(예: 도 4의 {data})를 암호화하고, 암호화된 데이터를 클라우드(예: 도 2 내지 도 4 및 도 8의 클라우드(24))에 업로드할 수 있다.
동작 1120에서, 뷰 생성자 단말(52)은 데이터 암호키(KD)를 암호키(예: 도 4의 뷰 생성자의 암호키(PubKA))를 이용하여 암호화하고, 암호화된 데이터 암호키 및 데이터({data})의 경로(예: 도 4의 경로{path})를 키-값 쌍(예: 도 4의 키-값 쌍(45))의 형태로 블록체인(예: 도 4의 블록체인(26))에 업로드할 수 있다.
동작 1130에서, 뷰 생성자 단말(52)은 블록체인(26)에 저장된 키-값 쌍의 키(예: 도 5의 경로({path}~{path}))를 이용하여 블록체인(26)으로부터 키-값 쌍의 값(예: 도 5의 값(51))을 획득할 수 있다.
동작 1140에서, 뷰 생성자 단말(52)은 암호키(예: 도 5의 공개키(PubKA)에 대응되는 뷰 생성자(A)의 비밀키(PrivKA))를 이용하여 값(51)을 복호화함으로써 데이터 암호키(예: 도 5의 데이터 암호키(KD1~KDn))를 획득할 수 있다.
동작 1150에서, 뷰 생성자 단말(52)은 데이터 암호키(KD1~KDn)를 뷰 암호키(예: 도 5의 뷰 암호키(KV))를 이용하여 암호화함으로써 키-값 쌍(예: 도 5의 키-값 쌍(55))의 값을 획득할 수 있다.
동작 1160에서, 뷰 생성자 단말(52)은 뷰 참여자 단말의 목록(예: 도 5의 뷰 참여자 단말의 목록({user:A}) 및/또는 뷰 암호키(KV)를 암호키(예: 뷰 생성자의 암호키(PubKA))를 이용하여 암호화함으로써 키-값 쌍(예: 도 5의 키-값 쌍(53))의 값을 획득할 수 있다.
동작 1170에서, 뷰 생성자 단말(52)은 키-값 쌍들(53, 55)을 블록체인(26)에 업로드함으로써 뷰를 생성할 수 있다.
도 12는 일 실시예에 따른 뷰 참여자 단말의 동작을 설명하기 위한 도면이다.
도 12를 참조하면, 일 실시예에 따르면, 동작 1110 내지 동작 1170은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다. 동작 1210 내지 동작 1250은 도 2, 도 3, 및 도 8 내지 도 10을 참조하여 설명한 뷰 참여자 단말(예: 도 2, 도 3, 및 도 8 내지 도 10의 뷰 참여자 단말(82)))의 동작과 실질적으로 동일할 수 있다. 이에 중복되는 설명은 생략하도록 한다.
동작 1210에서, 뷰 참여자 단말(82)은 블록체인(예: 도 8의 블록체인(26))에 저장된 키-값 쌍들의 키들(예: 도 8의 키들(81, 82))를 이용하여 키-값 쌍들의 값들(예: 도 8의 값들(83, 84))를 획득할 수 있다.
동작 1220에서, 뷰 참여자 단말(82)은 뷰 참여자의 비밀키(예: 도 8의 공개키(PubKB)에 대응되는 비밀키(PivKB))를 이용하여 값(83)을 복호화함으로써 뷰 암호키(예: 도 8의 뷰 암호키(KV))를 획득할 수 있다.
동작 1230에서, 뷰 참여자 단말(82)은 뷰 암호키(KV)를 이용하여 값(84)을 복호화함으로써 다운로드 대상 데이터(예: 도 8의 데이터({datan}))가 암호화된 암호화 데이터(예: 도 8의 암호화 데이터(85))의 경로(예: 도 8의 경로({pathn}) 및/또는 다운로드 대상 데이터({datan})의 데이터 암호키(예: 도 8의 데이터 암호키(KDn)를 획득할 수 있다.
동작 1240에서, 뷰 참여자 단말(82)은 경로({pathn})를 이용하여 블록체인(26)으로부터 암호화 데이터(85))를 획득할 수 있다.
동작 1250에서, 뷰 참여자 단말(82)은 데이터 암호키(KDn)을 이용하여 암호화 데이터(85)를 복호화함으로써 다운로드 대상 데이터({datan})를 획득할 수 있다.
도 13은 일 실시예에 따른 플랫폼 참여자 장치의 개략적인 블록도이다.
도 13을 참조하면, 일 실시예에 따르면, 플랫폼 참여자 단말(1300)(예: 도 2의 플랫폼 참여자 단말(22))는 프로세서(1320) 및 메모리(1340)를 포함할 수 있다.
메모리(1340)는 프로세서(1320)에 의해 실행가능한 인스트럭션(instruction)들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(1320)의 동작 및/또는 프로세서(1320)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(1340)는 하나 이상의 컴퓨터 판독 가능한 저장 매체(computer-readable storage media)를 포함할 수 있다. 메모리(1340)는 비휘발성 저장 소자들(예: 자기 하드 디스크(magnetic hard disc), 광 디스크(optical disc), 플로피 디스크(floppy disc), 플래시 메모리(flash memory), EPROM(electrically programmable memories), EEPROM(electrically erasable and programmable))을 포함할 수 있다.
메모리(1340)는 비일시적 매체(non-transitory media)일 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파 또는 전파된 신호로 구현되지 않음을 나타낼 수 있다. 단, "비일시적"이라는 용어는 메모리(1340)가 움직일 수 없는 것으로 해석되어서는 안 된다.
프로세서(1320)는 메모리(1340)에 저장된 데이터를 처리할 수 있다. 프로세서(1320)는 메모리(1340)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(1320)에 의해 유발된 인스트럭션들을 실행할 수 있다.
프로세서(1320)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(1320)에 의해 수행되는 동작은 도 2 내지 도 10를 참조하여 설명한 플랫폼 참여자 단말(22))의 동작과 실질적으로 동일할 수 있다. 이에, 상세한 설명은 생략하도록 한다.
도 14는 일 실시예에 따른 뷰 생성자 장치의 개략적인 블록도이다.
도 14를 참조하면, 일 실시예에 따르면, 뷰 생성자 단말(1300)(예: 도 2의 뷰 생성자 단말(22-2), 도 4 내지 도 7의 뷰 생성자 단말(52))은 프로세서(1420) 및 메모리(1440)를 포함할 수 있다.
메모리(1440)는 프로세서(1420)에 의해 실행가능한 인스트럭션(instruction)들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(1420)의 동작 및/또는 프로세서(1420)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(1440)는 하나 이상의 컴퓨터 판독 가능한 저장 매체(computer-readable storage media)를 포함할 수 있다. 메모리(1440)는 비휘발성 저장 소자들(예: 자기 하드 디스크(magnetic hard disc), 광 디스크(optical disc), 플로피 디스크(floppy disc), 플래시 메모리(flash memory), EPROM(electrically programmable memories), EEPROM(electrically erasable and programmable))을 포함할 수 있다.
메모리(1440)는 비일시적 매체(non-transitory media)일 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파 또는 전파된 신호로 구현되지 않음을 나타낼 수 있다. 단, "비일시적"이라는 용어는 메모리(1440)가 움직일 수 없는 것으로 해석되어서는 안 된다.
프로세서(1420)는 메모리(1440)에 저장된 데이터를 처리할 수 있다. 프로세서(1420)는 메모리(1440)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(1420)에 의해 유발된 인스트럭션들을 실행할 수 있다.
프로세서(1420)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(1420)에 의해 수행되는 동작은 도 2 내지 도 7를 참조하여 설명한 뷰 생성자 단말(22-2, 52))의 동작과 실질적으로 동일할 수 있다. 이에, 상세한 설명은 생략하도록 한다.
도 15는 일 실시예에 따른 뷰 참여자 장치의 개략적인 블록도이다.
도 15를 참조하면, 일 실시예에 따르면, 뷰 참여자 단말(1500)(예: 도 2의 뷰 참여자 단말(22-1), 도 8 내지 도 10의 뷰 참여자 단말(82))은 프로세서(1520) 및 메모리(1540)를 포함할 수 있다.
메모리(1540)는 프로세서(1520)에 의해 실행가능한 인스트럭션(instruction)들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(1520)의 동작 및/또는 프로세서(1520)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(1540)는 하나 이상의 컴퓨터 판독 가능한 저장 매체(computer-readable storage media)를 포함할 수 있다. 메모리(1540)는 비휘발성 저장 소자들(예: 자기 하드 디스크(magnetic hard disc), 광 디스크(optical disc), 플로피 디스크(floppy disc), 플래시 메모리(flash memory), EPROM(electrically programmable memories), EEPROM(electrically erasable and programmable))을 포함할 수 있다.
메모리(1540)는 비일시적 매체(non-transitory media)일 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파 또는 전파된 신호로 구현되지 않음을 나타낼 수 있다. 단, "비일시적"이라는 용어는 메모리(1540)가 움직일 수 없는 것으로 해석되어서는 안 된다.
프로세서(1520)는 메모리(1540)에 저장된 데이터를 처리할 수 있다. 프로세서(1520)는 메모리(1540)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(1520)에 의해 유발된 인스트럭션들을 실행할 수 있다.
프로세서(1520)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(1520)에 의해 수행되는 동작은 도 2, 도 3, 및 도 8 내지 도 10을 참조하여 설명한 뷰 참여자 단말(22-1, 82))의 동작과 실질적으로 동일할 수 있다. 이에, 상세한 설명은 생략하도록 한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (15)

  1. 뷰 생성자 단말(view constructor terminal)의 데이터 공유 플랫폼 관리 방법(data sharing platform management method)에 있어서,
    데이터가 제1 암호키(encryption key)를 이용하여 암호화된 암호화 데이터(encrypted data)를 클라우드(cloud)에 업로드하는 동작;
    상기 제1 암호키가 제2 암호키를 이용하여 암호화된 제1 값 및 상기 클라우드에서 상기 암호화 데이터에 접근하기 위한 제1 경로(path)를 키-값 쌍(key-value pair)의 형태로 블록체인(blockchain)에 업로드하는 동작;
    상기 제1 경로를 이용하여 상기 제1 값을 상기 블록체인으로부터 획득하는 동작;
    상기 제1 값을 제3 암호키를 이용하여 복호화함으로써 상기 제1 암호키를 획득하는 동작;
    상기 제1 경로 및 상기 제1 암호키를 제4 암호키를 이용하여 암호화함으로써 제2 값을 획득하는 동작;
    상기 데이터의 공유를 위한 뷰(view)에 접근 가능한 뷰 참여자 단말의 목록 및 상기 제4 암호키를 상기 제2 암호키를 이용하여 암호화함으로써 제3 값을 획득하는 동작; 및
    상기 제2 값 및 상기 제3 값 각각을 대응하는 키와 함께 키-값 쌍의 형태로 상기 블록체인에 업로드함으로써 상기 뷰를 생성하는 동작
    을 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 암호키는,
    상기 데이터의 암호화 및 상기 암호화 데이터의 부호화를 위한 제1 대칭키(symmetric key)
    를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 제2 암호키는,
    상기 뷰의 생성자의 제1 공개키(public key)
    를 포함하는, 방법.
  4. 제3항에 있어서,
    상기 제3 암호키는,
    상기 제1 공개키에 대응하는 제1 비밀키(private key)
    를 포함하는 방법.
  5. 제2항에 있어서,
    상기 제4 암호키는,
    상기 제1 대칭키의 암호화 및 암호화된 제1 대칭키의 부호화를 위한 제2 대칭키
    를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 뷰에 대한 접근 권한(access right)을 획득하고자 하는 플랫폼 참여자(platform participant)의 제2 공개키에 기초하여 상기 플랫폼 참여자의 단말에 상기 접근 권한을 부여하는 동작
    을 더 포함하는, 방법.
  7. 제6항에 있어서,
    상기 부여하는 동작은,
    상기 제3 값에 대응하는 키(key)를 이용하여 상기 블록체인으로부터 상기 제3 값을 획득하는 동작;
    상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작,
    상기 목록에 상기 플랫폼 참여자를 추가함으로써 상기 목록을 갱신하는 동작;
    갱신된 목록을 상기 제2 암호키를 이용하여 암호화하고, 상기 제4 암호키를 상기 제2 공개키를 이용하여 암호화함으로써 제4 값을 획득하는 동작; 및
    상기 블록체인에 저장된 상기 제3 값을 상기 제4 값으로 교체하는 동작
    을 포함하는, 방법.
  8. 제1항에 있어서,
    상기 제4 암호키와 다른 제5 암호키를 이용하여 상기 제1 경로 및 상기 제1 암호키를 암호화함으로써 상기 목록 중에서 하나 이상의 뷰 참여자 단말로부터 상기 뷰에 대한 접근 권한을 회수하는 동작
    을 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 회수하는 동작은,
    상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작;
    상기 제3 값을 상기 제3 암호키를 이용하여 부호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작;
    상기 제2 값을 상기 제4 암호키를 이용하여 부호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작;
    상기 제1 경로 및 상기 제1 암호키를 상기 제5 암호키를 이용하여 암호화함으로써 제5 값을 획득하는 동작;
    상기 제5 암호키를 상기 목록 중에서 상기 하나 이상의 뷰 참여자 단말을 제외한 나머지 뷰 참여자 단말 각각의 제3 공개키를 이용하여 암호화함으로써 제6 값을 획득하는 동작;
    상기 블록체인에 저장된 상기 제2 값을 상기 제5 값으로 교체하는 동작; 및
    상기 블록체인에 저장된 상기 제3 값을 상기 제6 값으로 교체하는 동작
    을 포함하는, 방법.
  10. 제1항의 방법에 의해 생성된 뷰에 접근 가능한 뷰 참여자 단말(view participant terminal)의 데이터 공유 플랫폼 관리 방법(data sharing platform management method)에 있어서,
    상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 제2 값 및 상기 제3 값을 상기 블록체인으로부터 획득하는 동작;
    상기 제3 값을 뷰 참여자의 비밀키를 이용하여 복호화함으로써 상기 제4 암호키를 획득하는 동작;
    상기 제4 암호키를 이용하여 상기 제2 값을 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작;
    상기 제1 경로를 이용하여 상기 클라우드로부터 상기 암호화 데이터를 획득하는 동작; 및
    상기 암호화 데이터를 상기 제1 암호키를 이용하여 복호화함으로써 상기 데이터를 획득하는 동작
    을 포함하는, 방법.
  11. 제10항에 있어서,
    상기 비밀키에 대응되는 상기 뷰 참여자의 공개키를 이용하여 상기 뷰 참여자의 참여자 데이터를 상기 뷰에 추가하는 동작
    을 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 추가하는 동작은,
    상기 참여자 데이터를 대칭키(symmetric key)를 이용하여 암호화함으로써 생성된 암호화된 참여자 데이터(encrypted participant data)를 클라우드에 업로드하는 동작;
    상기 대칭키를 상기 공개키를 이용하여 암호화함으로써 생성된 제7 값 및 상기 클라우드에서 상기 암호화된 참여자 데이터에 접근하기 위한 제2 경로를 키-값 쌍의 형태로 상기 블록체인에 업로드하는 동작;
    상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작;
    상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작;
    상기 제2 값을 상기 제4 암호키를 이용하여 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작;
    상기 제1 경로, 상기 제2 경로, 상기 제1 암호키, 및 상기 대칭키를 상기 제4 암호키로 암호화함으로써 제8 값을 획득하는 동작; 및
    상기 블록체인에 저장된 상기 제2 값을 상기 제8 값으로 교체하는 동작
    을 포함하는, 방법.
  13. 제10항에 있어서,
    상기 뷰에서 상기 데이터를 제거하는 동작
    을 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 제거하는 동작은,
    상기 제2 값 및 상기 제3 값 각각에 대응하는 키를 이용하여 상기 블록체인으로부터 상기 제2 값 및 상기 제3 값을 획득하는 동작;
    상기 제3 값을 상기 제3 암호키를 이용하여 복호화함으로써 상기 목록 및 상기 제4 암호키를 획득하는 동작;
    상기 제2 값을 상기 제4 암호키를 이용하여 복호화함으로써 상기 제1 경로 및 상기 제1 암호키를 획득하는 동작;
    상기 제1 경로 중에서 제거 대상 데이터에 연관된 하나 이상의 경로를 제외한 나머지 경로 및 상기 제1 암호키 중에서 상기 제거 대상 데이터에 연관된 하나 이상의 암호키를 제외한 나머지 암호키를 상기 제4 암호키를 이용하여 암호화함으로써 제9 값을 획득하는 동작; 및
    상기 블록체인에 저장된 상기 제2 값을 상기 제9 값으로 교체하는 동작
    을 포함하는, 방법.
  15. 하드웨어와 결합되어 제1항 내지 제14항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020230008852A 2023-01-20 2023-01-20 블록체인 기반 데이터 공유 방법 KR102515367B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230008852A KR102515367B1 (ko) 2023-01-20 2023-01-20 블록체인 기반 데이터 공유 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230008852A KR102515367B1 (ko) 2023-01-20 2023-01-20 블록체인 기반 데이터 공유 방법

Publications (1)

Publication Number Publication Date
KR102515367B1 true KR102515367B1 (ko) 2023-03-30

Family

ID=85985985

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230008852A KR102515367B1 (ko) 2023-01-20 2023-01-20 블록체인 기반 데이터 공유 방법

Country Status (1)

Country Link
KR (1) KR102515367B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102179497B1 (ko) * 2020-04-13 2020-11-17 주식회사 한국정보보호경영연구소 멀티 클라우드 기반의 데이터 저장 및 관리 시스템 및 그 구동방법
KR20210014084A (ko) * 2019-07-29 2021-02-08 주식회사 그루크리에이티브랩 블록체인을 이용한 전자 데이터 제공 방법 및 그 시스템
KR20220120062A (ko) * 2021-02-22 2022-08-30 주식회사 블록체인기술연구소 Did 기반의 탈중앙화된 사용자 데이터 저장 및 공유 시스템
KR102441378B1 (ko) * 2021-11-18 2022-09-07 주식회사 스마트엠투엠 프라이빗 블록체인 기반의 분산 애플리케이션 접근 제어 관리 방법 및 시스템
KR20230000734A (ko) * 2021-06-25 2023-01-03 주식회사 디엠테크컨설팅 블록체인 기술을 적용한 공급망 관리 방법과 이를 이용한 클라우드 기반 거래정보 공유 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210014084A (ko) * 2019-07-29 2021-02-08 주식회사 그루크리에이티브랩 블록체인을 이용한 전자 데이터 제공 방법 및 그 시스템
KR102179497B1 (ko) * 2020-04-13 2020-11-17 주식회사 한국정보보호경영연구소 멀티 클라우드 기반의 데이터 저장 및 관리 시스템 및 그 구동방법
KR20220120062A (ko) * 2021-02-22 2022-08-30 주식회사 블록체인기술연구소 Did 기반의 탈중앙화된 사용자 데이터 저장 및 공유 시스템
KR20230000734A (ko) * 2021-06-25 2023-01-03 주식회사 디엠테크컨설팅 블록체인 기술을 적용한 공급망 관리 방법과 이를 이용한 클라우드 기반 거래정보 공유 시스템
KR102441378B1 (ko) * 2021-11-18 2022-09-07 주식회사 스마트엠투엠 프라이빗 블록체인 기반의 분산 애플리케이션 접근 제어 관리 방법 및 시스템

Similar Documents

Publication Publication Date Title
US11539505B2 (en) Encrypting data
Ayday et al. Privacy-preserving processing of raw genomic data
US10284372B2 (en) Method and system for secure management of computer applications
US10311239B2 (en) Genetic information storage apparatus, genetic information search apparatus, genetic information storage program, genetic information search program, genetic information storage method, genetic information search method, and genetic information search system
WO2017148316A1 (zh) 文件加密方法、文件解密方法、电子设备和存储介质
US8464043B2 (en) Information security device and information security system
US9773118B1 (en) Data deduplication with encryption
US10218495B2 (en) Secure computation method, secure computation system, secure computation server, registrant terminal, user terminal and program
US7770213B2 (en) Method and apparatus for securely forgetting secrets
US20150302148A1 (en) Method and system for securing electronic health records
US20070185878A1 (en) Transcryption of digital content between content protection systems
US10120870B2 (en) System and method for searching distributed files across a plurality of clients
US20200228346A1 (en) Encrypted data generation device, digital signature generation device, digital signature-attached data generation device, and digital signature-attached data generation system
WO2019058952A1 (ja) 医療データ検索システム、医療データ検索方法および医療データ検索プログラム
US9075999B2 (en) Memory device and method for adaptive protection of content
KR102515367B1 (ko) 블록체인 기반 데이터 공유 방법
US11042610B1 (en) Enabling integrity and authenticity of design data
GB2552522A (en) Method and system for encrypting files and storing the encrypted files in a storage file system
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
CN107851084A (zh) 分布式对象路由
WO2017221308A1 (ja) データ管理装置、データ管理方法、データ管理プログラム、検索装置、検索方法及び検索プログラム
Kang et al. Towards secure and fast mapping of genomic sequences on public clouds
US11971998B2 (en) Data comparison device, data comparison system, and data comparison method
KR102134848B1 (ko) 개별 암호키를 이용한 데이터 암호화 방법
KR102134851B1 (ko) 요청의 유효성 확인 여부를 이용한 데이터 복호화 방법

Legal Events

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