===NuCypher KMS (Key Manage System)===
A. 중앙형 키관리 시스템
키의 생성/배포/순환(backend) 및 주입/저장/관리(frontend)
시스템의 적절한 구성과 관리를 위해 하드웨어 보안모듈/cloud 서비스등의 선생자본 및 과도한 신뢰요구
① 블록체인으로 중앙화 문제를 해결할 수 있음
② 프라이빗 데이터를 포함하는 암호연산과 가용성 및 접근 규칙을 적용하기 위해서는 현재 퍼블릭 체인이 적절하지 않고 신뢰도 역시 떨어짐
B. 분산형 키관리 시스템
암호화 및 접근권한 제어
신뢰가 필요한 서비스 제공자가 필요하지 않음
토큰이코노미: 임의의 참여자가 키관리 및 접근 권한 위임/철회작업을 수행하도록 인센티브
C. 프록시 재암호화(proxy re encryption)
사용자가 공유하는 공통의 비밀 키를 사용한다 (대칭키)
퍼블릭체인에서 불가능했던, 임의 수의 참가자간 개인정보 공유를 가능케 함.
암호화 되지 않은 대칭키(개인정보 암호 해독용)는 서버측에 노출되지 않음
재암호화 (비상호작용식)
① 여러 행위자가 A의 공개키를 사용하여 A의 M 데이터를 데이터 CA로 암호화.
② A는 B에게 M에 대한 접근을 위임하기 위하여, 자신의 비밀키와 B의 공개키로 암호화키 R을 생성
③ R키를 가지고 CA를 CB로 한번더 암호화 (CB를 해독하면 M이 나옴)
④ B는 자신의 비밀키로 CB를 해독
재암호화 (상호작용식): 두개의 비밀키로 재암호화 키가 계산
D. 누구나 타인의 공개키를 이용하여 암호화할수 있으므로, 악의적인 사용자가 A처럼 행동가능
A가 데이터에 공개적으로 서명하기는 어려움
암호문이 해독되기 전까지 서명확인 불가
서명과 암호화에 다른 키 쌍을 사용
E. 잡지구독에 대한 지불이 이뤄진 경우,
전송자는 공통키(dek)로 데이터(d)를 암호화(c)하고, 공통키를 자신의 개인키로 암호화한다(edek)
두 데이터를 모두 클라우드에 저장함
전송자는 자신의 개인키와, 수신자의 공개키를 활용하여 새로운키(re)를 생성한후, 프록시로 전송한다
RE키는 전송자나 수신자의 비밀키를 알아야만 분해할 수 있음, 즉 수신자는 re키를 분해할수 있다.
수신자는 스토리지로부터 암호화된 정보를 받는다(d, edek)
edek를 프록시로 전달하면, 프록시는 re를 활용하여 수신한 edek를 재암호화한후 수신자로 돌려보낸다.
수신자는 edek를 개인키로 해독하여 dek를 얻고, dek를 이용하여 data를 해독한다
F. 네트워크
노드 오동작: 챌린지 프로토콜
채굴자/수신자 결탁: 인센티브 토큰 이코노미
50% 노드결탁: Multi party computation에 치명적 – enigma => 어차피 원본손상이 없으므르 괜찮음
=> 암호화에 이용되는 키 관리가 중요한데, 분산식으로 처리하겠다.
===Enigma (Multi party computation)===
A. 프라이버시를 고려한 비밀 계약코드/컴퓨팅 실행
B. Off-chain private computin
C. 동작방식
Dapp의 contract가 enigma contract를 호출하면, enigma contract는 해당 작업을 워커들에게 분배
principal노드에의해 랜덤으로 선택된 워커 노드들은 task를 언팩하여 argment를 해독하고,
내부 EVM(SGX)에서 실행한다.
실행후 작업속성들의 해시는 신뢰높은 하드웨어상의 개인키로 서명된다.
온체인으로 커밋되어 검증받는다.
① 작업속성의 온전성(input, code, output)
② 신뢰된 하드웨어에 의한 안전한 실행
③ 선택된 워커에 의한 실행.
D. 이니그마 노드는 2가지 컴포넌트 surface, core로 구성됨
Surface: coordinate computation tasks between the Enigma Contract and Core.
Core: The trusted component of an Enigma node that executes computation tasks.
Core runs inside an SGX enclave.
Principal Node: A temporary centralized node that propagates random numbers to the rest of the network
=> 특별한 하드웨어가 있어야 함
===Ekiden(oasis labs)===
A. 신뢰가능한 컴퓨팅 플랫폼(Trusted execution environment) - SGX
B. 컨트렉트를 실행하고, 결과 및 상태를 각각 체인과 클라이언트에게 돌려 주도록하는 프로토콜
C. 키아이디어
블록체인은 체인의 상태에 대한 강력한 가용성과 저항성을 가짐
반면 TEE는 스토리지 가용성을 보장하지 못함
블록체인의 컴퓨팅능력은 한정되며, 검증을 위해 상태를 전체에 공개해야 함,
반면 TEE는 오버해드가 거의 없고, 원격 증명을 통한 신뢰된 상태(IAS)로서 검증가능한 컴퓨테이션을 제공함
D. 구성
에키든은 컴퓨트 노드를 오프체인의 TEE상에서 개인정보를 사용하여 스마트컨트렉트를 수행하기위해 사용
블록체인은 신뢰된 하드웨어를 사용할 필요가 없는 합의 노드에 의해 유지됨
컴퓨트 노드로부터의 데이터를 원격 입증을 검증하는 능력만을 사용함. (state)
C. Atomic delivery of execution result
TEE가 키매니져로부터 K를 받아 데이터를 인코딩한 후 클라이언트에게 전달
클라이언트가 수신하면 상태를 인코딩하여 블록체인에 전달.
Proof of Publication으로 블록체인에서 업데이트 된 상태가 보이면, k를 클라이언트로 전달.
E. 동일한 상태에서 다른 컴퓨테이션이 동시에 실행되었을 경우, 하나는 재연산한다-> 상태가 달라지므로
=> 결국 특별한 하드웨어가 있어야 하고, 연산 결과를 검증할 서비스(ISA)가 있어야 한다.
대신 합의과정이 단순하고, 단일 offchain의 결과만이 블록체인에 업데이트 되므로 빠르다