링서명이 모네로 출력을 숨기는 방법

공개됨:
By Diego Salazar

모네로는 가상화폐 세계에서 최고의 보안코인으로 알려져 있습니다. 많은 사람들이 모네로의 보안이 강력한건 알지만, 왜 강력한지에 대해서는 이해를 못합니다.

많은 보안코인이 각 코인의 보안기술을 알려주는 비교차트를 게시하는데, 보통 모네로의 보안기술은 RingCT라고 나와있지만, 이는 부분적으로만 맞는 말입니다. 모네로는 보안을 위해 3가지 기술을 같이 이용하고 있습니다. 하나는 수취인을 숨기고, 하나는 거래량을 숨기며, 나머지 하나는 사용된 출력을 숨기는데 이 기술들은 각각 비밀주소, RingCT, 그리고 링서명입니다.

이러한 3가지 다른 기술의 응용은 하나가 실패하더라도 나머지가 모두 같이 실패하지는 않는다는 뜻입니다. 링서명이 이 중 가장 취약한 보안기술입니다; 여기서 취약하다는 뜻은 반복적인 공격에 민감하다는 뜻입니다. 하나씩 찬찬히 살펴볼까요?

위에서 말했다시피, 링서명의 목표는 거래에 사용된 출력을 숨기기 위함입니다. 만약 가상화폐에서 쓰이는 '입력/출력'의 뜻이 헷갈린다면 걱정하지 않으셔도 됩니다. 생각보다 복잡하지 않습니다. '출력'을 하나의 수표로 생각하시면 됩니다. 요즘은 잘 쓰이지 않지만, 수표는 결제수단 중 하나입니다. 수표처럼, 출력의 가치는 다양하고 - 만원, 삼만이천오백원, 등등... - 거래할 때 주고받습니다. 가상화폐에서, 출력이 이 역할을 담당합니다.

누군가가 당신에게 10 XMR을 주면, 당신은 10 XMR에 해당하는 출력을 얻습니다. 이 출력을 (10)이라는 가치를 가지고, 현실의 (물리적) 지갑에서 돈을 꺼내 상대방에게 지불하듯이, 결제자(송금인)의 지갑에서 꺼내집니다.

출력이 숨겨지는 방법은 원(링)을 만들어 (그래서 링서명...) 가짜 출력을 포함합니다. 하지만 이 '가짜'는 '거짓' 출력이 아닙니다. 이들은 블록체인에서 끌어온, 하지만 이 거래와는 무관한, 과거에 실제 있었던 출력이지만, 외부인은 진짜와 구별할 수 없습니다. 가짜출력의 갯수와 진짜 출력의 합이 링사이즈이며, 현재 링사이즈는 11입니다. 이는 실제 출력에 10개의 가짜 출력이 포함된다는 뜻입니다.

그럼 왜 그냥 링사이즈를 100이나 1000으로 늘리지 않을까? 더 많을수록 더 좋은게 아닌가? 보안의 측면에서만 생각한다면 맞는 말이지만, 다른 요소들도 고려해야 합니다. 현실의 사례를 생각해봅시다. 실제 화폐를 10개의 위조화폐 사이에 숨긴다고하면, 총 11개의 화폐를 들고 다녀야 합니다; 1개의 진짜, 10개의 가짜. 돈 조금 쓰기 위해 벌써 들고 다녀야하는 화폐가 많아졌습니다. 이 숫자를 1000으로 증가시킨다고 생각해봅시다. 만원을 쓰고 싶을 때마다 1001만원씩 들고 다녀야 합니다. 과자 하나 사기 위해 캐리어를 들고 다녀야할 것입니다! 링서명은 가짜를 실제로 보유할 필요는 없고 언급만 해 이와 완전 같지는 않지만, 이해에는 도움이 될 것입니다.

이 가짜들은 블록체인 내에서 비슷한 역할을 합니다. 가짜 하나가 추가될 때마다 검증에 필요한 시간도 증가하고 거래수수료도 증가합니다. 모든 노드가 모든 거래의 링서명을 통째로 다운받아야 하고, 모든 링서명은 진짜와 가짜를 포함하고 있습니다. 그뿐만이 아니라, 수학적으로 검증해 이 출력의 일부는 진짜라과 확인해야 하고 이런 수학적 검증에 소요되는 시간은 가짜가 추가될 때마다 증가합니다. 이는 링사이즈가 반복적인 공격으로부터 진짜를 숨기면서 너무 크지도 않은 어느 정도 적당한 선을 찾아야 한다는 의미입니다. 아무 숫자나 고를 수도 없고 (CLSAG를 통해서) 링서명이 작아진다고 링사이즈를 마냥 키울 수도 없습니다. 모네로 커뮤니티는 수학적으로 가장 최적화된 링사이즈를 원합니다. 너무 작으면 보안이 희생되어 반복적인 공격을 방어할 수 없을 것입니다. 너무 크면 보안에서 미약하게 강해지겠지만 규모 면에서 희생이 있을 것입니다.

마지막으로, 모네로에 관한 어떤 글들은 링서명이 송금인을 숨긴다고 하지만, 이는 사실이 아니며, 이는 그저 현학적인 차이가 아닙니다. 송금인(사람)과 출력(화폐)의 차이는 보안에 있어서 중대한 차이입니다. 출력이 송금인과 연관이 있을 수 있지만, 출력 자체가 송금인을 뜻하지는 않습니다. 링서명이 뚫리더라도, 무조건적으로 송금인과 연결되는 것은 아니며, 수취인과 거래량 자체는 아직도 숨겨져 있어 양측의 피해를 최소화할 수 있습니다.

하지만 이는 링서명이 뚫리는게 위험하지 않다는 말은 아닙니다. 메타데이터가 유출되는 것은 좋지 않고 다른 메타데이터와 같이 이용되면 우리 생각보다 더 많은 정보를 유출할 수 있습니다. 그렇기에 우리는 명확한 근거를 가지고, 메타데이터 유출의 피해를 최소화며 유저 경험을 최대한 향상시킬 수 있는 링사이즈를 정했습니다.

여전히 링서명이 뚫리는 것이 걱정된다면, 이를 해소할 좋은 소식이 있습니다. Triptych, Arcturus나 Lelantus같은 현재 개발중인 차세대 보안 프로토콜은 아주 좋은 기능을 가졌습니다. 이 프로토콜들은 링사이즈가 증가함에 따라 보안이 직선 향상하는 것이 아니라 대수적으로 향상됩니다. 이는 100개의 가짜를 넣어도 이전 세대의 10개 가짜 정도의 노력만 든다는 뜻입니다. 이는 엄청난 차이이며, 보안을 눈에 띄게 향상시킬 것입니다.

술래잡기같은 보안의 세계에서, 모네로는 항상 앞서 모두의 보안을 향상시키기 위해 노력하고 있습니다.


더 보기