블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 개념과 리뷰 시스템

정윤성 (Alec J)
CURG
Published in
12 min readMay 9, 2020

This is the first story that I published in studying Blockchain. Celebrate it!

디지털 컨텐츠가 증가함에 따라 데이터는 기하급수적으로 증가하고 있다. 특히 연구자 혹은 많은 데이터를 필요로 하는 사람들에게 데이터의 중요성은 더욱더 커지고 있는 상황이다.

이 글에서는 데이터를 공유하는데 있어 우리가 어떤 부분을 생각해야 하는 지, 그리고 현존하는 시스템은 어떤 문제를 가지고 있는지 제시하며 블록체인과 InterPlanetary File System(IPFS)을 이용한 안전한 데이터 공유 플랫폼의 시스템 구조와 시뮬레이션 결과 등을 소개하고 있다 [1].

데이터 공유(Data sharing)는 연구적 혁신으로부터 최대한의 이익을 얻기 위한 가장 기초적인 단계라고 할 수 있다. 특히, 이 논문에서는 3가지 W를 설명하고 있는데, 바로 what(무엇을), when(언제) 그리고 where(어디서)이다.

즉, 데이터를 공유하는데 있어 자신이 가지고 있는 혹은 다른 사람으로부터 어떤 데이터를 나눌 것인지, 언제 그 데이터를 나눌 것인지, 그리고 어디서 데이터를 나눌 것인지를 뚜렷하게 고려해보아야 한다는 것이다. 이 부분에 대해서 깊이 생각해보지는 않았지만 데이터를 공유하는 과정에서 보면 당연하면서도 매우 중요하게 작용하고 있는 요소라고 할 수 있다.

데이터 공유에 대한 소개는 이걸로 마친다. 사실상 위에 설명한 것이 모든 것을 말해주고 있으며, 이 논문에서는 ‘내 플랫폼이 가장 우수해요’ 라며 현존하는 시스템에 대한 문제점을 얘기하고 자신들의 플랫폼을 열심히 설명하고 있기 때문에 나도 그에 맞춰 이야기를 해주는 것이 좋을 듯 하다.

그렇다면 현존하는 데이터 공유 플랫폼의 문제는 무엇일까?

여러가지가 있지만 저자는 trusted third party (TTP), 즉 신뢰할 수 있는 제3자를 먼저 얘기하고 있다. 분명 믿을 수 있는 기관을 대상으로 내 데이터를 보관하고, 다른 사람과도 공유할 수 있는 환경을 이용하고 있다고는 하지만 그 제3자가 나의 데이터 혹은 다른 사람의 데이터를 어떻게 관리하고 있는 지 알 길이 없다.

즉, 제3자인 신뢰 기관을 믿지 못하는 사람의 입장에서 보면 이러한 시스템들은 trust(신뢰), transparency(투명성), security(보안) 그리고 immutability(불변성)가 충분히 적용되지 않는다는 것으로 받아들여진다.

데이터 공유 플랫폼이라는 말 자체가 어찌보면 매우 포괄적으로 느껴지지 않는가? 논문을 읽으면서도 이것이 그냥 단순 프로그램인지, 클라우드와 같은 스토리지인지 아니면 우리가 일반적으로 사용하는 인터넷 세상의 모든 것을 말하는 것인지 잘 분간이 되지 않았다. 그래서 필자는 하나의 예시로써 논문을 관리하고 있는 사이트를 생각해보았다.

연구자의 입장에서 본인이 참고한 자료에 잘못된 개념이 있거나, 오역이 많은 경우 그 자료를 모르고 사용하게 되는데 만약 심지어 그 자료를 비싼 돈을 주고 샀다면 상당히 억울하지 않을까? (돈이 많다면 할 말이 없지만)

이 논문의 저자는 기존의 공유 플랫폼 중 클라우드, IoT 기반 서비스에는 개인이 데이터를 자유롭게 통제할 수 있는 권한이 없음을 말하며, 블록체인을 이용한 탈중앙화 네트워크에 IPFS를 더해 데이터 분산의 끝판왕을 보여주고, 동시에 다양한 기능과 투명성, 신뢰성 그리고 안전성까지 확보할 수 있는 플랫폼의 필요성을 언급하고 있다.

시스템 모델 (System Model)

저자가 제시하는 새로운 플랫폼을 한 번 살펴보자. 이 시스템 모델은 4가지 entity(개체)를 가지고 있다.

  • Owner : 고객 중 공유할 데이터를 가진 사람이나 기관
  • Customer : 시스템으로부터 데이터를 구매하고자 하는 사람 혹은 기관
  • Workers : 고객을 대표하여 복호화 서비스를 제공하고, 새로운 고객이 들어오면 서명을 통해 신원을 확인하며, 고객에 의해 요청된 데이터에 관한 스마트 컨트랙트 query(질의)를 처리하는 역할
  • Arbitrator : 요청된 데이터를 다운로드 받는 중에 구매자와 판매자 간 분쟁이 생기는 경우 이를 해결해주고, 문제가 있을 때는 고객에게 입금된 금액을 환불해줄 수 있는 권한을 가진 사람

특이한 점이라면 Workers만 복수 형태로 표현되고 있는데 왜일까? 할 일이 많아서 그런가보다. 수동적인 사람이라고만 표현되었을 뿐 선출 과정은 따로 나오지 않은 것 같아 아마 이더리움 프라이빗 네트워크를 이용하는 이 플랫폼의 네트워크 구조적 특성상 개별적인 선출이 가능한 것이 아닐까라는 생각이 든다. 어쩌면 그냥 랜덤 노드일지도..

그러면 시스템 모델 개체도 알았으니 이제는 이 시스템이 어떻게 돌아가는 지 한 번 알아보자.

[그림 1] IPFS 위에서 이루어지는 데이터 소유자의 데이터 공유 과정 [2]

먼저 데이터를 가진 owner의 등장이 필요하다. 두둥!

Owner는 자신이 공유하고자 하는 파일을 IPFS 상에 올리게 된다.

잠깐! 여기서 IPFS는 무엇인가? (이미 아는 사람은 패스해서 시간을 아끼자.)

IPFS(InterPlanetary File System)는 웹을 빠르고 안전하게 만들 수 있는 분산 파일 시스템으로, 기존 HTTP 방식의 웹과는 차별성이 있다. HTTP 방식은 여러 컴퓨터에서 동시에 데이터 조각을 가져오는 대신 한 번에 한 컴퓨터에서 파일을 다운받을 수 있지만, IPFS는 개인과 개인이 직접 연결되어 파일을 공유하기 때문에 중앙 노드의 제어 없이도 데이터를 저장하는 행위 등을 할 수 있다 [3].

하지만 그 파일 자체가 IPFS 상에 그대로 올라가지는 않는다. 파일을 업로드할 때는 원본 파일로부터 추출된 메타 데이터만을 올리고, 원본 파일은 이후 여러 조각으로 분할하여 네트워크 상에 분산 저장하게 된다. 업로드가 완료되면 IPFS로부터 해시값을 하나 받게 되는데 이 값은 나의 원본 데이터 파일을 증명해 줄 중요한 요소라고 할 수 있다.

원본 파일은 어떻게 여러 조각으로 분할하여 네트워크 상에 분산 저장할까?

해시 값을 받은 owner는 스마트 컨트랙트를 이용해 검증된 workers 노드를 찾는다. 여러 workers 사이에서 선출된 하나의 worker 노드는 shamir secret sharing(SSS) 알고리즘을 이용하여 IPFS가 가진 파일을 k개의 shares로 분할하게 된다.

잠깐! 여기서 SSS는 무엇인가? (나만 모르는 이야기)

[그림 2] Shamir Secret Sharing Scheme - Secret을 7개의 share로 나누고 threshold를 3으로 설정한 그래프 [4]

Shamir Secret Sharing(SSS)은 1979년에 발표된 알고리즘으로, x축 좌표값이 서로 다른 t개의 점을 지나는 x의 t-1차 다항식은 유일하게 결정된다는 사실을 이용한다. 개인적으로 수학을 싫어하기 때문에 간단하게만 이야기 해보자면 t개의 점들 중에서 하나만 부족하더라도 무수히 많은 t-1차 다항식이 후보로 존재하여 원래의 다항식을 추측할 수 없다. 그렇기 때문에 t개보다 비밀 조각이 적으면 원래의 비밀값은 확인할 수 조차 없다. [4] (예측이 어렵기 때문)

이제 더이상 한 자리 꿰차고 개념 정리하는 부분은 없으니 쭉 읽으면 된다.

분할된 k개의 shares 중 암호화를 위해 사용될 n개의 랜덤 키가 결정되고 각각 암호화가 완료되면 블록체인 상에 해당 shares를 올려 영구적으로 기록하게 된다.

조금은 복잡할 수 있는 과정이지만 정리해서 말하자면, 원본 데이터의 메타 데이터를 IPFS 상에 올리면 해시 값을 받아 해당 정보를 가지고 workers를 통해 k개의 shares로 분할하게 되고, 분할된 k개의 shares 중 암호화를 위한 n개의 랜덤한 키를 추출해 암호화 한 후 블록체인에 해당 정보를 올리는 것이다.

데이터 공유 플랫폼 답게 IPFS와 블록체인에 데이터를 저장하는 것만으로 끝나지는 않는다. 이 시스템에는 흥미로운 몇 가지 기능들이 포함되어 있다.

[그림 3] 데이터를 구매하고자 하는 사람에 의한 요청

Owner가 올린 데이터를 누군가 사고 싶어한다고 하자. 이 구매자는 어떤 정보를 가지고 이 데이터 소유자의 것이 좋은 자료라고 판단할 수 있을까?

이 시스템에서 제안하는 것은 바로 Review system이다. 말 그대로 데이터를 파는 사람의 파일이 얼마나 유용한 지 사람들이 남긴 리뷰를 먼저 읽어보고 구매할 수 있는 권한을 갖는 것이다. 마치 우리가 배달 앱에서 다른 사람의 리뷰를 먼저 보고 음식을 주문하는 것처럼 말이다.

만약 리뷰가 하나도 없는 파일이 있다면 내가 먼저 사용해보고 리뷰를 남길 수도 있다. 이러한 경우 정상적인 리뷰를 남겼을 경우에 자신이 입금한 금액의 10%를 환불 받을 수 있는 정책을 적용하고 있으며, 구매한 데이터에 대해서는 subscription service(구독 서비스)가 적용되어 버전이 업데이트 되었을 때 그 자료를 무료로 받아볼 수 있다.

예를 들어, 우리가 책을 샀다고 가정해보자. 만약 저자가 수많은 오탈자를 수정하거나, 새로운 내용을 일부 추가하여 새로운 버전의 책을 다시 한 번 냈다고 했을 때 우리는 더이상 그 책에 대한 돈을 지불할 필요없이 기존의 구독 서비스를 이용하여 무료로 업데이트 된 자료를 제공받을 수 있게 된다. 이 모든 과정은 스마트 컨트랙트에 의해 이루어진다. (만약 저자가 버전 업데이트에 대한 돈을 지불하길 원하면 그렇게 설정되기도 한단다.)

어쨌든, 전체적인 과정을 한 번 살펴보면 데이터를 구매하고자 하는 사람은 데이터의 평점이나 댓글 등이 어떤지 한 번 살펴보고 workers에게 자신의 서명을 포함하여 구매 요청을 보내게 된다. 이후 Workers는 구매자의 신원을 확인하고 데이터 구매에 필요한 일정 금액의 이더리움이 입금되었는지 확인한다. 만약 필요한 이더리움이 제대로 deposit 되었다면 스마트 컨트랙트를 이용해 파일을 다운로드 받게되는 데 이 때 기존에 분할되었던 shares를 원본 파일로 복호화시키는 과정을 거친 후 구매자에게 돌려주게 된다.

초기에 자신의 서명을 포함하는 과정에 필요한 키는 Rivest Shamir Adleman(RSA) 비대칭 암호 알고리즘에 의해 생성되며, 다른 사람도 알 수 있는 public key와 나만 알 수 있는 private key 한 쌍을 가진다.

그렇다면 리뷰 시스템은 어떻게 돌아가는가?

만약 데이터를 사용해본 후 리뷰를 작성하고 싶다면 정상적인 리뷰라는 판정을 받아야 한다. 그 기준은 첫 번째로는 인공지능이 결정하고, 두 번째로는 데이터 소유자가 결정하게 된다.

하나의 리뷰를 작성하게 되면 review filtration에 의해 문제가 없는 지, fake review는 없는 지 1차적으로 확인받게 된다. 이 과정에서는 IBM의 Watson analyzer가 사용된다. 이 부분에 대해 검색해보니 Watson tone analyzer만 찾을 수 있었는데, 이 analyzer는 사람이 말하는 억양이나 분위기 등을 통해 감정분석을 하는 작업을 한다고 한다. 물론 텍스트로 작성된 내용도 판단할 수 있다고 하는데 정확도가 얼마나 좋을지는 모르겠다. (사실 인공지능은 아직 잘 모른다는 것이 팩트)

[그림 4] IBM Watson Tone Analyzer Logo [5]

1차적인 필터링을 거친 이후에는 그 정보가 데이터의 소유자에게 넘어간다. 또한 리뷰를 블록체인 상에 올릴 수 있는 사람도 최종적으로는 데이터의 소유자이다. 사실상 좋은 리뷰만 올릴 수 있다는 생각을 할 수도 있지만 부정적인 의견이라도 정상적인 형태로 작성되었다면 승인할 수 밖에 없는 구조를 가지고 있다. 투명성을 자랑하는 블록체인 특성상 리뷰 등록 거절 사유를 구매자에게 알릴 수 밖에 없기 때문이다. 물론 악용하려면 얼마든지 악용할 수 있지만 그런 일이 잦아진다면 결국 들통이 날 수 밖에 없는 시스템이 블록체인이라고 생각한다.

2차로 넘어간 단계에서의 순기능은 fake review를 다시 한 번 거를 수 있다는 점 그리고 특정 인물이 해당 데이터 소유자를 견제하는 경우(영업상) 악의적인 댓글을 계속해서 남길 수 있는데 이에 대한 모니터링이 가능하다는 점이라고 말할 수 있을 것 같다.

[그림 5] 가짜 리뷰 필터링
[그림 6] 리뷰를 등록한 사람을 위한 인센티브 제공

블록체인에 내가 쓴 리뷰가 등록된다면 지불한 금액의 10%를 refund 받을 수 있게 된다.

Reference
[1] A Secure Data Sharing Platform Using Blockchain and Interplanetary File System, 2019
[2] https://www.mdpi.com/2071-1050/11/24/7054
[3] https://blog.naver.com/jinncook/221730139613
[4] https://medium.com/codechain-kr/secret-sharing-%EB%B9%84%EB%B0%80-%EA%B3%B5%EC%9C%A0%ED%95%98%EA%B8%B0-356fd756323a
[5] https://www.ibm.com/watson/services/tone-analyzer/

--

--