암호 화폐의 암호 (기본 소개)

작성자 정보

  • 레딧 작성
  • 작성일

컨텐츠 정보

본문

[영상]

이 게시물의 목적은 암호화폐에서 작동하는 기본적인 암호화 메커니즘을 소개하는 것입니다. 암호화가 내부에서 어떻게 작동하는지 궁금하지만 어떤 이유로든 이를 조사할 시간이 없다면 이 게시물이 유익하고 즐거운 시간이 되길 바랍니다. 이 포스트의 목적을 위해 나는 단지 나 자신의 친숙함을 위한 예로 이더리움을 사용하는 것을 언급할 것입니다. 또한 게시하기 전에 시간을 내어 이에 대해 조사했지만 암호학은 내가 전문가가 아닌 매우 흥미로운 분야입니다. 나는 그것을 사용하는 것을 좋아하고 그것에 대해 열정적이지만 수학적 관점에서 나는 여전히 배우고 있습니다. 틀린 부분이 있으면 아래 댓글로 자유롭게 지적해주세요.

익숙하지 않은 사람들에게는 암호화가 암호화폐의 암호화라고 가정하기 쉽습니다. 암호화는 메시지를 특정 청중만 해독할 수 있는 코드로 바꾸는 행위를 의미합니다. 새로운 사람들이 원시 트랜잭션 해시를 보고 0x로 시작하는 이상한 문자 묶음이 암호화의 암호화라고 생각하고 그것을 하루라고 부르는 것은 유혹적일 수 있습니다. 그러나 누구나 해당 메시지를 해독할 수 있다는 점을 잠시 생각해 보십시오. 그것들이 모두 설계상 해독 가능하다면 이 모든 것의 요점은 무엇입니까? 다음 원시 트랜잭션을 살펴보겠습니다.

0xf901a1808459682f07831e8480949901ead10f6a379758c866febf9ad62184bfa643843b9aca00b901374e6f742065766572792077616c6c657420616c6c6f777320796f7520746f20696e636c75646520796f7572206f776e20646174612c2062757420746865206162696c697479206973206275696c7420696e746f20657468657265756d2e20596f75206a7573742074616b6520796f7572206d65737361676520616e6420636f6e766572742069742066726f6d205546543820746f2068657861646563696d616c2e20554654206973206772656174206265636175736520796f752063616e20696e636c7564652063686172616374657273207375636820617320e697a5e69cace8aa9e20666f72206578616d706c652e0a0a416e797761792c204920686f7065207468617420736561726368696e6720666f722074686973206561737465722065676720696e206d7920706f7374207761732066756e2e2ea0b02c1518b611a5a0bec7ab7aec4629730d9c437ed0dd7b752113741ced9a73b2a049b9221c1780e956a7f565889bca08859c794dafeb60846462782385d1d8f72b 

그 이상한 구조를 16진법이라고 하며 기본 16 시스템(컴퓨터에 매우 친숙함)을 사용하여 원하는 대로 작성하는 방법입니다. 이 시스템에서 숫자 0x1은 10진법 시스템에서 1, 0xF = 15 및 0x10 = 16입니다. 16진법의 UFT-8 메시지는 누구나 읽을 수 있습니다. 436F6E67726174756C6174696F6E7320666F722074616B696E67207468652074696D6520746F206C6F6F6B2074686973 TheFT' 메시지

이더리움 메시지가 실제로 구성되는 것은 서명된 다음 RLP로 인코딩되는 구조화된 메시지입니다. 그런 다음 바이트로 변환되어 16진수로 작성됩니다. RPL은 양방향 도로로 설계되었습니다. 메시지 구조는 다음과 같습니다.

 nonce: #the sequential number of this transaction from the pov of the from address gasPrice: gasLimit: to: value: # the value of the transaction data: # the data included as part of the transaction v: r: s:

그 정보로 누구나 메시지를 해독할 수 있습니다. 내가 제공한 예제는 https://antoncoding.github.io/eth-tx-decoder/ 에서 디코딩할 수 있습니다. 이 디코더 웹 사이트는 브라우저 앱에 있으며 오프라인에서 작동합니다. 이것은 네트워킹이 필요하지 않고 누구나 비교적 쉽게 디코딩할 수 있다는 점을 보여줍니다.

문제의 사실은 이러한 메시지가 디코딩되도록 설계되었다는 것입니다. 모든 사람이 해독할 수 없다면 이 중 아무 것도 작동하지 않을 것입니다.

암호화의 진정한 마법은 v,r,s 값에서 발생합니다. 이 세 가지 변수가 함께 트랜잭션의 서명을 형성합니다. 이더리움 트랜잭션의 경우 메시지는 rlp 인코딩 전에 서명되지만 이 세 필드만 추가됩니다. 서명에 대한 고급 지식 없이도 RPL을 통해 디코딩하고 모든 필드를 가져올 수 있습니다. ECDSA는 서명된 모든 트랜잭션 및 메시지에 공개 키(및 해당 키의 암호 화폐 지갑 주소의 경우)를 가져오는 방법이 내장되어 제공되도록 설계되었습니다.

나머지 메시지와 함께 이 3개의 값을 사용하여 공개 키를 계산할 수 있습니다. 공개 키는 16진수로 작성될 때 지갑 주소를 포함합니다. 따라서 이 거래에 대한 지갑 주소가 포함된 공개 키를 계산할 수 있다면 올바른 개인 키로 서명되었다는 증거가 있는 것입니다.

이것이 어떻게 작동하는지에 대한 메커니즘을 타원 곡선 디지털 서명 알고리즘(ECDSA)이라고 합니다. ECDSA는 훌륭하고 약간 복잡합니다. 요점은 그래프에 곡선, x 및 y 값이 있고 이 곡선에서 점을 이동하는 규칙이 있다는 것입니다. 개인 키는 이 패턴과 상호 작용할 때 이동하는 단계 수입니다. 메시지는 이 그래프에 표시할 수 있는 숫자로 해시되었습니다. 해시는 우리가 이미 보여줬던 것처럼 이미 가지고 있고 분해할 수 있기 때문에 모든 사람이 알 수 있습니다. 공개 키는 해당 그래프의 한 지점이기도 합니다. 곡선의 시각적 표현은 다음과 같습니다.

ECDSA 곡선

갭은 유한 필드를 사용하므로 숫자가 매우 크면 필드의 최대 크기를 지날 때마다 축을 가로질러 재생됩니다. 개인 키가 메시지에 서명할 때 메시지 해시, 시작점, 비밀 초대형 수(K)를 사용하여 r 및 s 값을 계산합니다(이더리움에 대해 v 값이 추가되어 가능한 공개 키 [예 ECDSA는 두 개의 공개 키를 생성합니다. 하나를 선택해야 함] 교차 체인 재생 공격[chainId당 두 개의 다른 숫자 사용]을 사용하고 보호합니다.

흥미롭고 매우 중요한 것은 값 K가 항상 고유해야 한다는 것입니다. 그 K 값은 비밀 키를 계산하기에 충분한 정보를 제공하는 두 번 사용된 경우에도 매우 큰 비밀 번호입니다. Sony는 많은 서명에서 동일한 값을 사용했으며 2011년에 내가 믿는 결과로 쉽게 해킹되었습니다.

여기서 흥미로운 점은 비밀 키는 메시지 서명에 사용되는 단계 수일 뿐이며 K가 매번 고유한 한 서명에는 항상 해당 공개 키를 드러내기에 충분한 정보가 포함된다는 것입니다. 단계 수가 비밀 키라고 생각하는 것은 웃기지만 의미가 있습니다. 무작위로 보이는 플롯 포인트로 채워진 그래프가 있고 광범위한 숫자를 처리하는 경우 한 포인트에서 다른 포인트로 이동하는 데 몇 단계가 필요한지 묻는다면 이미 알고 있지 않는 한 계산하기가 매우 어렵습니다.

https://preview.redd.it/5ktkc0s1w4191.png?width=780&format=png&auto=webp&s=294df2c1bd70641c9c9315fbefd695cd2c9017b3

나는 이 주제에 대한 나의 생각을 정리하고 이 글을 쓰는 시간을 가졌습니다. 나는 그것이 적어도 거기에 있는 몇몇 사람들에게 재미있고 유익한 정보였기를 바랍니다. 이 게시물에서 내 두 번째 "숨겨진" 메시지를 발견했다면 알려주십시오.

출처 / 추가 자료:

https://medium.com/@codetractio/inside-an-ethereum-transaction-fa94ffca912f

https://medium.com/mycrypto/the-magic-of-digital-signatures-on-ethereum-98fe184dc9c7

https://github.com/ethereumjs/rlp https://github.com/ethereumjs/ethereumjs-util

https://web3js.readthedocs.io/en/v1.2.11/web3-eth-accounts.html

동영상:

https://youtu.be/NmM9HA2MQGI (비밀 키 교환(Diffie-Hellman) - Computerphile)

https://youtu.be/NF1pwjL9-DE (타원 곡선 - Computerphile)

https://youtu.be/dCvB-mhkT0w (타원 곡선 암호화 개요)

https://youtu.be/QzUThXGRFBU (타원 곡선 디지털 서명 알고리즘 ECDSA | 10부 암호화 집중 과정)

https://youtu.be/6FlK3AZTz5k (타원 곡선 및 ECDSA - Bitcoin, Blockchain 및 Cryptoassets)

/u/MochiJump 가 제출함
[링크] [댓글]

관련자료

댓글 0
등록된 댓글이 없습니다.
전체 34,184 / 603 페이지
번호
제목
이름

공포-탐욕 지수


알림 0