Vernacular Mimblewimble: 새로운 유형의 개인 정보 보호 프로토콜
편집자 주: 이 기사의 출처는이더리움 애호가이더리움 애호가medium, 승인을 받아 Odaily에서 재인쇄했습니다.
(WeChat ID: ethfans), 저자: Conor O'Higgins, 번역 및 교정: stormpang & A Jian, 원문 출처:

참고: Mimblewimble은 퍼블릭 체인 합의 프로토콜로 설계되었으며 그 기능은 아래에 설명되어 있으며 트랜잭션의 특정 정보는 공개되지 않을 수 있습니다. 이미 Mimblewimble을 구현하는 팀이 둘 이상 있습니다.

이미지 설명
-Harry Potter - Warner Bros. - Mimblewimble 주문 조각 캐스팅-
(편집자 주: 사람의 입 모양은 밈블윔블을 쓰는 게 아니라 패트로누스 주문(Expecto Patronum)일 수도 있는데, 어때?)
Satoshi Nakamoto의 Bitcoin 논문에는 Satoshi Nakamoto가 Bitcoin의 개인 정보 제한을 매우 명확하게 설명하는 "개인 정보 보호"라는 장이 있습니다. 이러한 결함은 공격자가 Bitcoin 데이터를 사용하여 Bitcoin 사용자를 찾거나 실제 이름을 지정할 수 있게 됨에 따라 계속해서 "더 악화"될 것입니다. 이것은 비트코인이 이름과 연관되지 않아 개인 정보를 보호한다고 믿는 일부 사람들에게 놀라운 일이었습니다. 비트코인이 분석할 수 있는 데이터와 그 이유를 살펴보겠습니다.

보조 제목
비트코인은 3가지 비밀을 밝혀 통화 시스템의 두 가지 요구를 충족시킵니다.
모든 비트코인 거래는 3가지 비밀을 드러냅니다.
보내는 사람 주소
전송된 비트코인의 양
받는 사람 주소
비트코인은 프라이버시를 싫어하기 때문에 이 정보를 표시하지 않습니다. 모든 통화 시스템(금, 현금, 물물교환)은 다음 두 가지 조건을 충족해야 하기 때문에 이러한 비밀을 밝힙니다.
받은 코인의 양이 보낸 양과 같은지 확인할 수 있어야 합니다. 한 거래에서 한 주소에서 1개의 코인을 보내고 다른 주소에서 2개의 코인을 받을 수 있다면 암호화폐 시스템은 반드시 무너질 것입니다. 정상적인 시스템에서 내가 당신의 손에 5유로를 넣으면 나는 5유로를 잃고 당신은 5유로를 얻습니다. 이 거래 과정에서 돈이 갑자기 만들어지는 것도, 돈이 갑자기 사라지는 것도 아닙니다.
귀하의 은행 계좌가 아닌 내 은행 계좌에서만 자금을 전자적으로 이체할 수 있습니다. 거래가 직불 카드와 PIN/인터넷 뱅킹 암호 또는 암호 화폐의 개인 키 소유자로부터 전송되었는지 확인할 수 있어야 합니다.
비트코인은 위의 세 가지 비밀을 공개함으로써 이 두 가지 조건을 모두 만족시킨다.
비트코인 거래에는 이체 금액과 받는 사람의 주소가 일반 텍스트로 포함됩니다. 따라서 통화 시스템의 첫 번째 조건은 쉽게 충족됩니다: 5개의 비트코인이 거래에 들어가고 5개의 비트코인이 나오는 것을 볼 수 있습니다.
Bitcoin 시스템이 두 번째 조건을 충족하는지 확인하기 위해 Bitcoin은 해당 개인 키와 함께 공용 주소를 사용합니다. 공개 주소에는 비트코인이 있습니다. (트랜잭션) 발신자는 자신의 트랜잭션(즉, 방금 설명한 텍스트에 트랜잭션 금액과 수신자의 주소가 포함된 트랜잭션)에 서명하기 위해 해당 개인 키를 사용하여 서명을 생성합니다. 누구나 이 서명이 비트코인을 보유한 주소에 해당하는 개인 키에 의해 생성되었음을 확인할 수 있습니다.
밈블윔블은 위의 세 가지 비밀을 밝히지 않고도 통화 시스템의 두 가지 조건을 만족시킬 수 있습니다.
증명 과정에는 10세 어린이만 이해할 수 있는 몇 가지 간단한 수학이 필요합니다. 나는 또한 증명에 복잡한 수학을 사용하는데, 아마 12살짜리도 이해할 수 있을 것입니다.

곱셈은 쉬운데 인수분해는 어렵다
많은 사람들이 수학을 무서워하고 기사에서 나올 때마다 수학을 건너뜁니다. 하지만 아래 사진처럼 간단하다면 두렵지 않으시겠죠?

펜과 종이를 주면 2분 안에 이 문제를 풀 수 있겠죠? 곱셈은 사람들에게 매우 간단합니다. 컴퓨터의 경우 소형 포켓 컴퓨터로도 200만 차수를 곱한 결과를 빠르게 계산할 수 있습니다.
하지만 약간의 변화를 주자. 물음표를 다른 쪽으로 옮겨봅시다.
(막간: 이 기사에서는 83과 23과 같은 숫자를 곱하는 것에 대해 이야기할 것입니다. 왜냐하면 저는 이 숫자를 좋아하고, 친숙하고, 이해하기가 매우 쉽기 때문입니다. 하지만 컴퓨터는 이러한 숫자를 사용하지 않습니다. 매우 큰 숫자를 사용합니다. 사실, 컴퓨터는 내가 4221을 얻기 위해 어떤 두 숫자를 곱했는지 알아낼 수 있지만 매우 강력한 최신 컴퓨터도 매우 큰 숫자를 얻기 위해 어떤 숫자를 곱해야 하는지 거의 알아낼 수 없습니다.)
단순화를 위해 타원 곡선에 대해 논의하고 싶지 않습니다. 실제로 암호화 시스템은 숫자를 사용하지 않고 타원 곡선 점이라는 특수 컬렉션을 사용합니다. 그러나 간단한 수학적 속성은 두 경우 모두 동일합니다. 곱셈은 쉽지만 곱셈의 역인 인수 분해는 어렵습니다.
보조 제목

곱셈 속성을 사용하여 정보 숨기기 및 소유권 확인
아래 누락된 번호가 뭐냐고 묻는다면...

...물음표가 왼쪽에 있고 누락된 요소를 찾기가 어렵기 때문에 매우 빨리 말할 수 없습니다.

자, 말씀드리겠습니다. 누락된 숫자는 23과 83입니다. 이제 내가 말한 것이 사실인지 확인하고 싶을 것입니다. 누락된 것이 실제로는 단순한 곱셈 문제가 된 23과 83이라는 것입니다.
당신은 답을 매우 빨리 풀 수 있고, 23과 83은 실제로 제품을 20,348,031과 같게 만드는 요소입니다.
내가 거짓말을 하고 있다면 쉽게 알아차릴 수 있을 것입니다. 왜냐하면 제가 제공한 요소가 제품을 오른쪽에 있는 큰 숫자와 같게 만들지 않기 때문입니다. 나는 잘못된 요소를 구성할 수 없으며 추측하거나 계산할 수도 없습니다. 이 두 가지 요소를 미리 알아야 합니다.
(막간: 오른쪽에 있는 큰 숫자는 왼쪽에 있는 숫자를 구성하는 데 사용된 모든 숫자로 나눌 수 있습니다. 83, 11로 나눌 수 있고 왼쪽에 있는 모든 숫자로 나눌 수 있습니다. 나중에 이것을 활용하겠습니다. .)
이것은 단지 곱하기입니다. 10세 정도의 인형은 이해할 수 있습니다. 그러나 우리는 암호화폐에 대해 매우 중요한 두 가지를 달성했습니다.
정보를 숨기고 싶습니다. 이제 방법을 알았습니다. 미지수를 곱하는 형태로 정보를 숨길 수 있습니다. 이로 인해 원본 메시지를 해독하기가 매우 어렵습니다.
우리는 또한 개인 키를 보유하고 있음을 증명하고 싶습니다. 이제 우리는 그것을 수행하는 방법도 알고 있습니다. 큰 숫자의 약수를 제공하십시오.
단순히 곱셈의 기본 속성을 사용하여 두 가지를 모두 수행할 수 있습니다.

거래 금액 숨기기

큰 비밀 번호를 곱하여 거래 금액을 숨기자. 비트코인이 유출하는 세 가지 유형의 정보 중 하나는 전송된 비트코인의 수입니다. 비트코인 블록체인을 통해 5개의 비트코인을 보내면 거래 금액이 일반 텍스트(즉, 숫자 "5")로 표시됩니다. 곱셈으로 숨깁니다. 다음 방정식에서 거래 금액이 무엇인지 알려주는 것은 쉽지 않습니다.
위의 방정식은 Mimblewimble의 거래 금액 표현과 약간 비슷하지만 완전히 동일하지는 않습니다. Mimblewimble에서 발신자와 수신자 모두 다음과 같은 번호를 제공합니다.
이 숫자는 Pedersen Commitment라고 하는데 왜 그렇게 부르는지 모르겠습니다. 주목해야 할 중요한 점은 Pedersen Commitment에는 트랜잭션 금액의 일부(그러나 큰 숫자를 곱하여 숨김)와 개인 키의 일부가 포함된다는 것입니다.
발신자와 수신자 모두 트랜잭션 생성에 참여합니다. 이것은 비트코인과 완전히 다릅니다. 이 접근 방식은 수신자의 주소를 공개하지 않지만 발신자가 어떤 식으로든 수신자에게 연락해야 합니다. Beam에는 발신자와 수신자가 Pedersen 약정을 안전하게 교환할 수 있는 보안 BBS 시스템(Beam 블록체인과 별개)이 포함되어 있습니다.
(편의상 거래수수료는 생략했습니다. 실제 구현에서는 친구나 벤더에게 돈을 보낼 때 보통 채굴자에게도 약간의 거래수수료를 줍니다. -5를 보내는 것은 내 지갑에 공짜 동전 5개를 채우는 것과 같기 때문에 숨겨진 거래 금액이 음수가 아님을 증명합니다. 아마도 해리포터가 이것을 달성하기 위한 또 다른 주문이 있을 것입니다 :D)

곱셈적 연관성

다음은 우리가 할 가장 진보된 수학 작업입니다. 아일랜드에서는 12살의 큰 소년일 때 학교에서 그렇게 가르칩니다.
2 더하기 4 곱하기 3을 원하면 먼저 2 + 4 = 6을 계산한 다음 6을 사용하여 3을 곱하여 18을 얻거나 2 × 3 = 6을 먼저 계산한 다음 4 × 3 = 12를 계산하고 마지막으로 합계도 18입니다.
한 가지 기억하고 싶은 것은 두 숫자의 합에 세 번째 숫자를 곱하려는 경우 먼저 합산한 다음 세 번째 숫자를 곱하거나 먼저 곱하기 한 숫자에 세 번째 숫자를 계산할 수 있다는 것입니다. 숫자, 다른 숫자와 세 번째 숫자의 곱을 계산하고 마지막으로 두 곱을 더합니다. 이 두 프로세스는 동일합니다.
들어오는 돈이 나가는 돈과 같다는 것을 증명하십시오

통화 시스템에 필요한 조건 중 하나는 받은 금액에서 보낸 금액을 뺀 금액이 0이어야 한다는 것입니다. 내가 당신의 손에 5유로를 넣으면 당신은 5유로를 얻습니다. 5 - 5 = 0.

Mimblewimble 트랜잭션은 두 개의 Pedersen 커밋으로 구성됩니다. 하나는 트랜잭션에 입력된 금액을 기록하고 다른 하나는 트랜잭션 결과에 금액을 기록합니다.

예를 들어 보낸 사람이 5를 잃으면 받는 사람은 5를 얻습니다.
그러나 입력 거래 금액에 이 큰 숫자를 곱하고 출력 거래 금액에 이 큰 숫자를 별도로 곱하는 대신 다음과 같이 결합할 수 있습니다.

(번역자 주: 아래 그림의 "key1 + key2 × big number2"는 "[key1 + key2] × big number2"여야 합니다.)

5 - 5 = 0. 0에 큰 수를 곱해도 여전히 0입니다. 그러면 이 공식이 남습니다.
또는:

거래 금액 부분이 사라졌습니다! 각 단계에서 거래 금액은 큰 숫자를 곱하여 숨겨지지만 이러한 값을 공개할 필요는 없으며 결과가 0인지 확인하기만 하면 됩니다(시스템에 오류가 없음을 확인하기 위해).
거래 금액 부분을 숨긴 이유는 입출금이 동일하기 때문입니다. 그들이 같지 않다면, 그들의 합은 0이 아닐 것이고, 단순화의 결과는 더 많은 것을 갖게 될 것입니다...
...거래 금액이 0이 아닌 경우 거래 커널은 23과 83으로 나눌 수 없습니다. Beam 프로토콜은 형식이 잘못되었기 때문에 트랜잭션을 거부합니다.

(1909와 같이 트랜잭션 금액의 값이 0이 아닌 경우 트랜잭션 코어는 여전히 23과 83으로 나눌 수 있음을 알 수 있습니다. 그림에서 사용한 숫자는 매우 작기 때문에 이 우연의 일치 그러나 컴퓨터가 사용하는 매우 큰 규모의 디지털 영역에서는 그러한 충돌 가능성이 무한히 0에 가깝습니다.)

나머지는 개인 키 부분입니다.
개인 키 부분은 발신자와 수신자의 개인 키의 합계와 또 다른 큰 숫자의 곱인 매우 큰 숫자입니다. 개인 키는 이 큰 숫자로 나눌 수 있습니다. 오른쪽에 있는 큰 숫자의 "비밀 번호"로.
따라서 트랜잭션 코어를 개인 키로 나눌 수 있는 두 가지 이유가 있습니다.
거래 금액 부분이 0이기 때문에
개인 키 부분은 개인 키 83과 23을 포함하여 일련의 숫자를 곱하여 얻어지기 때문입니다.
이를 통해 모든 통화 시스템에 필요한 두 가지 조건을 충족할 수 있습니다.

거래 금액 부분이 0이면 입력 금액에서 출력 금액을 뺀 값이 0이라는 의미입니다. 즉 투입량과 산출량은 같아 돈이 사라지거나 돈이 생기지 않는다. 먼저 알 수 없는 큰 숫자를 곱하여 거래 금액을 숨긴 다음 곱셈 연관성을 통해 결합하여 큰 숫자로 가려지지만 합계는 정확히 0이 됩니다.


