그래서 FOLD가 뭔데?FHE = 암호화된 값 그대로 덧셈 곱셈 등 연산을 해주도록 하는 기술. 5+3 = 8인건 당연한데,
a?34%1d4(암호화된 5) + ba#@1ax1(암호화된 3) = 1a?#ab3d(암호화된 8)
을 구할 수 있게 해줌. 원본 데이터를 보지 않고도 계산 가능하다는 장점 때문에 개인 보호가 필요한 데이터들에 쓰이고 있고, 경매 같은 작업에서 가장 비싼 입찰을 한사람을 도출하는 동시에 나머지 입찰 가격을 숨기는 것들이 가능함.
그래서 Fold가 뭘하냐? 하나의 노드가 아닌 여러 노드들이 FHE 키를 관리함. 하나의 노드가 FHE key를 가질 경우 암호화 데이터를 맘대로 복호화해서 볼 수 있기 때문에, 여러 노드가 각자의 Key Share를 갖도록 구성.
위 과정에서 어쨋든 암호화된 8을 다시 복호화해서 최종 결과를 얻어야하는데 이 때 여러 노드들이 자신의 키 Share를 이용해 부분적으로 복호화를 수행함
1a?#ab3d(암호화된 8)가 있을 때
철수: 철수가 가진 키 A -> 복호화 조각 1
영희: 영희가 가진 키 B -> 복호화 조각 2
민수: 민수가 가진 키 C -> 복호화 조각 3
이 복호화 조각 3개를 갖고있으면 8이라는 값을 얻게 됨.
근데 단순히 이렇게만 구성한다면 여러 노드들이 복호화된 값들을 제출할때 악의적인 노드가 가짜로 복화환 값을 제출할 수 있는 문제가 존재. 그래서 fold의 경우엔 "내가 가진 key 값을 알려주진 않을건데 이거 진짜 등록된 본인 키를 써서 복호화한 값이야" 이거를 zk로 증명함.
ZAMA와 비슷한데, ZAMA는 스마트 컨트랙트를 프라이빗하게 돌리는 거에 초점을 맞추고 있어서 상태를 계속 유지해야 하기 때문에 블록체인에 암호화된 상태를 계속 유지함. 반면 Interfold는 경매나 비공개 투표처럼 시작과 종료가 있는 특정 작업을 수행할 때 임시로 노드 위원회와 실행 환경을 구성하고, 작업이 끝나면 필요한 결과만 복호화한 뒤에 해당 실행 환경을 종료한다는 점이 다름.