Private transaction 전송을 위한 Tessera Overview

2024. 11. 8. 20:41Blockchain/Overview series

728x90
반응형

Tessera는 Hyperledger Besu나 GoQuorum에서 사용하는 private 보장 기술이다. 앞서 언급된 블록체인들은 모든 사용자에게 오픈된 public chain이 아닌 허가된 참여자가 사용하는 private, permissioned chain이라고 볼 수 있다. 그렇기 때문에, 태생적으로 모든 이들에게 오픈된 블록체인 특성에서 트랜잭션 거래 내역을 숨길 용도로 개발되었다. Tessera가 어떤 식으로 동작하는지 확인해본다.

Tessera

Tessera가 적용된 블록체인 플랫폼을 확인해보면 알 수 있듯이 EVM 상에서 privacy를 보장하기 위한 기술이다. Java 기반으로 만들어져 있어 Hyperledger Besu와 더 밀접해 보이지만, Golang으로 개발된 GoQuorum에서도 API 통신으로 기능을 제공하기 때문에 플랫폼의 개발 언어와는 무관하게 동작 가능하다. 일반적인 블록체인을 구성하는 노드들과 병렬적으로 Tessera 노드가 따로 동작하는 식으로 아키텍처가 구성되어 있으며, 각 블록체인 노드 당 하나의 Tessera 노드가 밀접하게 연결되어 운영되는 것이 일반적이다.

아래에서는 Tessera를 구성하는 주요 컴포넌트와 동작 방식 및 라이프 사이클을 중점적으로 확인한다.

Transaction manager

Tessera의 transaction manager는 블록체인에 기록되어 있는 트랜잭션의 privacy를 보장하기 위한 기본적인 기능을 담당한다. Document에서 확인되는 대표적인 transaction manager의 기능은 다음과 같다.

  • 다른 transaction manager들과의 P2P 네트워크 구축
  • 키관리 및 transaction payload에 대한 암복호화를 enclave에 위임
  • DB에 저장된 데이터를 저장하고 검색하는 기능
  • Privacy 기능이 활성화된 ETH client에 private transaction payload를 배포

Transaction manager의 life cycle

Tessera에서는 크게 두가지 방식으로 transaction에 대한 privacy를 보장한다. 하나는 일반적인 private transactions(Normal private transactions)을 이용하는 것이고, 다른 하나는 privacy marker transactions(PMTs)를 이용하는 것이다. 각각의 방식이 어떤 라이프 사이클을 갖는지 공식 document에 있는 내용을 통하여 파악한다.

위 그림은 일반적인 private transaction에 대한 라이프 사이클을 확인할 수 있는 그림이다. 여기서 참여자 A와 B는 트랜잭션의 전송 주체들이고, 참여자 C는 트랜잭션 전송에 대한 관련이 없는 상태이다. 그림에서는 GoQuorum을 기반으로 설명이 되어 있다.

  1. A는 private transaction을 GoQuorum node A로 전송한다. 전송 시에는 node A와 연결되어 있는 dApp을 사용한다.
  2. GoQuorum은 private transaction의 data 값을 JSON으로 직렬화하고, 참여자의 상세정보와 함께 Tessera node A로 전송한다.
  3. Tessera node A는 data를 암호화하고, 수신하는 transaction 참여자로 배포(distribute)한다.
  4. Tessera node A는 암호화된 data의 해시값을 GoQuorum node A로 반환한다. GoQuorum은 private transaction의 data 필드를 수신한 해시값으로 대체한다.
  5. GoQuorum은 네트워크를 통하여 private transaction을 배포한다.
  6. 모든 노드는 transaction을 확인할 수 있다. 하지만 해당 transaction에 대해서는 오직 직접적인 관련자 (여기서 A와 B)만 Tessera로 부터 복호화된 데이터를 획득할 수 있고, transaction을 실행할 수 있다.

위 그림은 PMT를 사용할 때의 라이프 사이클을 확인할 수 있는 그림이다. 참여자 A, B, C는 바로 이전의 normal private transactions 의 라이프 사이클 설명 때의 역할과 같다.

  1. A는 private transaction을 GoQuorum node A로 전송한다.
  2. GoQuorum은 private transaction의 data 값을 JSON으로 직렬화 하고, 참여자의 상세정보와 함께 Tessera node A로 전송한다.
  3. Tessera node A는 data를 암호화하고, 수신하는 transaction 참여자로 배포한다.
  4. Tessera는 암호화된 data의 해시값을 GoQuorum node A로 반환한다. 이 때 GoQuorum은 data 필드에 해시값을 넣고 public PMT를 생성한다. 이후 GoQuorum은 PMT에 서명한다.
  5. GoQuorum은 네트워크를 통해 PMT를 배포한다. 모든 노드는 PMT를 확인할 수 있다. PMT는 standard public transaction과 같은 방식으로 처리되며, PMT의 to value가 privacy precompile 컨트랙트이기 때문에 해당 contract가 호출된다.
  6. GoQuorum node B와 C는 PMT data 값을 이용하여 privacy precompile을 호출한다.
  7. GoQuorum은 PMT로부터 공개적으로 사용가능한 해시를 이용하여, Tessera로 부터 복호화된 private transaction에 대해 검색을 시도한다.
  8. 다음 action은 노드가 transaction 처리 참여자인지 아닌지에 따라 달라진다.
    • 참여자: GoQuorum은 Tessera로 부터 private transaction의 복호화된 data를 얻을 수 있고, privacy compile은 private transaction을 실행한다.
    • 비참여자: Private transaction을 찾을 수 없고, privacy precompile은 즉시 return한다.

이와 같은 방식을 보면, GoQuorum이나 Hyperledger Besu와 같은 일반적인 블록체인들은 자신들이 가지고 있는 transaction 처리 방식을 최대한 동일하게 가져가며, 실제 거래에 참여하고 있는 대상이 속한 노드에 Tessera 노드를 연결하여 해당 Tessera 노드가 암복호화를 진행한다. 이를 통해 거래 참여 대상인 노드만 정상적으로 복호화된 결과를 수신할 수 있는 구조를 가진다. 이는 PKI 공개키 알고리즘의 원리를 차용하여, 데이터를 직접적으로 볼 수 있는 권한을 가진 대상만 복호화 가능한 구조이다.

Enclave

Enclave는 사용자/운영자의 명령 및 데이터를 처리하기 위한 블랙박스로 수행되는 안전한 프로세싱 환경이다. Enclave는 악의적 공격으로 부터 그 안에 있는 정보들을 방어한다. Tessera의 enclave는 두가지를 다루는데, 첫째는 transaction manager가 요청한 암복호화 진행, 두번째는 해당 암복호화를 위한 키에 대한 관리를 수행한다.

Transaction manager와 enclave를 분리한 가장 큰 이유는 접근이 필요없는 코드베이스의 영역에서 누출된 민감한 데이터를 보호하는 transaction manager로 부터 책임을 분리하기 위함이다. 이러한 enclave는 아래와 같은 데이터를 다루는 책임이 있다.

  • Private/Public key 접근
  • Forwarding recipients의 identities (public keys)
  • 접근된 노드의 기본 identities (public key)

추가적으로, Enclave는 요청을 받을 시 아래와 같은 행동들을 수행한다.

  • 연결된 노드의 기본 identity(공개 키) 가져오기
  • 전달 수신자의 identity(공개 키) 제공
  • Enclave에서 관리하는 모든 identities(공개 키들) 반환
  • 지정된 발신자와 수신자에 대한 페이로드 암호화
  • 지정된 발신자에 대한 raw 페이로드 암호화
  • 지정된 수신자 또는 발신자에 대한 페이로드 복호화
  • 기존 페이로드에 새 수신자 추가

또한 enclave는 두가지 타입으로 운영이 가능하다.

  • Local enclave
    • Local enclave는 transaction manager와 같은 프로세스로 동작한다. 그러나 여전히 enclave와 transaction manager 사이에는 logical적으로 분리되어 있다.
  • Remote HTTP enclave
    • Remote HTTP enclave는 HTTP RESTful endpoint를 제공하고, transaction manager와 분리된 프로세스로 동작한다. 이는 enclave와 transaction manager 사이에 더 큰 분리를 제공한다. 추가적인 보안성으로 remote HTTP enclave는 transaction manager로 부터 물리적으로 분리된 환경에서 더 안전하게 배포될 수 있다. 이 때 Enclave는 transaction manager가 시작될 때에 반드시 제공되고, 동작하고 있는 상태여야 한다.

앞서 설명되었듯이 transaction manager 내부에서도 enclave가 수행하는 기능을 추가하여 운영될 수 있지만, 물리적인 보안성을 높이기 위하여 각기 다른 역할을 하는 컴포넌트들을 운영한다고 볼 수 있을것이다. Transaction manager는 privacy transaction의 처리 및 전송을 주로 담당하고, enclave는 해당 privacy transaction에 대한 암복호화에 집중하는 모습을 볼 수 있다.

Node discovery

Tessera 노드는 Besu와 GoQuorum과 같은 방식으로 peer discovery를 수행한다. Tessera node들은 그들이 보유하고 있는 peer URL list와 해당 peer들의 공개키를 공유한다. 이같은 방법으로 네트워크에 참여하고 있는 노드들은 다른 노드들 및 다른 참여자들의 공개키를 discover할 수 있다.

네트워크에 참가하고 있는 노드들은 configured peers의 리스트를 가지는 것이 필요하지 않기 때문에 이는 Geth의 부트노드, Cosmos의 시드노드와 비슷한 방법이다.

Privacy groups

Tessara는 Besu privacy 그룹 및 GoQuorum multiple private states(MPS)를 위한 resident 그룹과 연관된 동작을 지원한다. 예를 들어, privacy 그룹 데이터를 관리하거나 privacy 그룹에 포함된 트랜잭션을 다루는 것이다.

Tessera는 아래와 같은 privacy 그룹을 가지고 있다.

  • Legacy privacy group
  • Pantheon privacy group
  • Resident privacy group

유니크한 privacyGroupId는 각각의 privacy 그룹을 구분하는데 사용된다. Privacy 그룹으로 보내진 privacy transaction을 위해, 알맞는 privacyGroupId가 transaction과 나란히 저장된다. 아래는 데이터 형식의 예시이다.

{
  "privacyGroupId": "jufzisK63xbXDciV0FW1uAi3vXFDNNJpf/M3lUhMiU0=",
  "name": "groupA",
  "description": "A description of this group",
  "type": "PANTHEON",
  "members": [
    "98FhPni7u6YspDGcOLl/LgQQwwGPGY4ddm3hmogsqF8=",
    "dzkrEhkHZ/IjHEaQ6teVTU/kMjiwXTI6Ooljcb56w1M="
  ]
}

각각의 privacy 그룹의 특성에 대해 설명한다.

  • Legacy
    • Tessera는 privateFor를 사용하여 받는 사람의 공개키들에 대한 리스트로 private transaction이 보내질 때 legacy private group을 생성한다.
    • Private data가 Besu client로 반환될 때에 legacy의 privacyGroupId 또한 같이 반환된다. Legacy privacyGroupId는 수신자 키들의 리스트로 해싱됨으로써 생성된다.
    • 주어진 수신자들의 set에 대하여 legacy privacy group은 오직 하나로만 생성될 수 있다.
    • Besu와 Tessera는 같은 수신자 리스트로부터 동일한 legacy privacyGroupId를 생성한다.
  • Pantheon
    • Tessara는 블록체인 클라이언트로부터 pantheon privacy group의 생성을 가능하게 하는 API method를 지원한다. 생성시, privacy 그룹은 트랜잭션 처리의 모든 멤버들에게 분배된다.
    • Private transaction이 privacyGroupId를 포함할 때에, 트랜잭션 페이로드는 privacy 그룹의 모든 맴버들에게 배포된다.
    • Pantheon privacyGroupId 는 수신자 키 리스트와 random seed를 함현 결과의 해시값으로 생성된다. 이것은 주어진 수신자 set에 대하여 많은 pantheon privacy group들이 있다는 것을 의미한다.
  • Resident
    • Resident privacy group들 또는 resident group들은 GoQuorum MPS 및 multi tenancy의 일부이다.
    • Resident group은 로컬로 관리되는 멤버들의 키 리스트를 포함하고, 그 멤버들은 같은 private state를 공유한다.
    • Resident group 및 다른 타입의 privacy 그룹 간의 주요 차이점을 아래와 같다.
      • Resident group은 오직 로컬 키들만 가질 수 있으며 remote 키는 불가하다.
      • Resident group의 이름은 group의 identifier이다.
      • Resident group은 Tessera config file 내부에서 구성될 수 있다.

Multi-tenancy

전통적인 GoQuorum 및 Besu network에서 각각의 참여자(tenant)는 그들 소유의 GoQuorum 또는 Besu node와 Tessera node를 사용한다. Tessra는 하나의 tenant가 소유하고 있는 다수의 키쌍을 관리하기 위해 구성될 수 있으며, 이 모델은 더 많은 tenant들을 네트워크에 인입시킬 수 있는 효과적인 방법이다.

Multi tenancy는 각 tenant가 보유한 private state와 함께, GoQuorum 또는 Besu와동일하게 사용되기 위한 multiple tenants를 허가한다. GoQuorum에서 MPS(Multiple Private State)를 통해 multi tenancy를 활성 가능하고, 이는 MPS에 접근할 권한이 있는 각 tenant에 허가 할 수 있게 한다. Public state는 모든 tenant가 사용가능하고, private state는 logically 분리되어 있다.

Conclusion

블록체인은 참여하고 있는 모든 사용자들에게 오픈되어 있는 것이 기본적인 사상이기 때문에 프라이버시 보장이 필요한 일부 비즈니스에서는 사용하기 힘들다. 특히나 엔터프라이즈 환경에서는 더욱 데이터의 프라이버시 보호가 필요한 상황이 많이 발생한다. 이에 Tessera는 엔터프라이즈 환경에 맞는 블록체인을 제공하기 위해 고안된 Privacy를 보장 기술이다.

이러한 프라이버시 보장은 많은 블록체인에서 고민한 부분이다. Hyperledger Fabric에서는 채널 개념을 두어 채널에 포함된 사람만 블록체인 데이터를 확인할 수 있는 구조를 가지고 있고, Zcash 등에서는 ZKP(Zero Knowledge Proof)를 이용하여 프라이버시를 보장하려고 한다. Tessera 또한 같은 목적으로 탄생하였으며 비교적 단순한 구조를 가짐으로 개발자에게 조금 더 편하게 블록체인 상에 프라이버시 보장 기술을 적용시킬 수 있다. 많은 기술들이 그렇듯 trade off가 존재하여 Tessera도 분명한 단점들이 있지만 다른 플랫폼에서도 응용할 수 있는 가능성을 제공할 수 있음에 큰 의의를 가지고 있는 기술이라 생각한다.

참고
https://docs.tessera.consensys.io/overview
https://docs.goquorum.consensys.io/concepts/privacy

728x90
반응형

'Blockchain > Overview series' 카테고리의 다른 글

Oasys Overview  (0) 2023.07.10
BSC(Binance Smart Chain) overview  (0) 2023.06.14
Flow blockchain (w/NBA Top Shot) overview  (0) 2023.06.14
Hyperledger Cactus overview  (0) 2023.06.14
Tendermint Consensus overview  (0) 2023.06.14