모든 글

읽는 데 10분

CardanoWall Desktop: 존재 증명을 위한 로컬 메일 클라이언트

CardanoWall Desktop은 Label 309를 위한 오픈소스 크로스플랫폼 클라이언트입니다. 로컬 신원, 오프라인 우선 레코드 미러, 봉인 받은편지함, 보낸 레코드 추적, 그리고 원하는 게이트웨이 선택까지 제공합니다. 작동 방식을 살펴봅니다.

CardanoWall Desktop은 Label 309를 위한 오픈소스 데스크톱 클라이언트입니다. 존재 증명 레코드와 신원, 봉인 받은편지함을 브라우저 탭이 아니라 사용자 자신의 컴퓨터에 보관하는 방법입니다. 사용감은 메일 클라이언트와 같습니다. 사용자에게 향한 봉인된 레코드가 모이는 받은편지함, 게시한 모든 것을 보여주는 보낸편지함 뷰, 새 증명을 만드는 작성 흐름, 공개 온체인 레코드 집합을 살펴보는 로컬 Explorer, 수신 주소를 모아두는 연락처, 그리고 로컬 신원 관리가 있습니다.

이 글에서는 그 작동 방식을 설명합니다. 자신의 작업 방식에 맞는 도구인지 직접 판단해 보십시오.

핵심은 단순히 "데스크톱 앱"이라는 점이 아닙니다. 브라우저가 온전히 제공할 수 없는 세 가지 속성이 핵심입니다. 이 앱은 오프라인 우선이고, 벤더 중립적이며, 개인 키가 기기를 절대 떠나지 않도록 설계되었습니다.

데스크톱 앱은 어떤 문제를 해결합니까?

웹 앱은 가장 쉽게 시작할 수 있는 곳입니다. 데스크톱 앱은 로컬 소유를 원하는 사람을 위한 것입니다.

빠르게 증명을 만들거나, 레코드를 게시하거나, 계정 기반 워크플로를 실행하기에는 브라우저로 충분합니다. 그러나 그 이상이 필요한 사람과 기업이 있습니다.

  • 로컬에 암호화된 신원 볼트;
  • 이미 동기화한 레코드에 대한 오프라인 접근;
  • 로컬에 캐시된 암호화 파일;
  • 서버 측 라우팅이 아니라 로컬 복호화로 발견되는 비공개 받은편지함;
  • 공개 레코드 집합을 검색할 수 있는 로컬 미러;
  • 파일 전체를 메모리에 올리지 않고 스트리밍하는 대용량 파일 워크플로;
  • 자체 호스팅 게이트웨이를 지정할 수 있는 능력;
  • 특정 호스팅 벤더 하나에 얽힌 가정을 줄이는 것.

CardanoWall Desktop은 바로 이런 사람을 위해 만들어졌습니다. Label 309 모델을 사용자 자신의 컴퓨터로 가져오고, "오프라인"을 오류가 아니라 정상 상태로 취급합니다.

CardanoWall Desktop은 Cardano 지갑입니까?

아닙니다. 이것은 지갑이 아니며, 둘을 혼동하지 않도록 설계되었습니다.

ADA를 보관하지 않습니다. 지갑 복구 구문을 보관하지 않습니다. Cardano 트랜잭션을 만들거나 제출하지 않으며, 체인 키나 스토리지 키도 전혀 보유하지 않습니다.

게시는 여전히 Label 309 게이트웨이를 통해 이루어지며, 게이트웨이가 게시 파이프라인 전체를 소유합니다. 가격 책정, 업로드, Cardano 트랜잭션 빌드와 제출, 확인, 리오그 처리, 인덱싱, 잔액 정산이 모두 게이트웨이의 몫입니다. 데스크톱 앱은 클라이언트입니다. Label 309 신원을 로컬에 보관하고, 레코드를 준비하며, 서명을 선택했을 때 서명하고, 봉인 페이로드를 암호화하며, 들어오는 봉인된 레코드를 복호화하고, 증명을 검증하며, 사용자가 설정한 게이트웨이와 통신합니다. 스크립트나 터미널에서 동일한 분리를 원한다면, 오픈소스 명령줄 도구가 동일한 작업을 헤드리스로 수행합니다.

데스크톱 앱은 왜 오픈소스입니까?

신원과 서명, 암호화 파일, 장기 증명을 다루는 소프트웨어는 검사 가능해야 하기 때문입니다.

도구가 사용자의 키와 증거를 건드린다면, 사용자는 그 작동 방식을 읽을 수 있어야 하고, 보안 팀은 그것을 감사할 수 있어야 하며, 개발자는 그 위에서 무언가를 만들 수 있어야 하고, 운영자는 자신의 인프라를 지정할 수 있어야 합니다. 증명 형식이 공개되어 있고, 게이트웨이가 공개되어 있으며, 데스크톱 클라이언트 역시 공개되어 있습니다. 나머지 Label 309 코드와 동일한 Apache-2.0 라이선스를 따릅니다. 표준은 그 주변 도구만큼만 쓸모가 있으며, 그 도구가 사용자를 벗어날 수 없는 고객으로 묶어서는 안 됩니다.

여기서 "오프라인 우선"은 무엇을 뜻합니까?

오프라인 우선이란 네트워크를 쓸 수 없을 때에도 로컬 앱이 계속 쓸모 있다는 뜻입니다. 사용자가 보는 내용의 기준이 네트워크가 아니라 로컬 데이터베이스이기 때문입니다.

앱은 로컬 상태를 보관합니다. 동기화된 레코드, 받은편지함 매칭, 보낸 레코드, 연락처, 신원, 캐시된 암호문, 그리고 (사용자가 명시적으로 선택한 경우에만) 캐시된 복호화 파일이 여기에 포함됩니다. 오프라인 상태에서도 다음을 할 수 있습니다.

  • 이미 동기화한 레코드를 살펴봅니다;
  • 받은편지함을 읽습니다;
  • 캐시된 봉인 파일을 복호화합니다;
  • 캐시된 레코드를 검증합니다;
  • 로컬 데이터를 검색합니다;
  • 나중에 게시할 증명의 초안을 작성합니다.

오프라인이라고 해서 모든 동작이 완료되는 것은 아닙니다. 새 증명을 게시하려면 여전히 게이트웨이와 네트워크 연결이 필요합니다. 한 번도 캐시하지 않은 암호문을 가져오려면 여전히 스토리지 접근이 필요합니다. 그러나 이미 동기화한 데이터는 Wi-Fi가 끊겼다고 해서 사라지지 않습니다. (오프라인 자체가 목적인 경우 — 에어갭 해싱과 서명 — 은 오프라인 증명을 참고하십시오.)

데스크톱 받은편지함은 어떻게 작동합니까?

받은편지함은 사용자의 신원이 열 수 있는 봉인된 레코드를 보여주는 로컬 뷰이며, 서버는 어떤 레코드가 사용자의 것인지 결코 알지 못합니다.

게이트웨이는 모든 Label 309 레코드의 공개 스트림을 노출합니다. 데스크톱 앱은 그 스트림을 로컬 미러로 동기화합니다. 사용자의 각 신원에 대해, 앱은 해당 신원의 수신 키로 봉인된 키 슬롯을 로컬에서 열어 보려 시도합니다. 슬롯이 열리면 그 레코드가 해당 신원의 받은편지함에 나타납니다.

이것은 의도적으로 서버 측 메일함이 아닙니다. 게이트웨이의 피드는 수신자를 식별하지 않습니다. 수신자별 필드를 담지 않으므로, 봉인된 레코드가 누구를 위한 것인지 알 수 없습니다. 사용자의 클라이언트가 시험 복호화로 스스로 그것을 발견합니다. 바로 그래서 로컬 클라이언트가 봉인된 존재 증명에 그토록 잘 맞습니다. 사용자의 신원 키를 쥐고 있는 바로 그 컴퓨터가 받은편지함을 구성할 수 있는 유일한 곳이기 때문입니다.

보낸편지함 뷰는 무엇을 추적합니까?

보낸편지함 뷰는 사용자가 게시하는 레코드를 그 전체 수명 주기에 걸쳐 추적하며, 그 결과를 신뢰하는 대신 검증합니다.

제출 버튼을 누르는 순간 증명이 끝나는 것은 아닙니다. 증명은 여러 단계를 거칩니다. 초안 작성, 견적, 업로드 중, 게시 중, 제출됨, 확인 중, 확인됨 — 혹은 게시를 완료할 수 없으면 실패하고 자동 환불됩니다. 데스크톱 앱은 그 수명 주기를 로컬에서 계속 보이게 유지합니다. 어떤 게이트웨이가 사용되었는지, 어떤 신원이 레코드에 서명했는지, 레코드가 봉인되었는지, 어떤 수신자가 선택되었는지, 트랜잭션이 언제 확인되었는지, 그리고 온체인 레코드가 앱이 준비한 것과 일치한다고 로컬 검증기가 동의하는지를 보여줄 수 있습니다.

그 마지막 부분이 중요합니다. "확인됨"이 "게이트웨이가 그렇다고 말함"을 뜻해서는 안 됩니다. 게이트웨이가 트랜잭션을 빌드하고 제출하므로, 이는 그냥 믿고 맡길 일이 아닙니다. 버그가 있거나 악의적인 게이트웨이는 다른 트랜잭션을 보고하거나 확인 상태를 잘못 전할 수 있습니다. 그래서 트랜잭션 해시가 존재하는 순간, 앱은 온체인 레코드를 가져와 자신이 게시한 정확한 레코드와 바이트 단위로 비교한 뒤에야 무언가를 확인됨으로 표시합니다. 이는 사용자 자신의 보낸편지함에 적용한 독립 검증입니다.

신원은 데스크톱에 어떻게 저장됩니까?

각 신원은 로컬에 암호화된 볼트에 저장되며, 비밀 시드는 앱의 핵심인 Rust 코어를 절대 떠나지 않습니다.

모든 Label 309 신원은 하나의 32바이트 신원 시드(Identity Seed)에 뿌리를 둡니다. 앱은 그 시드에서 신원의 서명 키와 수신 키를 파생합니다. 시드 자체는 로컬 코어 안에 머뭅니다. 인터페이스를 그리는 웹뷰로 절대 전송되지 않고, 어떤 게이트웨이로도 절대 전송되지 않습니다. 인터페이스는 오직 공개 투영만 봅니다. 레이블, 핑거프린트, 공개 키, 수신 주소, 상태가 전부입니다. 볼트가 잠금 해제된 동안 시드는 제로화 메모리에 존재하며, 사용자가 앱을 잠그거나 유휴 상태에서 자동 잠금되면 지워집니다.

이 분리가 설계 전체의 핵심입니다. 시드는 휴대 가능한 백업이자 보호할 가치가 있는 대상이므로, 가장 중요한 자산으로 다뤄집니다. 계정이나 비밀번호가 아니라 시드가 진짜 신원인 이유에 관한 배경은 당신의 신원은 시드입니다를 참고하고, 그것을 기기 안에 두는 원칙은 키가 기기를 절대 떠나지 않는 이유를 참고하십시오.

솔직히 한 가지 한계가 있습니다. 비밀을 로컬 코어 안에 두는 것은 악의적이거나 버그가 있는 인터페이스로부터, 그리고 도난당한 잠긴 볼트 파일로부터 방어합니다. 그러나 완전히 장악된 운영체제까지 막아내지는 못합니다. 앱이 잠금 해제된 동안에는 같은 컴퓨터의 멀웨어가 원칙적으로 메모리 내 비밀을 읽을 수 있습니다. 짧은 잠금 해제 시간, 자동 잠금, 최소한의 의존성이 그 노출을 줄이지만 완전히 없애지는 못합니다. 이는 모든 데스크톱 지갑에 똑같이 따르는 유의 사항입니다.

직접 운영하는 게이트웨이를 사용할 수 있습니까?

가능합니다. 그리고 그것이 데스크톱 앱이 존재하는 주된 이유 중 하나입니다.

호환되는 모든 Label 309 게이트웨이와 작동합니다. 편의를 위해 공식 CardanoWall 게이트웨이를 지정하거나, 회사가 운영하는 자체 호스팅 게이트웨이를 지정하거나, 다른 제품 뒤에 있는 게이트웨이를 지정할 수 있습니다. 공식 게이트웨이는 기껏해야 원클릭 편의 진입점일 뿐, 사용자가 선택하지 않은 기본값이 결코 아닙니다. 게이트웨이의 기본 URL과 계정 키를 제공하면, 앱은 의존하기 전에 그 엔드포인트에 요청을 보내 표준을 따르는지 확인합니다.

구분은 명확합니다. 게이트웨이는 게시 파이프라인을 소유하고, 데스크톱은 로컬 클라이언트 경험을 소유합니다. 그 분리가 종속을 막습니다. 사용자의 로컬 앱, 로컬 신원, 로컬 캐시, 그리고 표준 레코드는 어느 한 호스팅 인터페이스에 의존해서는 안 됩니다.

게이트웨이는 무엇을 보고, 무엇을 결코 보지 못합니까?

게이트웨이는 게시하고 서비스를 운영하는 데 필요한 것을 봅니다. 그러나 사용자의 봉인된 파일을 읽거나 사용자를 사칭할 수 있게 하는 것은 아무것도 보지 못합니다.

게이트웨이는 사용자의 계정 자격 증명, 가격 견적, 업로드, 암호문, 잔액, 트랜잭션 상태, 공개 레코드 바이트, 운영 메타데이터를 볼 수 있습니다. 그러나 신원 시드는 보지 못하고, 수신자 개인 키도 보지 못하며, 사용자의 봉인된 파일을 복호화할 수도 없습니다. 데스크톱 앱은 모든 비밀을 로컬에서 준비하고 사용합니다. 게이트웨이는 표준 레코드를 게시하고 공개 피드를 제공할 뿐입니다.

이것이 게이트웨이가 결코 잘못 행동할 수 없다는 뜻은 아닙니다. 게이트웨이는 지연시키거나, 실패하거나, 레코드를 보류하거나, 상태를 잘못 보고할 수 있습니다. 바로 그래서 검증이 중요합니다. 유효한 증명은 게이트웨이의 인터페이스가 그렇다고 말해서 신뢰되는 것이 아니라, 공개 온체인 레코드와 공개 Cardano 익스플로러로부터 확인 가능합니다.

오프라인 상태에서 파일로 무엇을 할 수 있습니까?

그것은 무엇을 동기화하고 캐시했는지에 달려 있습니다. 그리고 앱은 어떤 파일을 곁에 두어도 안전한지에 대해 솔직합니다.

암호문은 이미 암호화되어 있으므로 자유롭게 캐시할 수 있습니다. 그러면 받은 파일을 다시 여는 것이 즉시 이루어지고 오프라인에서도 작동합니다. 복호화된 파일은 더 민감하므로, 복호화 파일 캐시는 명시적으로 선택해야 하고 기본적으로 꺼져 있으며 그 자체로 암호화됩니다. 기본 동작은 암호문을 보관하고 필요할 때 메모리에서 복호화하는 것입니다.

유용한 개념 모형은 다음과 같습니다.

  • 공개 레코드 메타데이터는 로컬에 미러링할 수 있습니다;
  • 암호문은 오프라인 접근을 위해 캐시할 수 있습니다;
  • 복호화된 파일은 신중하게 다뤄지며, 사용자가 명시적으로 저장하는 위치에만 디스크에 기록됩니다;
  • 신원 시드는 볼트 안에서 보호된 상태로 유지됩니다;
  • 캐시된 레코드와 파일에 대한 검증은 로컬에서 실행됩니다.

이로써 복호화된 파일이 위험에서 자유로운 척하지 않으면서도 오프라인 작업의 실질적 이점을 얻습니다. 그리고 복호화된 파일은 여전히 그저 하나의 파일입니다. 일단 저장하면, 그것을 건네받은 누구든 읽을 수 있습니다. 봉인된 증명은 키 보유자에게만 콘텐츠를 기밀로 유지합니다. 수신자를 신뢰할 만한 사람으로 만들어 주지는 않습니다.

데스크톱 앱은 누구를 위한 것입니까?

브라우저 탭이 더는 적절한 도구가 아닐 만큼 증명을 자주 다루는 사람과 조직을 위한 것입니다.

잘 맞는 경우는 다음과 같습니다.

  • 봉인된 증거를 받는 법무·컴플라이언스 팀;
  • 기밀 레코드를 다루는 언론인과 그들의 취재원;
  • 반복되는 컴플라이언스 증명을 게시하는 기업;
  • 자동화에서 Label 309를 사용하는 개발자와 플랫폼 팀;
  • 데이터셋과 산출물 커밋먼트를 보존하는 AI 팀;
  • 원작에 대한 서명된 증명을 보관하는 창작자;
  • 증거 패키지에 로컬 접근이 필요한 감사인;
  • 자체 호스팅 또는 벤더 중립 인프라를 선호하는 모든 사람.

가끔씩만 증명을 게시한다면 웹 앱이 여전히 가장 간단한 길이고, 오픈소스 명령줄 도구는 이미 오늘날 웹사이트 없이도 작업할 수 있게 해 줍니다. 데스크톱 앱은 지속적인 작업을 위한 것입니다.

무엇을 얻게 됩니까?

이것은 가벼운 장난감이 아니라 진지한 증거 소프트웨어처럼 동작하는 로컬 우선 제품입니다. 제공하는 것은 다음과 같습니다.

  • 명확한 신원 백업 안내로, 실수로 신원을 잃는 일이 없습니다;
  • 지갑 시드와의 혼동 없음;
  • 투명한 검증 상태;
  • 읽기 쉬운 확인 상태;
  • 신중한 대역 외 수신 주소 처리;
  • 레코드와 연 파일 전반에 걸친 로컬 검색;
  • 안전한 인라인 파일 미리보기;
  • 한곳에서 관리하는 여러 신원;
  • 확인 가능한 핑거프린트를 갖춘 연락처;
  • 자유로운 게이트웨이 선택;
  • 조용한 실패가 아니라 솔직한 오류 상태.

표준은 증명 모델을 제공합니다. 데스크톱 앱은 그 주변의 실제 작업 환경을 제공합니다. 오픈소스 코드에서 내려받을 수 있습니다.

요약

CardanoWall Desktop은 Label 309를 위한 로컬 클라이언트입니다. 공개 레코드 집합을 동기화하고, 신원을 로컬에 보관하며, 로컬 시험 복호화로 봉인 받은편지함 항목을 발견하고, 사용자가 보내는 증명을 추적하며(그리고 온체인에서 검증하며), 이미 동기화한 데이터로 오프라인에서 작동하고, 호환되는 모든 게이트웨이에 연결합니다.

웹 앱은 편의를 줍니다. 데스크톱 앱은 로컬 제어권을 줍니다.

더 읽을거리

cardanowalldesktoplabel-309