Skip to content

wogns3623/digitc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Digital time capsule on blockchain!

스마트 컨트랙트를 활용하여 개봉일 이후에만 데이터를 복호화할 수 있도록 하는 탈중앙화된 디지털 타임캡슐입니다. 타임캡슐을 업로드한 사용자조차 개봉일 이전에는 데이터를 복호화할 수 없습니다.

실행

pnpm install
  • 컨트랙트 컴파일
# build contracts
pnpm contracts:build
  • 컨트랙트 배포
# run local hardhat node & dapp
pnpm run dev

# in another terminal
# deploy contracts to local hardhat network
pnpm contracts:deploy:local

개요

  • 스마트 컨트랙트의 결정론적이고 투명한 특성을 우회하기 위해 참여자 시스템을 도입하여 개봉일 이전에 데이터를 복호화할 수 없도록 합니다.

캡슐 등록-개봉 시스템

1. 캡슐 등록

  • 타임캡슐을 생성하고 싶은 사용자는 스마트 컨트랙트에 타임캡슐을 등록합니다.
  • 이 때 개봉일과 참여자 모집을 위한 보상 금액을 설정합니다.

2. 참여자 모집

  • 참여자는 타임캡슐의 개봉일과 보상 금액을 확인하고 원하는 타임캡슐 보관에 참여할 수 있습니다.
  • 이 때 참여자는 새로운 ECDH 키 쌍을 생성하여 공개키를 스마트 컨트랙트에 제출합니다.

3. 모집 마감 & 데이터 암호화

  • 참여자가 생기면 타임캡슐 소유자는 참여자 모집을 마감하고 타임캡슐에 저장될 데이터를 암호화할 수 있습니다.
  • 암호화는 서버에서 진행되며, 이 때 사용되는 대칭키는 암호화되어 타임캡슐에 저장됩니다.

4. 참여자의 복호화 키 제출

  • 개봉일이 지나면 참여자들은 스마트 컨트랙트에 자신의 개인키를 제출할 수 있습니다.
  • 타임캡슐에서는 공개키에 대한 개인키가 맞는지 확인하고, 맞다면 해당 참여자를 보상 목록에 추가합니다.
    • 개인키 검증은 컨트랙트 상에서 해당 개인키로 공개키를 생성해 기존에 저장된 공개키와 비교하는 방식으로 진행됩니다.

5. 타임캡슐 개봉

  • 개인키가 제출되면 타임캡슐 소유자는 타임캡슐을 개봉할 수 있습니다.
  • 이후 개인키를 제출한 참여자들은 보상 금액을 나누어 받습니다.

데이터 암/복호화 시스템

1. 참여자의 비대칭키

  • 클라이언트에서 ECC 키 쌍을 생성하여 개인키는 참여자가 보관하고, 공개키는 스마트 컨트랙트에 저장됩니다.

2. 타임캡슐의 비대칭키

  • 서버에서 ECC 키 쌍을 생성하여 공개키는 스마트 컨트랙트에 저장됩니다.
  • 비밀키는 참여자 각각의 공개키와 ECDH 키 교환을 통해 각 참여자별 공유키를 생성할 때 사용되며, 이후 따로 저장되지 않고 사라집니다.

3. 데이터 암호화에 사용될 대칭키

  • 이 대칭키는 서버에서 생성되며, 데이터 암호화에 사용됩니다.
  • 이후 각 참여자 n명의 공개키와 타임캡슐 개인키의 키 교환으로 생성한 공유 키 n개로 대칭키를 암호화하여 총 n개의 암호화된 대칭키가 컨트랙트에 저장됩니다.
  • 타임캡슐 개봉시에는 참여자의 개인키와 타임캡슐 공개키를 이용해 공유키를 생성할 수 있으며, 이 공유키로 대칭키를 복호화하여 데이터를 복호화할 수 있습니다.
  • 따라서 참여자는 개봉일 이전에 개인키를 받을 수 없어 복호화가 불가능합니다.

Design choice

개인키를 타임캡슐 참여마다 생성하는 이유

  • 참여자의 개인키를 제출하지 않으려면 복호화 단계에서 참여자가 복호화된 대칭키를 제출해야 합니다.
  • 이 경우 참여자가 여러명일 때 개인키를 잃어버린 참여자가 다른 참여자가 업로드한 복호화된 대칭키를 그대로 제출할 수 있기 때문에 부정 참여가 발생할 수 있습니다.
  • 개인키의 경우 모든 참여자의 개인키가 다르기 때문에 이러한 부정 참여를 막을 수 있습니다.

데이터 보관

  • 컨트랙트에 저장되는 데이터 크기를 줄이기 위해 타임캡슐에 저장될 데이터는 암호화되어 사용자 각자가 보관합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors