자산의 셀프 커스터디 이해하기
셀프 커스터디 지갑을 사용하려면 최소한 암호학의 기본 원리에 대한 지식이 필요하기 때문에 사용자가 사용하기가 어렵습니다. 또한 블록체인과 암호화폐 지갑에서 일어나는 프로세스를 알아야 합니다. 이 글에서는 암호화 키와 트랜잭션의 기본 원리에 대해 설명하겠습니다.
이해를 돕기 위해 일부 프로세스에 대한 설명을 의도적으로 단순화하고 일부 세부 사항은 생략했습니다. 이 글은 주로 초보자를 위한 글입니다.
자산을 소유하려면 비밀을 유지해야 한다
대부분의 블록체인과 마찬가지로 카르다노는 자산을 독점적으로 소유할 수 있습니다. 이는 오직 여러분만이 자산을 통제할 수 있으며, 세상 그 누구도 자산을 통제할 수 없음을 의미합니다.
독점적 소유권이란 오직 나만이 본인의 블록체인 주소에서 수신자의 주소로 자산을 전송하는 유효한 트랜잭션을 생성할 수 있음을 의미합니다. 따라서 본인만 자산을 사용할 수 있습니다.
이 기능은 사용자가 암호화 비밀을 생성하고 유지할 수 있는 능력을 조건으로 합니다.
블록체인 네트워크에서 자산의 소유권과 이전은 공개 키 암호화(비대칭 암호화라고도 함)를 기반으로 합니다. 일반적으로 암호화는 원격 참여자 간에 비밀스럽고 신뢰할 수 있는 방식으로 상호 통신할 수 있는 도구를 제공합니다. 하지만 이는 암호화 비밀이 공개되지 않는다는 전제하에 가능합니다.
자산을 소유하고자 하는 사람은 누구나 먼저 암호화 비밀을 생성해야 합니다.
이 비밀을 시드 또는 패스프레이즈라고 합니다. 미리 정의된 단어 목록(예: BIP-39)에서 특정 수의 단어가 무작위로 선택됩니다. 예를 들어 24개 단어가 될 수도 있지만, 이보다 적은 수의 단어가 사용될 수도 있습니다. 15개 단어가 될 수도 있습니다.
암호 문구(passphrase)는 카르다노 지갑을 설치한 후 모든 카르다노 지갑에서 생성됩니다. 셀프 커스터디 지갑은 암호화 비밀 없이는 절대 작동할 수 없습니다. 설치한 지갑은 여러분의 비밀로만 작동합니다.
기존 암호 문구를 사용하여 지갑을 복원할 수 있습니다. 동일한 암호화 비밀을 가진 여러 개의 지갑을 사용할 수도 있습니다.
특정 시점에서, 무작위로 생성된 암호 문구는 본인만 볼 수 있어야 합니다. 이는 자산에 대한 독점적 소유권을 가능하게 하는 암호화 비밀입니다.
따라서 검증된 지갑을 사용하고 있는지, 신뢰할 수 있는 출처에서 다운로드(또는 설치)했는지 확인해야 합니다.
지갑에 표시된 암호 문구를 정확히 기억해야 합니다. 필요한 경우 동일한 단어 목록을 동일한 순서로 조합할 수 있어야 합니다.
종이에 직접 적거나 금속에 새기는 등 다른 방법으로 안전하게 보관하지 않고는 이 작업을 수행할 수 없습니다. 암호 문구를 파일에 저장하거나 휴대폰으로 사진을 찍는 등 디지털 방식으로 저장하지 마세요.
컴퓨터의 라이트 지갑, 컴퓨터 전체 또는 스마트폰, 하드웨어 지갑을 분실할 경우 암호 문구를 다시 입력해야 할 수도 있습니다. 암호 문구를 알고 있으면 여전히 자산을 소유하고 있다는 사실을 기억하세요.
고의로 지갑을 삭제할 수도 있지만, 복원하려면 암호 문구를 알고 있어야 합니다. 자산의 소유권은 지갑의 존재 여부와 유효한 트랜잭션 생성 가능성에 달려 있는 것이 아니라 무엇보다도 암호화된 비밀, 즉 암호 문구를 유지하는 데 달려 있습니다.
이제 물리적 형태의 암호화 비밀과 지갑이 설치되었습니다. 다음 단계는 암호 문구에서 디지털 비밀을 뽑아내는 것입니다. 이것이 바로 암호화 키 생성입니다.
암호화 키
여러 개의 개인 키와 공개 키가 암호 문구에서 계층적으로 파생됩니다. 이 과정을 계층 결정론적(HD) 지갑 파생이라고 합니다.
좋은 소식은 이에 대해 걱정할 필요가 없다는 것입니다. 지갑이 모든 것을 알아서 해줄 것입니다. 백그라운드에서 어떤 일이 일어나고 있는지, 어떤 프로세스가 진행되고 있는지만 알면 됩니다. 지갑의 사용자 인터페이스는 암호화와 관련된 복잡성으로부터 사용자를 보호합니다.
아래 이미지는 시드로 시작하는 키 파생 구조를 보여줍니다.
지갑은 시드(암호)에서 키 쌍을 생성합니다. 마스터 키는 계층 결정론적 지갑 구조의 최상위 레벨입니다.
흔히 키가 아니라 코인이 중요하다고 말합니다. 키란 무엇인가요? 키는 암호화 비밀, 특히 개인 키의 일부라고 할 수 있습니다.
키는 대략 한 줄에 들어갈 수 있는 다양한 스크램블 문자의 문자열이라고 생각하시면 됩니다. 수많은 디지털 숫자와 0의 조합입니다.
두 개의 관련 키가 사용됩니다.
개인 키(또는 서명 키)가 먼저 생성됩니다. 그림에서 빨간색으로 표시되어 있습니다. 이름에서 알 수 있듯이 이 키는 비밀로 유지되어야 합니다. 트랜잭션은 이 키로 서명됩니다. 키 서명은 두 번째, 공개 키로 확인할 수 있는 특정 암호화 작업입니다.
공개 키(또는 인증 키)는 이 개인 키에서 파생됩니다. 그림에서 녹색으로 표시되어 있습니다. 이름에서 알 수 있듯이 이 키는 공개할 수 있습니다.
먼저 마스터 키 쌍이 생성됩니다.
마스터 키는 각각 고유한 주소와 키를 가진 여러 개의 카르다노 계정을 생성하는 데 사용할 수 있습니다. 계정은 또한 카르다노 지분을 나타내는 키 쌍으로, 풀에 위임할 수 있습니다.
스테이킹은 이 글의 주제가 아닙니다. 그러나 스테이킹은 암호화를 통해서도 작동한다는 점을 기억해두시기 바랍니다. 여기서는 결제 키가 필요한, 주소에서 주소로 트랜잭션을 전송하는 것에 초점을 맞추겠습니다.
블록체인 주소는 자금(UTxO) 보유에 사용됩니다. 이 주소로 UTxO를 받은 다음 이 주소에서 UTxO를 보낼 수 있습니다.
공개 키(결제 키 쌍에서 나온)는 주소를 생성하는 데 사용되며, 개인 키는 거래에 서명하여 자금의 소유권을 증명하는 데 사용됩니다.
아래 텍스트는 이해하기 쉽도록 단순화하여 설명하겠습니다. 블록체인 주소의 해싱은 다루지 않겠습니다.
자산 소유자는 증명자이고 카르다노 네트워크는 검증자입니다.
트랜잭션을 통해 자산을 전송하는 과정에서 관련 키 쌍을 사용해야 합니다. 자산은 공개 키에서 파생된 주소와 연결됩니다. 발신자는 트랜잭션에 디지털 서명을 하여 해당 주소에 있는 자산의 소유권을 증명합니다. 개인 키는 트랜잭션에 서명하는 데 사용됩니다.
트랜잭션의 디지털 서명은 펜으로 문서에 서명하는 것과 같다고 생각하시면 됩니다. 전문가는 서명을 명확하게 확인하고 사용자가 문서에 서명했는지 검증할 수 있습니다.
카르다노(블록체인 네트워크)는 공개 키를 통해 서명을 검증해야 합니다. 자산이 보관된 주소에 해당하는 개인 키가 사용되었는지 검증합니다.
카르다노는 암호화 비밀의 공개 부분과 검증에 사용할 수 있는 디지털 서명 형태의 비공개 부분이 있어야 합니다.
트랜잭션에 서명하면 개인 키는 공개되지 않습니다. 즉, 해당 주소는 여전히 트랜잭션 발신자만 소유한 UTxO를 보유할 수 있습니다. 유효성을 검사하는 동안 주소가 소유자가 사용하기에 충분한 양의 자산을 보유하고 있는지 여부도 검증합니다.
트랜잭션에는 수신자의 주소가 포함됩니다. 이 주소는 수신자의 공개 키에서 파생됩니다. 수신자는 해당 개인키를 보유하고 있으므로 이 주소에서 자산을 전송(소비)할 수 있습니다.
그림에서, 위에 설명한 단순화된 프로세스를 볼 수 있습니다.
앨리스가 밥에게 UTxO를 보냅니다. UTxO는 앨리스가 소유한 블록체인 주소에 있습니다. 앨리스의 지갑은 트랜잭션을 생성하고 입력된 UTxO를 트랜잭션에 넣습니다. 추가 트랜잭션 매개변수가 지정됩니다. 예를 들어, UTxO에서 소비할 값(간단하게 설명하기 위해 전체 UTxO가 밥에게 전송되므로 앨리스는 아무것도 돌려받지 못합니다).
밥이 소유한 블록체인 주소(밥의 공개 키가 사용됨)가 지정된 입력 UTxO에서 출력 UTxO가 생성됩니다.
자산을 전송하려면 앨리스는 자신의 지갑을 통해 개인 키로 트랜잭션에 서명해야 합니다. 디지털 서명은 그림에는 그려지지 않은 카르다노 네트워크에 의해 검증됩니다.
지갑은 트랜잭션에 삽입할 UTxO를 선택합니다. 또한 서명에 필요한 개인 키도 선택합니다. 대부분의 경우 사용자는 지출 비밀번호를 입력하거나 하드웨어 지갑의 버튼을 눌러 트랜잭션 전송을 확인합니다.
받는 사람의 주소와 송금할 금액을 다시 한 번 확인하는 것이 중요합니다. 트랜잭션은 환불되지 않습니다. 트랜잭션이 블록에 포함되면 취소할 수 없습니다. 잘못된 주소(존재하지 않거나 다른 사람의 주소)로 UTxO를 전송한 경우, 이 기록은 블록체인에 영구히 저장됩니다. 실수는 수정할 수 없습니다.
자산의 셀프 커스터디
자산의 셀프 커스터디란 무엇일까요? 자산 소유자가 알아야 할 사항은 무엇일까요?
블록체인 네트워크는 본질적으로 자산 소유권 기록을 보관하는 탈중앙화된 원장입니다. 소유자 이름 대신 블록체인 주소가 사용됩니다.
원장의 기록은 암호화를 통해서만 변경할 수 있습니다. 자산의 소유자를 변경하려면 현재 소유자가 개인 키를 통해 거래에 서명하여 소유권을 증명해야 합니다.
셀프 커스터디는 자산을 사용할 수 있는 독점적인 권리로 볼 수 있습니다.
소유자가 개인 키(지갑)와 암호 문구(암호화 비밀의 물리적 형태)를 모두 분실해도 원장의 기록은 영원히 남게 됩니다. 자산은 존재하지만 사용할 수 없습니다. 다시 말해, 암호화 비밀을 잃어버리면 소유자는 모든 자산을 영원히 잃게 됩니다.
누군가가 내 암호화 비밀을 훔치거나 공개하는 경우, 그들은 나와 동일한 자산 통제권을 갖게 됩니다. 여러분은 자산에 대한 배타적 소유권을 가질 책임이 있습니다. 만약 실패하여 누군가 자산을 다른 블록체인 주소로 이전하면 이를 변경할 방법이 없습니다.
심지어 특정 거래에 본인이 서명했는지, 아니면 본인의 암호화 비밀(암호 문구 또는 개인 키)을 훔친 사람이 서명했는지 증명하는 것도 불가능합니다.
자산은 주어진 블록체인 주소의 개인 키(또는 암호문)를 보유한 사람이 관리합니다. 그 사람이 유일해야 합니다. 하지만 이를 보장할 수는 없습니다. 여러 사람이 암호학적 비밀을 알고 있을 수 있습니다.
네트워크 합의는 거래 컨텍스트와 자산 소유자를 알지 못합니다. 네트워크 합의는 트랜잭션의 유효성, 즉 디지털 서명만 검증합니다. 거래가 유효하면 원장의 항목이 변경됩니다. 자산은 발신자 주소에서 수신자 주소로 전송됩니다. 거래는 블록체인(원장)에 영원히 저장됩니다.
개인 키를 사용하는 것 외에 자산의 소유자를 변경할 수 있는 다른 방법은 없습니다.
따라서 소유자는 자산에 대한 완전한 통제권을 갖게 됩니다. 그러나 소유자는 암호학적 비밀에 대한 전적인 책임이 있으며 관련된 모든 위험을 인지하고 있어야 합니다.
결론
다음에는 이 글에서 간략하게 설명한 내용을 자세히 설명하겠습니다. 어떤 암호화가 사용되는지, 블록체인 주소가 해시되는 방법과 이유, 디지털 서명이 작동하는 방식, 키 쌍이 결정론적으로 도출되는 방식 등에 대해 이야기할 것입니다. 이 글의 목표는 셀프 커스터디 지갑 사용과 관련된 기본 개념을 명확히 하는 것이었습니다. 사용자가 암호학의 기본을 알고 자산을 전송하는 동안 어떤 프로세스가 진행되는지 아는 것은 사용자에게 유익할 것입니다.
* Source: https://cexplorer.io/article/understanding-self-custody-of-assets
* Translation: Ilhun@CryptoVeri enics_sky@naver.com
1 post - 1 participant