KR102423284B1 - 분산형 파일 시스템 기반의 파일 분산 저장 시스템 - Google Patents

분산형 파일 시스템 기반의 파일 분산 저장 시스템 Download PDF

Info

Publication number
KR102423284B1
KR102423284B1 KR1020210156855A KR20210156855A KR102423284B1 KR 102423284 B1 KR102423284 B1 KR 102423284B1 KR 1020210156855 A KR1020210156855 A KR 1020210156855A KR 20210156855 A KR20210156855 A KR 20210156855A KR 102423284 B1 KR102423284 B1 KR 102423284B1
Authority
KR
South Korea
Prior art keywords
data
file
ipfs
encryption
storage system
Prior art date
Application number
KR1020210156855A
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 KR1020210156855A priority Critical patent/KR102423284B1/ko
Application granted granted Critical
Publication of KR102423284B1 publication Critical patent/KR102423284B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명에 따른 본 발명에 따른 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템은, 입력된 파일을 암호화하는 암호화 모듈; 상기 암호화된 파일을 복수의 데이터 조각으로 분할 처리하고, IPFS 네트워크를 통해 상호 연결된 복수의 IPFS 노드에 상기 분할된 데이터 조각을 분산 저장하는 분산 저장 모듈; 상기 데이터의 다운로드 내역 및 업로드 내역을 포함하는 트랜젝션 정보가 저장되는 블록 및, 복수개의 상기 블록이 연결된 블록체인을 형성하고, 상기 블록체인의 사본을 생성하여 상기 IPFS 노드에 전송하는 블록체인 관리 모듈;을 포함하는 것을 특징으로 한다.
본 발명의 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템에 따르면, 분산형 파일 시스템(IPFS) 기반으로 파일을 분산 저장함으로써 고용량의 파일을 빠르고 효율적으로 저장할 수 있고, 나아가 저장된 파일의 중복을 알 수 있어 저장소를 효율적으로 사용할 수 있으며, IPFS 노드 상에서 파일의 보존을 원하는 경우 반영구적 보존을 가능케 할 수 있도록 한 효과가 있다.

Description

분산형 파일 시스템 기반의 파일 분산 저장 시스템{Data distributed storage system based on Inter Planetary File System}
본 발명은 분산형 파일 시스템 기반의 파일 분산 저장 시스템에 관한 것으로서, 보다 상세히 설명하면 모든 노드를 연결해 파일을 데이터 조각으로 분산 저장하고 공유할 수 있도록 하여 보다 빠른 속도로 파일의 업로드 및 다운로드를 가능케 한, 분산형 파일 시스템 기반의 파일 분산 저장 시스템에 관한 것이다.
분산형 파일 시스템(IPFS:Inter Planetary File System)은 분산 파일 시스템에 데이터를 저장하고 공유하는 프로토콜이자 피어 투 피어(P2P: peer-to-peer) 네트워크이다.
IPFS는 프로토콜 랩(Protocol Labs)의 창시자 후안 베넷(Juan Benet)에 의해 만들어졌다. 2015년 2월에 알파 버전으로 출시되었으며, 같은 해 10월 테크크런치(TechCrunch)의 기사는 IPFS를 “입으로 빠르게 확산된다”고 비유하여 기술하기도 하였다.
이러한 IPFS 기반의 파일 저장 시스템은 탈중앙화를 핵심 개념으로 하는 P2P 네트워크의 일종이라 할 수 있는데, 여기서 P2P란 서버나 클라이언트 없이 개인 컴퓨터 사이를 연결하는 통신망을 말하며, 연결된 각각의 컴퓨터가 서버이자 클라이언트 역할을 하며 정보를 공유하는 방식이다. 다수의 노드가 같은 데이터를 공유하고 검증하는 방식을 통해 디지털 상에 신뢰관계를 형성하게 된다. 이러한 환경은 중개자 없이 P2P로 편리하게 계약을 체결하고 수정할 수 있는 스마트 컨트랙트를 실현 가능하게 한다.
IPFS는 모든 컴퓨터 노드를 연결하고자 하는 분산된 P2P 파일 시스템이며, IPFS Web은 기존의 HTTP Web의 문제점을 해결하고 보완한 새로운 웹이며, IPFS의 특징으로는, 중앙화된 서버 없이 노드들의 P2P 통신으로 실현된 더욱 빠르고 안전하고 개방된 네트워크라는 점을 들 수 있다.
대형 서버의 연결이 차단되면 치명적인 결과를 낳는 과거 HTTP Web과는 달리, IPFS에서는 몇몇 노드들이 연결이 끊어지더라도 시스템이 안정적으로 유지될 수 있다.
또한, 고용량의 파일을 빠르고 효율적으로 전달할 수 있으며(BitSwap), 파일들의 중복을 알 수 있기 때문에 저장소도 효율적으로 사용할 수 있다(Merkle DAG, contents-addressed). IPFS 상에 업로드된 파일의 이름은 영원히 기록되며, 만약 IPFS 상에서 보존하고 싶은 파일은 반영구적으로 보존이 가능하다(pinning). 또한, 파일의 버전 관리(Git)가 가능하다.
이러한 파일 분산 저장 시스템은 필연적으로 블록체인 네트워크와 관련이 있다고 할 수 있는데, 블록체인 네트워크는 블록체인(Block Chain)은 네트워크에 참여하는 모든 사용자가 관리 대상이 되는 모든 데이터를 분산하여 저장하는 데이터 분산처리기술을 의미한다.
블록체인 네트워크는 데이터에 대한 거래 정보가 담긴 원장(原帳)을 거래 주체나 특정 기관에서 보유하는 것이 아니라 네트워크 참여자 모두가 나누어 가지는 기술이라는 점에서 '분산원장기술(DLT:Distributed Ledger Technology)' 또는 '공공거래장부'라고도 한다. 블록체인은 거래 내용이 담긴 블록(Block)을 사슬처럼 연결(chain)한 것이라 하여 붙여진 명칭이다.
이러한 블록체인은 거래 내용의 위변조와 같은 해킹을 막기 위한 기술이며, 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다.
이러한 블록체인 네트워크와 관련된 선행기술로서, 한국 등록특허 제 10-230191호에 ‘컨텐츠에 대한 블록 체인의 블록 갱신 방법 및 서버’가 개시되어 있다.
상기 선행기술은 사용자 단말로 컨텐츠를 제공하기 위해, 서버는 컨텐츠를 복수의 IPFS 파일들로 분할하고, 복수의 IPFS 파일들 각각에 대한 파일 해시를 생성하고, 복수의 사용자 단말들을 IPFS 네트워크에 등록시킴으로써 등록 및 복수의 파일 해시들에 대한 해시 메타 정보를 생성하고, 해시 메타 정보에 기초하여 복수의 IPFS 파일들이 복수의 사용자 단말들 간에 전송된 거래 내역을 사용자 단말로부터 수신하고, 거래 내역에 기초하여 컨텐츠에 대한 블록체인의 블록을 갱신하는 블록 갱신 방법 및 서버에 관한 것이다.
상술한 선행기술은 비행기 내부에서의 비행 중에 제공되는 엔터테인먼트 컨텐츠의 관리를 IPFS를 통해 분할 저장 및 관리하는 기술에 관한 것으로서, 전반적인 데이터에 대한 분산 관리 및 저장 구성보다는 엔터테인먼트 컨텐츠에 대한 분산 관리에 초점을 둔 것이라 할 수 있다.
따라서, 다양한 데이터들에 대한 분산형 파일 시스템을 기반으로 한 분산 저장을 가능케 하여 파일 전송 속도를 높이며 저장된 파일에 대한 보안성을 높일 수 있도록 한, 파일 분산 저장 시스템을 개발할 필요성이 대두되는 실정이다.
본 발명은 고용량의 파일을 빠르고 효율적으로 저장할 수 있도록 할 뿐 아니라 저장소를 효율적으로 사용할 수 있으며, 파일에 대한 보안성을 높인 파일 분산 저장 시스템을 제공하는 것을 주요 목적으로 한다.
본 발명의 다른 목적은, 파일에 대한 접근 및 다운로드에 있어서도 검증 과정을 거칠 수 있게 하여 저장된 파일에 대한 보안성을 높일 수 있도록 하는 것이다.
본 발명의 또 다른 목적은, 신규한 방식의 암호화를 적용하여 본 발명을 통해 저장되는 파일에 대한 보안성을 높이는 것이다.
본 발명의 추가 목적은, 암호화 구성에 있어 암호화 패턴을 생성할 수 있도록 하여 보안성을 강화하는 것이다.
본 발명의 추가 목적은, 전송 속도를 높임과 동시에 복호화 효율을 높이도록 하는 것이다.
상기 목적을 달성하기 위하여, 본 발명에 따른 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템은, 입력된 파일을 암호화하는 암호화 모듈; 상기 암호화된 파일을 복수의 데이터 조각으로 분할 처리하고, IPFS 네트워크를 통해 상호 연결된 복수의 IPFS 노드에 상기 분할된 데이터 조각을 분산 저장하는 분산 저장 모듈; 상기 데이터의 다운로드 내역 및 업로드 내역을 포함하는 트랜젝션 정보가 저장되는 블록 및, 복수개의 상기 블록이 연결된 블록체인을 형성하고, 상기 블록체인의 사본을 생성하여 상기 IPFS 노드에 전송하는 블록체인 관리 모듈;을 포함하는 것을 특징으로 한다.
나아가, 상기 암호화 모듈은, 암호화 알고리즘을 통해 입력된 파일을 암호화하여 해시(hash)값을 생성하고, 상기 트랜젝션 정보는, 상기 해시값을 포함하는 것을 특징으로 한다.
더하여, 상기 시스템은, 상기 파일을 이루는 데이터에 보이드 데이터(void data)를 삽입하여 암호화를 수행하는 것을 특징으로 한다.
또한, 상기 암호화 모듈은, 상기 IPFS 네트워크를 통해 저장된 파일의 전체 용량을 파악하는 저장 용량 파악부 및, 상기 전체 용량에 난수를 반영하여 상기 파일을 이루는 데이터에 삽입될 보이드 데이터(void data)의 데이터패턴을 생성하는 패턴 생성부 및, 상기 데이터패턴에 따라 상기 파일을 이루는 데이터에 상기 보이드 데이터를 삽입하는 암호화 수행부를 포함하고, 상기 트랜젝션 정보는, 상기 데이터패턴을 포함하는 것을 특징으로 한다.
또한, 상기 그룹 설정부는, 상기 파일을 이루는 데이터를 오프닝 데이터(Opening data)와, 상기 오프닝 데이터에 종속되는 적어도 하나의 어사인드 데이터(Assigned data)로 그룹화하고, 상기 암호화 수행부는, 삽입되는 보이드 데이터마다 그룹 별 오프닝 데이터의 위치정보를 함께 삽입하는 기능을 포함하는 것을 특징으로 한다.
본 발명의 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템에 따르면,
1) 분산형 파일 시스템(IPFS) 기반으로 파일을 분산 저장함으로써 고용량의 파일을 빠르고 효율적으로 저장할 수 있고, 나아가 저장된 파일의 중복을 알 수 있어 저장소를 효율적으로 사용할 수 있으며, IPFS 노드 상에서 파일의 보존을 원하는 경우 반영구적 보존을 가능케 할 수 있도록 하며,
2) 해시값 검증 과정을 더하여 파일에 대한 접근 및 다운로드에 있어서도 검증 과정을 거칠 수 있게 하여 저장된 파일에 대한 보안성을 높일 수 있도록 하고,
3) 의미 없는 보이드 데이터 삽입을 통해 파일을 암호화 처리함으로써, 저장된 파일에 외부 침입자가 접근하여 파일에 대한 해킹을 수행하는 것을 방지할 수 있도록 함과 동시에 보안성을 높이며,
4) 보이드 데이터를 패턴화하여 삽입할 수 있도록 하여 암호화 성능을 높일 수 있도록 함과 동시에 복호화 효율을 함께 높일 뿐 아니라,
5) 파일을 이루는 데이터를 그룹화하되, 그룹에 속한 데이터들을 오프닝 데이터, 어사인드 데이터, 추측 데이터로 부호화하여 모든 데이터가 동일한 용량을 차지하는 것이 아닌 용량의 차등을 두도록 설정함으로써 하나의 그룹이 차지하는 용량을 최소화할 수 있도록 함과 동시에 전송속도를 높이며, 복호화 성능을 높인 효과가 있다.
도 1은 본 발명의 시스템에 대한 개략적인 구성을 나타낸 개념도.
도 2는 본 발명의 시스템의 전체 구성을 도시한 블록도.
도 3은 그룹의 예시를 나타낸 개념도.
도 4는 그룹의 다른 실시예를 나타낸 개념도.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하도록 한다. 첨부된 도면은 축척에 의하여 도시되지 않았으며, 각 도면의 동일한 참조 번호는 동일한 구성 요소를 지칭한다.
도 1은 본 발명의 시스템에 대한 개략적인 구성을 나타낸 개념도이다.
도 1을 참조하여 설명하면, 본 발명의 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템은 바람직하게 복수의 IPFS 노드(2) 및, 해당 IPFS 노드(2)에 대한 관제 역할을 수행하는 메인 서버(1)를 포함한다.
더불어 여기서 설명하는 파일이라 함은 일반적으로 인터넷 상에서 주고받을 수 있는 다양한 파일들을 의미하며, 확장자의 종류에는 관계없이 상호 전송이 가능하여 이용이 가능한 모든 파일을 의미한다. 즉 그 종류와 관계없이 다양한 확장자를 지닌 모든 파일 또는 데이터들이 파일이 될 수 있다.
IPFS 노드(2)(IPFS node), 줄여서 노드는 파일 분산 저장 시스템에 있어 파일이 분할된 데이터 조각에 대한 저장 처리뿐 아니라 해당 파일의 다운로드 내역 또는 업로드 내역을 포함할 수 있는 트랜젝션 정보가 포함된 블록 및 해당 블록이 쌓인 블록체인에 대한 사본을 저장하는 기능을 수행한다.
이러한 IPFS 노드(2)는 블록체인 네트워크에 연결된 모든 컴퓨팅 장치를 의미하는 것으로, 이러한 블록체인 복사본, 검증 엔진, P2P 네트워크 배포 기능(브로드캐스트) 등을 포함할 수 있으며, 조금 더 Light한 기능들로만 구성된 클라이언트들도 포함될 수 있다.
이러한 IPFS 노드(2)를 구체적 예를 들어 설명하면, 레퍼런스 클라이언트(Reference client)는 합의 알고리즘이 작업 증명(POW, Proof of Work)인 경우 전체 블록체인 중 전부 또는 적어도 일부의 블록을 저장하는 블록체인 데이터베이스(Blockchain Database), 트랜잭션(Transaction)을 블록체인 네트워크에 브로드캐스트(Broadcast)하는 네트워크 라우팅 모듈(Network Routing Module)을 포함하는 노드(3)를 의미할 수 있다. 풀노드(Full Node)는 블록체인 데이터베이스, 네트워크 라우팅 모듈을 포함하는 노드를 의미할 수 있다. 솔로 마이너 노드(Solo Miner Node)는, 마이닝 모듈, 블록체인 데이터베이스, 네트워크 라우팅 모듈을 포함하는 노드를 의미할 수 있다. 마이닝 노드(Mining Node)는, 마이닝 풀(Mining Pool)의 노드를 의미하는 풀 마이닝 노드(Pool Mining Node)에 연결되는 게이트웨이 라우터(Gateway Router)와 마이닝 모듈을 포함하는 가벼운 노드를 의미할 수 있다. 따라서 IPFS 노드(2)는 입력된 파일이 암호화된 상태에서 분할 처리된 데이터 조각에 대한 저장 처리 및 블록체인에 대한 저장을 수행하는 주체라 할 수 있다.
이때 바람직하게는 파일을 업로드하는 공유자 단말(3), 그리고 파일을 다운로드하는 요청자 단말(4) 모두가 IPFS 노드(2)가 되어 데이터 조각의 분산 저장 역할을 수행할 수도 있고, 혹은 공유자 단말(3) 및 요청자 단말(4) 중 일부가 IPFS 노드(2)가 되거나 혹은 별도의 데이터 조각 저장 역할을 수행하는 IPFS 노드(2)가 존재하는 것 역시 가능하다.
여기서 공유자 단말(3) 및 요청자 단말(4)은 파일에 대한 업로드 및 다운로드를 수행할 수 있는 개인 PC일 수 있으며, 혹은 태블릿PC나 스마트폰일 수도 있다.
더불어 IPFS 노드(2)는 입력된 파일에 대한 위변조 검증 역할을 겸비할 수 있는데, 이때 위변조검증은 해시값을 매개로 진행될 수 있다. 이러한 해시값 검증은, IPFS 노드(2) 각각이 저장한 블록체인에 포함되는 해시값을 각각 비교 처리하여 해시값이 일치함에 따라서 해당 파일의 위변조가 일어나지 않았음을 판정하는 것이다.
메인 서버(1)는 IPFS 노드(2)에 대한 관제 및 관리를 수행하는 것으로서, 이때 바람직하게는 메인 서버(1)가 피어 리더(Peer Leader) 역할을 수행하는 것이라 할 수 있다. 따라서 IPFS 노드(2) 중 피어 리더의 역할을 수행하는 것이 메인 서버(1)가 될 수 있으며, 이때 메인 서버(1)는 반등 노드일 수 있다. 혹은 별도의 메인 서버(1)를 구비하여 메인 서버(1)를 통해 IPFS 노드(2)에 대한 관리 역할을 수행하게 하는 것도 가능하다. 따라서 메인 서버(1)는 IPFS 네트워크를 구성하며 피어 리더의 역할을 수행할 수 있는 것이라면 별도의 제한을 두지 않는다.
다시 말해 본 발명의 파일 분산 저장 시스템에서 파일의 암호화, 분할 처리, 그리고 IPFS 노드(2)로의 분산 저장을 수행하는 주체가 곧 메인서버라 할 수 있다.
따라서 메인 서버(1)는 IPFS 네트워크를 구성하여 IPFS 노드(2)들을 멤버로 하는 IPFS 클러스터를 구성하고, 해당 IPFS 클러스터에 포함되는 IPFS 노드(2)에 파일을 분할 처리한 데이터 조각을 분산 저장시키는 기능을 수행한다 할 수 있다.
더불어 메인 서버(1)는 IPFS 노드(2)의 운영 상태(데이터 전송 가능/불가능 확인)을 파악하는 능동적 감시를 수행함과 동시에 데이터의 업로드/다운로드 상태를 모니터링하는 수동적 감시를 통해 IPFS 노드(2) 및 그를 통한 데이터 분산 저장, 그리고 데이터의 업로드 및 다운로드에 대한 관제 및 모니터링을 수행하는 것이라 할 수 있다.
이러한 메인 서버(1)는 통신을 수행하기 위해 통신부 및 전송수단을 구비한 상태에서 CPU와 저장수단을 구비한 하드웨어를 의미하는 것으로, 이 CPU에서 수행될 소프트웨어에 의해 후술할 일련의 모듈 및 이의 구체적 기능이 도출될 수 있다.
이와 같은 메인 서버(1)는 중앙처리장치(CPU) 및 메모리와 하드디스크와 같은 저장수단을 구비한 하드웨어 기반에서 중앙처리장치에서 수행될 수 있는 프로그램, 즉 소프트웨어가 설치되어 이 소프트웨어를 실행할 수 있는데 이러한 소프트웨어에 대한 일련의 구체적 구성을 '모듈' 및 '부', '인터페이스'라는 구성 단위로서 후술할 예정이다.
이러한 메인 서버(1)는 이 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시), 프로세서를 포함할 수 있다. 또한 중앙관제서버(3)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템온칩(SoC: system on chip) 형태로 구현될 수 있다.
프로세서는 하나 이상의 코어(core, 미도시) 및 그래픽 처리부(미도시) 및/또는 다른 구성 요소와 신호를 송수신하는 연결 통로(예를 들어, 버스(bus) 등)를 포함할 수 있다
메모리에는 후술할 모듈 내지 부의 실행 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
즉, 본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.
이러한 '모듈' 또는 '부' 또는 '인터페이스'의 구성은 메인 서버(1)의 저장수단에 설치 및 저장된 상태에서 CPU 및 메모리를 매개로 실행되는 소프트웨어 또는 FPGA 내지 ASIC과 같은 하드웨어의 일 구성을 의미한다. 이때, '모듈' 또는 '부', '인터페이스'라는 구성은 하드웨어에 한정되는 의미는 아니고, 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
일예로서 '모듈' 또는 '부' 또는 '인터페이스'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.
이러한 '모듈' 또는 '부' 또는 '인터페이스'에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는'모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.
이하, 이와 같은 거시적 구성을 기반으로 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템에 대한 세부 구성 및 기능을 설명하도록 한다.
도 2는 본 발명의 시스템의 전체 구성을 도시한 블록도이다.
도 2를 참조하여 설명하면, 본 발명의 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템은 암호화 모듈(100), 분산 저장 모듈(200), 블록체인 관리 모듈(300)을 포함하는 것을 특징으로 한다.
암호화 모듈(100)은 입력된 파일을 암호화하는 기능을 수행한다. 이때 파일 입력 주체는 IPFS 네트워크에 포함된 IPFS 노드(2) 중 어느 하나일 수 있으며, 혹은 다른 단말에 의해 파일이 입력되는 것도 가능하다. 여기서 파일을 입력한 단말을 특정하여 공유자 단말(3)이라고 지칭할 수도 있다.
즉 암호화 모듈(100)은 공유자 단말(3)로부터 입력된 파일을 암호화 처리하는 것이라 할 수 있으며, 이때 공유자 단말(3)은 그 자체가 IPFS 네트워크에 포함된 IPFS 노드(2) 중 어느 하나일 수도 있고, IPFS 노드(2)의 기능을 수행하지 않을 수도 있다.
나아가 입력된 파일을 암호화하는 하는 암호화 방식에 있어서는 제한을 두지 않을므로, 공지의 다양한 암호화 알고리즘을 이용하여 입력된 파일에 대한 암호화를 수행할 수 있다.
이때 공지의 암호화 알고리즘이라 함은 공개키 암호화 또는 비밀키 암호화 등이 있을 수 있으며, 그 외의 다양한 방식을 통하여 암호화를 수행할 수도 있다. 나아가 바람직하게 여기서 공개키 암호화 방식을 통해 암호화가 이루어지는 경우, IPFS 노드(2)들은 각각의 암호화적 연관관계를 가질 수 있는 개인키(private key)와 공개키(public key)의 쌍을 가질 수 있으며, 이때 파일은 개인키를 통해 암호화된다.
나아가 또 다른 공지의 암호화 알고리즘으로써 MD5(Message-digest algorithm 5), SHA(Secure Hash Algorithm) 등 다양한 암호화 알고리즘이 적용될 수 있음은 물론이다.
보다 바람직하게는 상기와 같은 암호화 알고리즘을 통해 파일을 암호화하여 해시(hash)값을 생성할 수 있다. 여기서 해시값이라 함은 복사한 디지털 증거의 동일성을 입증하기 위해 파일 특성을 축약한 암호같은 수치로, 일반적으로 16진수의 코드 값으로 산출된다. 업로드된 파일의 위변조가 일어나지 않으면 해시값의 변화는 일어나지 않는다. 이러한 해시값은 파일마다의 고유한 전자 지문이라도 표현할 수 있으며, 이를 통해 진위 여부를 확인하고 파일의 위변조를 식별할 수 있다.
따라서 보다 바람직하게는 파일에 대한 입력이 공유자 단말(3)로부터 이루어진다 하였을 때, 공유자 단말(3)로부터 입력된 파일을 공유자 단말(3)의 개인키를 사용하여 암호화하고 그에 따라 해시값을 생성할 수 있다.
분산 저장 모듈(200)은 암호화된 파일을 복수의 데이터 조각으로 분할 처리하고, IPFS 네트워크를 통해 상호 연결된 복수의 IPFS 노드(2)에 분할된 데이터 조각을 분산 저장하는 기능을 수행한다.
IPFS 네트워크는 상술한 메인 서버(1)에 의해 형성된 것이며, 이때 메인 서버(1)가 구축한 IPFS 네트워크에 포함되어 IPFS 클러스터를 형성하는 각각의 IPFS 노드(2)에 파일이 분할 처리되어 형성된 데이터 조각이 분산 저장된다.
이러한 IPFS 노드(2)를 통한 분산 저장은 저장 기능을 수행하는 중앙 데이터베이스 없이 IPFS 노드(2) 간의 P2P 통신으로 파일의 분산 저장을 실행하는 것이다. 나아가 상술한 구성에서 업로드된 파일에 대한 암호화가 수행되어 해시값이 생성된다 하는 경우, 생성된 해시값과 연계된 파일이 분할되어 복수의 데이터 조각이 형성되고, 이러한 데이터 조각이 각각의 IPFS 노드(2)에 분산 저장되는 것이다.
블록체인 관리 모듈(300)은 트랜젝션 정보가 저장되는 블록 및 복수의 블록을 연결 처리하여 블록체인을 형성하고, 블록체인의 사본을 IPFS 노드(2)에 전송하는 역할을 포함한다.
이때 트랜젝션 정보는 본 발명의 파일 분산 저장 시스템에 있어 업로드 및 다운로드된 파일의 다운로드 내역 및 업로드 내역을 기본적으로 포함할 수 있을 뿐 아니라, 파일의 암호화를 통해 생성된 해시값, 나아가 암호화가 공유자 단말(3)의 개인키를 통해 이루어진 경우 해당 개인키와 대응된 공유자 단말(3)의 공개키를 포함한다.
다시 말해 트랜젝션 정보는 파일의 다운로드 내역 및 업로드 내역, 암호화를 통해 생성된 해시값, 나아가 암호화가 개인키를 통해 이루어진 경우 해당 개인키와 대응되는 공개키를 저장하는 것이며, 추가적으로 데이터 조각이 분산 저장된 위치에 대한 정보 및 동일한 파일의 다른 데이터 조각을 저장하고 있는 다른 IPFS 노드(2)들에 대한 정보를 포함한다.
나아가 이와 같은 트랜젝션 정보가 모여 블록이 형성되는데, 이때 블록은 적어도 한 개 이상의 트랜젝션 정보가 모여 형성된 것이며, 이러한 블록이 복수 개로 연결되면 블록체인이 형성된다. 이때 블록의 크기에는 제한이 없으므로 역동적인 블록 크기를 지원할 수 있어 블록 크기에 따라 하나의 블록에 저장되는 트랜젝션 정보의 수는 가변적일 수 있다. 따라서 복수 개의 트랜젝션 정보가 하나의 블록을 이루고, 이러한 블록이 쌓이고 서로 연결되어 블록체인을 형성되는 것이다. 이때 블록체인의 원장은 바람직하게 메인 서버(1)에 저장되고, 사본의 경우 IPFS 네트워크에 포함된 IPFS 노드(2) 각각에 전송되어 파일에 대한 분산 저장 및 관리를 수행할 수 있다.
따라서 이와 같은 본 발명의 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템을 통하여, 고용량의 파일을 빠르고 효율적으로 저장할 수 있고, 나아가 저장된 파일의 중복을 알 수 있어 저장소를 효율적으로 사용할 수 있으며, IPFS 노드(2) 상에서 파일의 보존을 원하는 경우 반영구적 보존을 가능케 할 수 있는 효과를 제공한다.
더불어 IPFS 노드(2)에 저장된 데이터 조각으로부터 파일을 복원 처리하기 위해, 본 발명의 시스템은 해시 복원 모듈(400) 및 파일 복원 모듈(500)을 포함할 수 있다.
해시 복원 모듈(400)은 공유자 단말(3)의 개인키를 이용하여 트랜젝션 정보에 저장된 해시값을 복원하는 기능을 수행한다. 상술한 바와 같이 해시값의 경우 트랜젝션 정보에 등기되고 파일이 분할 처리된 데이터 조각은 IPFS 노드(2)에 분산 저장된다 하였는데, 이때 암호화에 이용된 개인키를 입력받아 개인키를 이용하여 해시값을 복원하는 것이다. 즉 개인키의 암호화를 이용해 해시값을 찾는 것이라 할 수 있으며, 여기서 해시값의 복원이라 함은 개인키를 통해 해시값을 알아내는 것이라 할 수 있다.
파일 복원 모듈(500)은 복원된 해시값을 기반으로 IPFS 분산 저장된 데이터 조각을 모아 파일을 복원 처리하는 것이다. 다시 말해 같은 해시값을 갖는, 즉 같은 지문을 갖는 데이터 조각을 수집하고, 그를 통해 파일을 복원하는 것인데, 이는 IPFS 노드(2)에 저장된 데이터 조각에 대한 정보 중에서 특정 해시값을 갖는 데이터 조각만을 수집하고, 수집된 데이터 조각을 합쳐 파일을 복원 처리하는 것이다.
나아가 이때 해시값 복원을 위해 개인키를 입력한 입력 주체가 파일에 대한 다운로드를 요청한 요청자 단말(4)인 경우, 복원된 파일을 요청자 단말(4)에 전송 처리될 수 있어 개인키를 알고 있는 요청자 단말(4)의 경우 개인키를 통해 해당 개인키로 파일을 쉽게 다운로드 받을 수 있다.
따라서 이와 같은 파일 복원 및 전송 기능을 통해 파일을 암호화하여 저장하는 본 발명의 파일 분산 저장 시스템에 있어, 파일에 대한 접근 및 다운로드에 있어서도 검증 과정을 거칠 수 있게 하여 저장된 파일에 대한 보안성을 높일 수 있도록 함은 기본이다.
나아가 본 발명의 파일 분산 저장 시스템은, 입력된 파일에 대한 신규한 암호화 방식을 통해 보안성을 보다 높이기 위해, 입력된 파일을 이루는 데이터에 보이드 데이터(void data)를 삽입하여 암호화를 수행하는 신규한 방식의 암호화를 수행할 수 있다.
이때 보이드 데이터라 함은 의미 없는 빈 데이터를 의미한다. 일반적으로 0이나 1로 채워진 비트열로 구성되어 있으며, 아무런 의미가 없는 것을 특징으로 한다. 따라서 이와 같은 보이드 데이터 삽입을 통하여 입력된 파일을 암호화할 수 있을 뿐 아니라 IPFS 노드(2) 사이에서의 반복적인 파일의 송수신에 있어 전송 속도를 일정 수준으로 유지하기 위한 역할을 수행한다.
따라서 이와 같은 의미없는 보이드 데이터 삽입을 통해 파일을 암호화 처리함으로써, 본 발명의 분산 저장 시스템 상에 저장된 파일에 외부 침입자가 접근하여 파일에 대한 해킹을 수행하는 것을 방지할 수 있다.
나아가 이러한 보이드 데이터는 별도의 주기와 같은 패턴 없이 불규칙적으로 삽입될 수도 있으나, 바람직하게는 패턴화된 보이드 데이터를 삽입 처리하는 것도 가능한데, 이를 위해서는 보이드 데이터가 삽입될 패턴을 생성하는 구성이 겸비되어야 한다. 이를 위해 암호화 모듈(100)은 저장 용량 파악부(110), 패턴 생성부(120), 암호화 수행부(130)를 포함할 수 있다.
저장 용량 파악부(110)는 IPFS 네트워크를 통해 저장된 파일의 전체 용량을 파악하는 기능을 수행한다. 이는 본 발명의 IPFS 네트워크를 통해 분산 저장된 파일의 총 용량을 의미하는 것이며, 개별 IPFS 노드(2)에 저장된 데이터 조각의 총 용량을 의미하기 보다는 본 발명의 IPFS 네트워크를 통해 분산 저장 및 관리되고 있는 모든 파일의 총 용량을 의미하는 것이라 할 수 있다.
여기서 용량은 일반적으로 MB, GB, TB단위 중 어느 하나일 수 있으며, 바람직하게는 용량 관리 단위로서 주로 이용되는 GB나 TB중 어느 하나를 이용할 수 있다.
패턴 생성부(120)는, 상술한 저장 용량 파악부(110)에서 파악된 파일의 전체 용량에 난수를 반영하여 데이터에 삽입될 보이드 데이터(void data)의 데이터패턴을 생성하는 기능을 수행한다.
데이터패턴이라 함은 파일을 이루는 데이터에 보이드 데이터가 삽입되는 주기 및 삽입되는 개수를 포함하는 의미로서, 몇 개의 데이터마다 보이드 데이터를 삽입할 것인지를 의미하는 것이다. 예를 들어, ‘XX개의 데이터 마다 보이드 데이터를 삽입한다.’가 주기정보가 될 수 있으며, 여기서 주기정보의 설정 방식에 있어서는 제한을 두지 않는다.
더불어 개수라고 함은, 주기마다 삽입되는 실제 보이드 데이터의 개수를 의미한다. “1주기에는 2개의 보이드 데이터를 삽입하고, 2주기에는 3개의 보이드 데이터를 삽입한다.” 등의 방식으로 개수가 지정될 수도 있으며, 가장 단순하게는 모든 주기마다 동일한 개수의 보이드 데이터가 삽입될 수 있도록 동일한 개수를 지정하는 것 역시 가능하다. 이와 같이 보이드 데이터가 삽입되는 개수를 지정하는 방식이나 그 개수에 있어서는 제한이 없다.
더불어 본 발명의 파일 분산 저장 시스템을 통해 저장된 파일의 총 용량에 따라 보이드 데이터의 데이터패턴을 생성한다 하였는데, 바람직하게는 용량이 클수록 삽입되는 보이드 데이터의 개수를 줄이고, 용량이 작을수록 삽입되는 보이드 데이터의 개수를 보다 유동적으로 가변할 수 있도록 함으로써 본 발명의 파일 분산 저장 시스템에 저장되는 파일 용량이 너무 커지는 것에 의한 과부하를 방지할 수 있도록 한다. 나아가 여기에 난수를 반영하여 암호화가 이루어지므로, 암호화 성능을 보다 높일 수 있게 된다. 이때 난수는 가장 바람직하게는 랜덤함수, 즉 rand() 함수를 통해 얻을 수 있는 난수를 이용할 수 있으나, 생성 방식이나 범위에 있어서는 제한을 두지 않는다.
마지막으로 암호화 수행부(130)는 패턴 생성부(120)를 통해 생성된 데이터패턴에 따라 파일을 이루는 데이터에 보이드 데이터를 삽입하게 된다. 다시 말하자면, 패턴 생성부(120)를 통해 생성된 데이터패턴에 따라, 즉 설정된 주기 및 개수에 맞게 저장된 파일을 이루는 데이터에 보이드 데이터를 삽입하여 암호화 처리하게 된다.
따라서 이와 같은 방식으로 신규한 방식을 적용하여 본 발명의 파일 분산 저장 시스템에 저장되는 파일을 암호화할 수 있어 보안성을 강화할 수 있게 된다.
이와 같은 방식으로 암호화가 수행되는 경우, 트랜젝션 정보는 본 발명에 따라 분산 저장된 파일의 다운로드 내역 및 업로드 내역, 그리고 해시값을 포함할 수 있을 뿐 아니라 파일을 이루는 데이터에 삽입되어 암호화에 이용되는 보이드 데이터의 데이터패턴을 함께 포함하여 복호화에 이용할 수 있도록 한다.
다시 말해, 보이드 데이터가 삽입되는 주기 및 삽입되는 개수인 데이터패턴에 대한 정보를 트랜젝션 정보에 포함하여 복호화에 이용할 수 있도록 함으로써 데이터 암호화 및 복호화 효율을 높일 수 있도록 하며, 데이터패턴에 따라 보이드 데이터를 삽입하는 신규한 방식의 암호화를 통해 보안성을 강화할 수 있다.
도 3은 그룹의 예시를 나타낸 개념도이다.
도 3을 참조하여 설명하면, 본 발명의 본 발명의 파일 분산 저장 시스템에 저장되는 파일을 이루는 데이터를 그룹화하여 그룹화된 데이터의 사이사이에 보이드 데이터를 삽입함으로써, 보이드 데이터의 삽입 위치를 보다 규격화할 수 있다. 이를 위해 암호화 모듈(100)은 그룹 설정부를 포함할 수 있다.
그룹 설정부는 파일을 이루는 데이터를 오프닝 데이터(Opening data)와 상기 오프닝 데이터에 종속되는 적어도 하나의 어사인드 데이터(Assigned data)으로 그룹화하여 복수의 그룹을 생성하는 기능을 포함한다.
여기서 파일을 이루는 데이터를 생성된 시간에 따라, 즉 파일을 이루는 데이터가 생성된 시간에 따라 시간 순서로 나열하고, 일정 시간마다 위치하는 데이터를 오프닝 데이터(Opening data)로 지정(즉, 부호화)한다.
그 후 어느 하나의 오프닝 데이터를 기준으로 시간 순서에 따라 다음 오프닝 데이터까지 위치하는 적어도 하나 이상의 데이터들을 각각 어사인드 데이터(Assigned data)로 지정(즉, 부호화)하여 기준으로 지정된 오프닝 데이터에 종속시키면, 하나의 오프닝 데이터와 해당 오프닝 데이터에 종속된 적어도 하나의 어사인드 데이터를 포함하는 그룹을 형성할 수 있다.
이것은 MPEG 영상 포맷에서 활용되는 방식과 유사한 구성으로서, 특정 시간마다 혹은 특정 개수의 데이터를 묶어 그룹을 형성하되, 이 그룹에서 가장 앞선 시간에 위치하는 데이터를 오프닝 데이터로 지정하고, 그룹 내에서 오프닝 데이터를 제외한 나머지 데이터들을 어사인드 데이터로 지정하여 시간 순서 상 앞에 위치한 오프닝 데이터에 나머지 어사인드 데이터를 종속시켜 하나의 그룹을 생성하는 기능을 제공한다.
예를 들어, 상술한 바와 같이 하나의 그룹은 하나의 오프닝 데이터과 복수 개의 어사인드 데이터로 구성된다고 하였는데, 이때 그룹 설정부는 ‘OAAAA’와 같은 그룹을 생성할 수 있다. 여기서 그룹의 길이 및 해당 그룹에 포함되는 데이터의 수는 본 발명의 시스템 관리자에 의해 설정될 수 있다.
더불어 이와 같이 그룹이 형성되는 경우, 암호화 수행부(130)는 삽입되는 보이드 데이터마다 그룹 별 오프닝 데이터의 위치정보를 함께 삽입한다. 따라서 각각의 보이드 데이터가 어느 그룹의 어느 오프닝 데이터에 삽입되었는지를 확인할 수 있으므로, 삽입된 보이드 데이터의 위치 역시 파악할 수 있게 되어 복호화를 가능케 하는 것이다.
여기서 오프닝 데이터의 위치정보라 함은 파일을 이루는 데이터 중에서 해당 오프닝 데이터가 몇 번째 데이터인지에 대한 정보를 의미한다. 또한 보이드 데이터가 각각의 주기마다 삽입되면서 오프닝 데이터의 위치 역시 변조되기 마련인데, 이를 파악함과 동시에 추가적인 암호화를 꾀할 수 있어 해킹으로부터의 보안성을 높일 수 있게 된다.
도 4는 그룹의 다른 실시예를 나타낸 개념도이다.
도 4를 참조하여 설명하면, 상술한 그룹 설정부는 파일을 이루는 데이터를 그룹화함에 있어 오프닝 데이터 및 어사인드 데이터, 그리고 추측 데이터를 포함하는 그룹을 설정할 수 있다.
여기서 오프닝 데이터(Opening data)는 상술한 바와 같이 파일을 이루는 데이터가 생성된 시간에 따라 시간 순서로 나열하고, 일정 시간마다 위치하는 데이터를 오프닝 데이터(Opening data)로 지정(즉, 부호화)하여 그룹을 이루는 첫 번째 데이터를 오프닝 데이터로 지정하게 된다. 바람직하게 파일을 이루는 데이터 중에서 오프닝 데이터가 가장 큰 용량을 차지할 수 있다.
나아가 어사인드 데이터(Assigned data)의 경우 해당 오프닝 데이터에 종속되는 것이며, 이때 그룹을 이루는 마지막 데이터를 어사인드 데이터로 지정하는 것이다. 즉 다음 오프닝 데이터의 바로 직전에 위치하는 데이터만을 어사인드 데이터로 지정하여, 그룹을 이루는 마지막 데이터를 어사인드 데이터로 지정한다. 어사인드 데이터는 오프닝 데이터에 비해 적은 용량을 차지할 수 있다.
이 경우 시간 순서로 파악하였을 때 오프닝 데이터 및 어사인드 데이터 사이에 위치하는 나머지 데이터가 추측 데이터(Supposition Data)로 부호화되는 것인데, 이때 추측 데이터의 경우 오프닝 데이터 및 어사인드 데이터 모두에 종속되는 가장 하위의 데이터라 할 수 있다.
이러한 추측 데이터의 경우 오프닝 데이터와 어사인드 데이터의 사이에 낀 데이터로서, 양쪽 데이터 모두를 참조하여 파일의 전송 시 오프닝 데이터 및 어사인드 데이터의 움직임을 추측하여 움직일 수 있다는 특성을 지닌다. 나아가 추측 데이터는 오프닝 데이터 및 어사인드 데이터에 비해 적은 용량을 차지할 수 있다.
따라서 파일을 이루는 데이터를 그룹화하되, 그룹에 속한 데이터들을 오프닝 데이터, 어사인드 데이터, 추측 데이터로 부호화하여 모든 데이터가 동일한 용량을 차지하는 것이 아닌 용량의 차등을 두도록 설정함으로써 하나의 그룹이 차지하는 용량을 최소화할 수 있도록 하고, 나아가 전송속도를 원활히 할 수 있도록 한 효과가 있다. 여기서 그룹의 길이 및 해당 그룹에 포함되는 데이터의 수는 본 발명의 시스템 관리자에 의해 설정될 수 있다.
더불어 이와 같이 그룹이 형성되는 경우, 암호화 수행부(130)는 그룹 별 오프닝 데이터의 위치정보 뿐 아니라 어사인드 데이터의 위치정보를 함께 삽입하도록 하여따라서 각각의 보이드 데이터가 어느 그룹의 어느 오프닝 데이터에 삽입되었는지를 확인하도록 하고, 어사인드 데이터의 위치정보를 매개로 그룹의 정확한 크기를 파악할 수 있도록 함으로써 복호화 효율을 극대화할 수 있다.
더불어 상술한 암호화 모듈(100)은 생성된 데이터패턴에 대한 보정을 수행하여 보안성을 보다 높일 수 있는데, 이를 위해 암호화 모듈(100)은 비교수치 산출부(140) 및 패턴 보정부(150)를 포함할 수 있다. 따라서 이와 같은 구성을 통해 데이터패턴의 보정이 가능한 경우, 암호화 수행부(130)는 보정 처리된 데이터패턴에 따라 보이드 데이터를 삽입하여 파일을 이루는 데이터를 암호화할 수 있다.
비교수치 산출부(140)는 본 발명의 분산 저장 시스템을 이용해 저장된 파일의 총 용량, 디스크 할당 크기 및 오프닝 데이터 및 상술한 난수를 함께 반영하여 비교수치를 산출하는 기능을 수행한다.
이때 비교수치 산출부(140)를 통한 비교수치 산출 방식에는 제한이 없으므로 저장된 분산 저장 시스템을 이용해 저장된 파일의 총 용량, 디스크 할당 크기 및 포함된 오프닝 데이터의 개수를 단순히 더하거나 곱하여 비교수치를 산출하는 것도 가능하나, 가장 바람직하게는 다음의 수학식 1을 기반으로 보정수치를 산출할 수 있다.
수학식 1,
Figure 112021131551924-pat00001
(여기서, S는 보정수치, c는 분산 저장 시스템을 이용해 저장된 파일의 총 용량, d는 분산 저장 시스템을 이용해 저장된 파일의 디스크 할당 크기, o는 오프닝 데이터의 총 개수, n은 선형합동법을 이용하여 생성된 난수로서
Figure 112021131551924-pat00002
)
c와 d, 다시 설명하자면 저장된 분산 저장 시스템을 이용해 저장된 파일의 총 용량 및 디스크 할당 크기는 기본적으로 TB 단위를 이용할 수 있다. 예를 들어 용량이 408TB인 경우 c=408, 130GB인 경우 c=0.127가 된다.
나아가 저장된 분산 저장 시스템을 이용해 저장된 파일의 총 용량과 디스크 할당 크기는 같은 값을 나타낼 수도 있으나, 서로 다른 값을 나타낼 수도 있다. 이는 파일의 크기와 디스크 할당 크기가 서로 다를 수 있음을 반영한 것이며, 그 이유는 파일을 이루는 데이터가 저장되는 방식이 클러스터 단위로 저장되기 때문이다.
디스크 할당 크기라 함은 클러스터의 크기에 따라 달라지는데, 이때 클러스터 크기의 경우 상술한 그룹의 수와 연관이 있다. 클러스터는 그룹의 군집을 일컫는 것으로, 이때 그룹의 개수 및 크기에 따라서 클러스터의 단위 크기가 달라지고, 이러한 클러스터의 크기 및 개수에 따라서 디스크 할당 크기가 달라진다.
이에 따라 분산 저장 시스템을 통해 저장된 파일들의 총 용량이 디스크 할당 크기와 같을 수도 있으나, 서로 다를 수도 있으므로 이러한 두 값의 평균을 반영하여 자연로그를 취해 반영하는 것이며, 바람직하게는 비교수치의 경우에도 용량 및 디스크 할당 크기가 클수록 작아지고, 용량 및 디스크 할당 크기가 작을수록 커지는 경향을 나타낸다.
여기서 용량 및 디스크 할당 크기의 기하평균을 반영하게 되는데, 이는 용량 및 디스크 할당 크기가 데이터의 변동에 의해 변할 수 있는 변량이므로, 해당 변량의 평균을 나타낼 시에는 산술평균보다 기하평균이 보다 적절하기 때문에 기하평균이 반영된다.
더불어 o는 오프닝 데이터의 총 개수로서, 빅데이터를 이룰 수 있는 이용인 DB에 저장된 모든 데이터에 대해 설정된 오프닝 데이터의 총 개수인 만큼 매우 큰 값을 취할 수 있다. 따라서 오프닝 데이터의 수에 상용로그를 취하여 이 역시 보완을 가능케 하였다.
마지막으로 n은 선형합동법을 이용하여 생성된 난수로서,
Figure 112021131551924-pat00003
의 범위를 갖는다. 선형합동법(Linear Congruential)은 가장 널리 쓰이는 유사난수법으로, 계산이 매우 빠르기 때문에 초창기부터 컴퓨터에 널리 사용된 방법이기도 하다. 흔히 이용되는 랜덤함수, 즉 rand() 함수를 통해 얻을 수 있는 값이다. 따라서 해당 범위 내에서 난수를 생성하고, 이를 비교수치 산출에 반영하여 암호화의 성능을 향상시킬 수 있도록 하였다.
따라서 이와 같은 수학식 1을 통한 보정수치 산출에 의하여, 난수를 반영함으로써 암호화 성능을 높일 수 있도록 함과 동시에 저장된 파일들의 총 용량 및 디스크 할당 크기, 오프닝 데이터의 개수를 모두 반영토록 하여 데이터의 자체 속성을 이용하여 널 패킷의 보정을 수행할 수 있도록 한다.
나아가 분자에 하이퍼볼릭 사인의 역함수를 취한 데이터의 총 용량의 합 및 디스크 할당 크기의 합이 반영되는데, 이를 통해 빅데이터의 중요성을 반영할 수 있도록 함과 동시에 데이터의 량 증가에 따라 가중치를 선형으로 증가하는 것이 아닌 비선형적인 데이터 하중을 반영하기 위해 하이퍼볼릭을 통한 보정을 가능케 하였다.
예를 들어, C=1331.2, d=1245.4, o=10000, n=5인 경우,
Figure 112021131551924-pat00004
과 같이 산출될 수 있다.
더불어 패턴 보정부(150)는 산출된 비교수치에 따라서 상기 데이터패턴을 보정하는데, 바람직하게는 비교수치가 높을수록 데이터패턴이 보다 많이 보정 처리되고 (주기의 변동 및 개수의 변동이 모두 이루어진다.) 비교수치가 낮을수록 데이터패턴이 기존과 유사하게 유지되는 것이 바람직할 수 있다. 이때 데이터패턴의 보정은 자동으로 이루어질 수도 있으며, 혹은 시스템 관리자가 직접 데이터패턴을 보정 처리하는 것 역시 가능하다.
예를 들어 산출된 비교수치가 5 이하인 경우 데이터패턴의 보정을 수행하지 않고, 비교수치가 5 내지 15 사이인 경우 데이터패턴 보정에 있어 주기만의 변동을 수행하도록 하며, 비교수치가 15 이상으로 커지는 경우 주기 및 개수의 변동을 모두 수행하되, 비교수치가 커짐에 따라 삽입되는 보이드 데이터의 개수를 더 많이 늘리는 방식으로 패턴의 보정을 수행할 수 있다.
지금까지 설명한 바와 같이, 본 발명에 따른 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템의 구성 및 작용을 상기 설명 및 도면에 표현하였지만 이는 예를 들어 설명한 것에 불과하여 본 발명의 사상이 상기 설명 및 도면에 한정되지 않으며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
1 : 메인 서버 2 : IPFS 노드
3 : 공유자 단말 4 : 요청자 단말
100 : 암호화 모듈 110 : 저장 용량 파악부
120 : 패턴 생성부 130 : 암호화 수행부
140 : 비교수치 산출부 150 : 패턴 보정부
200 : 분산 저장 모듈 300 : 블록체인 관리 모듈
400 : 해시 복원 모듈 500 : 파일 복원 모듈

Claims (9)

  1. 분산형 파일 시스템(IPFS) 기반의 파일 분산 저장 시스템으로서,
    입력된 파일을 이루는 데이터에 보이드 데이터(void data)를 삽입하여 암호화를 수행하는 것으로서, 상기 IPFS 네트워크를 통해 저장된 파일의 전체 용량을 파악하는 저장 용량 파악부와, 상기 전체 용량에 난수를 반영하여 상기 보이드 데이터(void data)의 데이터패턴을 생성하는 패턴 생성부 및, 상기 데이터패턴에 따라 상기 파일을 이루는 데이터에 상기 보이드 데이터를 삽입하는 암호화 수행부를 포함하는 암호화 모듈;
    상기 암호화된 파일을 복수의 데이터 조각으로 분할 처리하고, IPFS 네트워크를 통해 상호 연결된 복수의 IPFS 노드에 상기 분할된 데이터 조각을 분산 저장하는 분산 저장 모듈;
    상기 데이터의 다운로드 내역 및 업로드 내역과 상기 데이터패턴을 포함하는 트랜젝션 정보가 저장되는 블록 및, 복수개의 상기 블록이 연결된 블록체인을 형성하고, 상기 블록체인의 사본을 생성하여 상기 IPFS 노드에 전송하는 블록체인 관리 모듈;을 포함하되,
    상기 암호화 모듈은,
    상기 파일을 이루는 데이터를 그룹의 첫 번째 데이터인 오프닝 데이터(Opening data)와, 상기 오프닝 데이터에 종속되는 것으로서 상기 그룹의 마지막 데이터인 어사인드 데이터(Assigned data)와, 상기 오프닝 데이터 및 상기 어사인드 데이터에 종속 처리되는 것으로서 상기 오프닝 데이터와 상기 어사인드 데이터의 사이에 위치하는 적어도 하나의 추측 데이터(Supposition Data)로 그룹화하여 복수의 그룹을 생성하는 그룹 설정부를 포함하고,
    상기 암호화 수행부는,
    삽입되는 보이드 데이터마다 그룹 별 오프닝 데이터의 위치정보 및 상기 어사인드 데이터의 위치정보를 함께 삽입하는 기능을 포함하는 것을 특징으로 하는, 파일 분산 저장 시스템.
  2. 제 1항에 있어서,
    상기 암호화 모듈은,
    암호화 알고리즘을 통해 입력된 파일을 암호화하여 해시(hash)값을 생성하고,
    상기 트랜젝션 정보는,
    상기 해시값을 포함하는 것을 특징으로 하는, 파일 분산 저장 시스템.
  3. 제 2항에 있어서,
    상기 암호화 모듈은,
    공유자 단말로부터 입력된 파일을 상기 공유자 단말의 개인키를 사용해 암호화하고,
    상기 트랜젝션 정보는,
    상기 개인키와 대응되는 공개키를 포함하며,
    상기 시스템은,
    상기 개인키를 이용하여 상기 트랜젝션 정보에 저장된 상기 해시값을 복원하는 해시 복원 모듈;과,
    상기 해시값을 기반으로 상기 IPFS 노드에 분산 저장된 데이터 조각으로부터 상기 파일을 복원 처리하는 파일 복원 모듈;을 포함하는 것을 특징으로 하는, 파일 분산 저장 시스템.
  4. 제 1항에 있어서,
    상기 암호화 모듈은,
    저장된 파일의 용량, 디스크 할당 크기 및 오프닝 데이터의 개수에 따라 비교수치를 산출하는 비교수치 산출부 및,
    상기 비교수치에 따라서 상기 데이터패턴을 보정하는 패턴 보정부를 포함하며,
    상기 암호화 수행부는,
    보정 처리된 상기 데이터패턴에 따라 상기 보이드 데이터를 삽입하는 것을 특징으로 하는, 파일 분산 저장 시스템.
  5. 제 4항에 있어서,
    상기 비교수치 산출부는,
    다음의 수학식 1을 기반으로 비교수치를 산출하는 것을 특징으로 하는, 파일 분산 저장 시스템.
    수학식 1,
    Figure 112022048533674-pat00005

    (여기서, S는 보정수치, c는 분산 저장 시스템을 이용해 저장된 파일의 총 용량, d는 분산 저장 시스템을 이용해 저장된 파일의 디스크 할당 크기, o는 오프닝 데이터의 총 개수, n은 선형합동법을 이용하여 생성된 난수로서
    Figure 112022048533674-pat00006
    )
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
KR1020210156855A 2021-11-15 2021-11-15 분산형 파일 시스템 기반의 파일 분산 저장 시스템 KR102423284B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210156855A KR102423284B1 (ko) 2021-11-15 2021-11-15 분산형 파일 시스템 기반의 파일 분산 저장 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210156855A KR102423284B1 (ko) 2021-11-15 2021-11-15 분산형 파일 시스템 기반의 파일 분산 저장 시스템

Publications (1)

Publication Number Publication Date
KR102423284B1 true KR102423284B1 (ko) 2022-07-19

Family

ID=82607200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210156855A KR102423284B1 (ko) 2021-11-15 2021-11-15 분산형 파일 시스템 기반의 파일 분산 저장 시스템

Country Status (1)

Country Link
KR (1) KR102423284B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117762884A (zh) * 2024-02-22 2024-03-26 曙光信息产业(北京)有限公司 一种分布式文件智能管理***及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102065315B1 (ko) * 2019-10-04 2020-01-13 주식회사 도우테크 블록체인 기반 파일 보관 및 공유 시스템 및 방법
KR102154754B1 (ko) * 2020-06-22 2020-09-10 주식회사 비알인포텍 패턴화된 널 프레임 삽입을 통한 영상 암호화 시스템
KR20200121583A (ko) * 2019-04-16 2020-10-26 주식회사 바스랩 데이터 비식별화처리를 이용한 데이터 분산처리 장치 및 방법
KR20200127643A (ko) * 2019-05-03 2020-11-11 주식회사 바스랩 문서 관리를 위한 데이터 분산 처리 방법 및 그를 위한 장치
KR20210041458A (ko) * 2019-10-07 2021-04-15 주식회사 블록체인기술연구소 블록체인과 ipfs 기반의 그룹별 데이터 공유 시스템
KR102287729B1 (ko) * 2020-02-17 2021-08-20 주식회사 아웃라이어스 블록체인 기반 사용자 정보 관리 방법 및 시스템

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200121583A (ko) * 2019-04-16 2020-10-26 주식회사 바스랩 데이터 비식별화처리를 이용한 데이터 분산처리 장치 및 방법
KR20200127643A (ko) * 2019-05-03 2020-11-11 주식회사 바스랩 문서 관리를 위한 데이터 분산 처리 방법 및 그를 위한 장치
KR102065315B1 (ko) * 2019-10-04 2020-01-13 주식회사 도우테크 블록체인 기반 파일 보관 및 공유 시스템 및 방법
KR20210041458A (ko) * 2019-10-07 2021-04-15 주식회사 블록체인기술연구소 블록체인과 ipfs 기반의 그룹별 데이터 공유 시스템
KR102287729B1 (ko) * 2020-02-17 2021-08-20 주식회사 아웃라이어스 블록체인 기반 사용자 정보 관리 방법 및 시스템
KR102154754B1 (ko) * 2020-06-22 2020-09-10 주식회사 비알인포텍 패턴화된 널 프레임 삽입을 통한 영상 암호화 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117762884A (zh) * 2024-02-22 2024-03-26 曙光信息产业(北京)有限公司 一种分布式文件智能管理***及方法

Similar Documents

Publication Publication Date Title
EP3673620B1 (en) Shared blockchain data storage
EP3669280B1 (en) Shared blockchain data storage
US11658804B2 (en) Systems and methods for blockchains with serial proof of work
US11973869B2 (en) Maintaining blocks of a blockchain in a partitioned blockchain network
CN110647503A (zh) 一种分布式存储方法及装置
EP3669281B1 (en) Shared blockchain data storage
Sookhak et al. Remote data auditing in cloud computing environments: a survey, taxonomy, and open issues
US9489395B2 (en) System and method for exposing cloud stored data to a content delivery network
CN110011981B (zh) 一种基于区块链的可信云存储方法及***
Ali et al. Blockstack: A new decentralized internet
US20210303633A1 (en) Shard hashing
EP3709568A1 (en) Deleting user data from a blockchain
Li et al. Using blockchain for data auditing in cloud storage
CN113994324B (zh) 具有高效世界状态数据结构的区块链***
Kumar et al. Simplified HDFS architecture with blockchain distribution of metadata
Giri et al. A survey on data integrity techniques in cloud computing
KR102423284B1 (ko) 분산형 파일 시스템 기반의 파일 분산 저장 시스템
KR101371202B1 (ko) 멀티 메타데이터 서버 구조를 갖는 분산 파일 시스템 및 이를 이용한 데이터 처리 방법
KR101428649B1 (ko) 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법
US11416447B2 (en) Deduplicating distributed erasure coded objects
KR20190140550A (ko) 블록체인 기반 지식재산 공유경제 시스템 및 그 방법
Ghoshal et al. Exploiting block-chain data structure for auditorless auditing on cloud data
Ali et al. Blockstack technical whitepaper
CN114175011A (zh) 具有高效世界状态数据结构的区块链***
Ali et al. Secure provable data possession scheme with replication support in the cloud using Tweaks

Legal Events

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