[bc] 블럭체인에 대해서 알아보자 (1) - 기본원리

Taurine·2022년 1월 15일
0
post-thumbnail
  • 하루 묻고-답하기 5개씩 매일 꾸준히 하는게 일단 가벼운 목표
  • 요 페이지에서는 일단 블록체인 기본원리에 대해서 이해하는 것을 목표로
  • 가장 기본되는 원리는 파악했다. 이제는 가장 단순한 수준으로 만드는

1. 블록체인이 뭘까?

주체 상호간의 약속을 검증가능하고 변경불가능하게 데이터로 저장하는 방식.

2. 분산 컴퓨팅 기술이 뭘까?

  • "인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 메시지를 하나에서 다른 하나로 보냄(message passing)으로써 거대한 계산 문제를 해결하려는 분산처리 모델이다."
    https://ko.wikipedia.org/wiki/분산_컴퓨팅

데이터 전체 또는 일부를 여러 주체가 나눠 갖는것.

3. 블록체인은 분산 컴퓨팅 기술을 어떻게 활용할까?

  • 관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술이다.
    https://ko.wikipedia.org/wiki/블록체인

어떤 약속이 정상적인 절차로 만들어진 약속인지 검증하는 역할.

4. p2p 방식이 뭘까?

  • Peer to Peer의 줄임말로 중앙 서버를 거치지 않고 클라이언트 컴퓨터끼리 직접 통신하는 방식을 통칭한다.
    https://namu.wiki/w/P2P

내가 누군가와 어떤 약속을 했으면 그 약속을 주변에 알려서 검증받고, 그것이 공동체에 참여하는 모든 사람들의 뇌리에 각인되어서 거역할 수 없게 만듬.

5. 원장이 뭘까?

어떤 주체가 서로 약속을 했다는 기록이 데이터로 저장되어 쌓여있는 것.

6. 블록체인은 데이터 위변조 방지를 어떻게 구현할까?

각 주체에게는 개인키와 공개키가 주어진다.

7. 해시 함수 기술이 뭘까?

그 함수 안에 무엇을 집어넣든 같은 길이의 랜덤문자가 튀어나오고. 무엇을 넣어야지 그 랜덤문자가 튀어나오는지는 오로지 같은 뭔가를 넣었을 때만 알 수 있지 다른 방법은 없음.

개인키, 공개키에 해시함수 기술이 사용되는 걸로 헷갈릴 수 있는데, 그게 아니고 일정한 시간마다 블록을 만들게 하기위해 무의미한 노가다(채굴)을 시키는데 해시함수가 사용되는 것.

8. 해시함수로 어떻게 데이터 위변조 방지를 할 수 있을까?

  • 해시값을 다음 블록에 넘기고, 또 현재 블록의 해쉬와 예전 기록을 합쳐서 또 다음 블록에 넘기고... 단순히 하나의 해시값이지만, 동일한 텍스트와 기록이여야만 가능한 것이기 때문이고, 이로 인해서 해킹이 당한것인지 장부를 악의적으로 조작한 것인지 쉽게 알 수 있는 것입니다.
    https://needjarvis.tistory.com/239

헷갈렸던 부분.. 해시함수 자체를 이해하는 것은 크게 중요하지는 않다. 그게 무슨용도인지가 중요하다. 결국 적절한 시간을 벌기 위해 난이도를 조절할 수 있는 퀴즈의 용도로 해시함수를 사용하는 거다.

9. 블록체인에서 코인의 역할은 무엇일까?

  • 비트코인에는 거래자들이 있고 채굴자들이 있습니다. 거래자들이 비트코인을 주고 받으면 그 정보가 채굴자 ‘모두’에게 전달이 됩니다. 거래 정보가 들어오면 채굴자들은 기존에 갖고 있던 장부(블록)와 비교, 정리해 기록(채굴)합니다. 거래 내역은 계속 끊임없이 생성됩니다... 채굴은 컴퓨터를 이용해 수학적으로 암호를 풀고 계산하는 과정입니다. 사람 머리로는 불가능하고, 컴퓨터를 이용해야합니다. 채굴자들은 채굴의 대가로 비트코인을 받습니다.
    https://www.dongascience.com/news.php?idx=21241

사람들을 채굴장으로 불러서 약속 데이터를 검증하게 하고, 그 데이터를 저장하도록 잡아두기 위한 용도.

10. 채굴 작업은 뭘 말하는 걸까?

블록체인 설계자가 노예들을 모으기 위해 만들어 놓은 게임 위에서 돈을 벌기 위해 놀아나는 작업.

11. 채굴기는 어떻게 블록체인 거래를 검증하는걸까?

  • 먼저 새로운 블록체인 트랜잭션이 발생하면 ‘메모리 풀’이라는 곳으로 전송됩니다. 메모리 풀은 네크워크에서 채굴자가 검증하기 전 상태로 확인되지 않은 모든 트랜잭션이 모여 있는 곳입니다.채굴자는 메모리 풀에 보류 중인 트랜잭션의 유효성을 확인하고 블록으로 만들어야 합니다. 블록은 데이터를 저장하는 단위로 여러 트랜잭션을 하나로 묶은 것을 말합니다. 채굴자는 메모리 풀에서 확인되지 않은 트랜잭션을 수집하고 이를 후보 블록으로 조합합니다. 이를 바탕으로 채굴자는 유효하고 검증된 블록으로 바꿔야 합니다. 다만 문제가 있습니다. 채굴자가 블록을 생성하기 위해서는 블록 정보에 복잡한 수학적 공식을 적용 후 수치화한 '해시(hash)’값을 역으로 찾아내야 합니다. 이 과정에서 복잡한 계산이 필요합니다. 만약 블록이 성공적으로 생성되면 채굴자는 그에 따른 보상으로 코인과 거래 수수료를 받게 됩니다.
    https://www.coindeskkorea.com/news/articleView.html?idxno=77088
  • 새로운 블록을 기존 블록체인의 끝에 연결시키려면, 해당 블록의 이름에 해당하는 해시값을 찾아내야 한다. 새로운 해시값을 성공적으로 찾아내는 경우 새로운 블록이 생성되어 기존 블록체인에 연결된다.새로 구성한 블록의 이름에 해당하는 해시를 찾아내는 일은 수없이 많은 시도를 반복해야 하는 매우 힘든 과정이다. 왜냐하면 새로운 블록의 해시는 반드시 프로그램에 의해 미리 정해진 목표값보다 작아야 한다는 조건을 충족해야 하기 때문이다. 예를 들어, 목표 해시값이 00ff32라고 가정하고, 새로 만든 블록의 해시값이 12fa3b라고 하면, 이 값이 목표값보다 더 크기 때문에 블록 생성에 실패하게 된다. 하지만 새로 찾아낸 해시값이 00c3b1이라고 가정하면, 이 값은 목표값보다 더 작기 때문에 새로운 블록의 생성에 성공하게 된다. 다음은 2018년 5월 1일에 실제로 생성된 비트코인 520,654번째 블록의 해시값[9]으로서, 숫자 앞부분에 영(0)이 18개가 표시되어 있다.
    http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8

흠. 검증과 관련해서는 발췌를 제대로 못했네. 여전히 해시함수에 발목이 잡혀서 그와 관련된 자료를 찾고 있었다.

12. 작업증명(채굴) 작업의 의미가 뭘까?

작업증명과 신뢰검증은 분리되는 것 같은데..

13. nonce값을 왜 구하는걸까?

  • nonce값은, 이 nonce값을 입력값 중의 하나로 해서 계산되는 블록 해쉬값이 특정 숫자보다 작아지게 하는 값을 말한다.
    https://codesk.tistory.com/109

위에서 여러번 설명했든 시간일 벌기 위해서이지 별다른 의미는 없다.

14. 그 값을 왜 구하는걸까?

  • 암호화폐 시장에서 코인을 채굴하는 사람은 점점 많아지는 반면 채굴 난이도가 똑같다면 채굴자는 해시파워(hashpower)만 높이는 것으로 빠른 속도로 암호화폐를 채굴할 수 있게 된다. 그렇게 되면 해당 암호화폐의 희소성이 떨어져 이를 방지하기 위해 연산의 난이도를 조정하는 것이다. 모든 암호화폐는 네트워크에 동원된 컴퓨팅 파워를 바탕으로 채굴 난이도를 조정한다. 이는 정해진 시간에 맞춰 일정 수의 블록이 생성될 수 있도록 하기 위한 조치이며, 채굴 보상을 얻기 위해 풀이에 참여하는 장비가 적으면 난이도가 낮아지고, 참여 장비가 늘어나면 난이도가 높아진다. 각 암호화폐마다 연산의 난이도는 다르며, 만약 암호화폐 하나에 채굴자가 몰리게되면 난이도가 더 높아져 과거와 동일한 수준의 노력만으로는 채굴하기가 어려워진다
    http://wiki.hash.kr/index.php/%EB%82%9C%EC%9D%B4%EB%8F%84
  • 비트코인 시스템은 전체 거래내용을 10분 단위로 모아 장부에 기록하는데 거래내용은 암호화되어 있기 때문에 누군가 암호를 풀어 장부를 기록해야 한다. 암호는 수많은 계산과 검토가 필요한 어렵고 번거로운 일이기 때문에 암호를 풀어 장부에 기록하는 권리와 그 대가인 신규 발행된 비트코인을 한 사람에게 주는데 이 과정은 마치 광부가 광산에서 곡괭이질을 거듭한 끝에 금을 캐내는 것과 비슷하다고 하여 채굴이라고 한다.
    http://wiki.hash.kr/index.php/%EC%B1%84%EA%B5%B4

음. 그런데 왜 10분에 한번씩 저장하는지 궁금하다. 10분 사이에 무지막지한 거래가 이뤄지면 문제가 생기지는 안을까? 궁금하네.

15. 코인 채굴은 무작위로 얻어지는걸까?

  • 비트코인 채굴이란 10분마다 벌어지는 '로또'에 비유될 수 있다. 비트코인 채굴에 성공하면 현재 12.5비트코인과 거래수수료를 합친 금액을 받게 되는데 이 로또에 당첨될 확률은 비트코인 네트워크에서 '나의 계산능력/전세계 계산능력'이다. 비트코인 채굴 성공확률을 올리려면 비트코인 채굴 기계를 많이 구입해 '나의 계산능력'을 올리면 되는데 이는 로또 게임을 많이 구입하는 것에 비유될 수 있다. 비트코인이 이렇게 설계된 주요 이유는 부정을 방지하기 위한 것이다.
    http://www.kookje.co.kr/news2011/asp/newsbody.asp?code=0200&key=20170529.99002073535
  • 무작위라고 함. 그래서 확률을 높이려고 마이닝풀에 참여한다고. 협동조합같은 느낌. 조합의 소득이 오르면 그걸 배분받는 느낌으로.

16. 채굴자는 nonce값을 찾는것과 새로운 블록을 만드는것이 어떻게 연결되나?

  • 블록체인의 모든 블록은 헤더와 거래 목록으로 구성되어 있습니다. 그 중 헤더는 비트코인 기준으로 아래와 같은 80바이트의 데이터입니다. 헤더를 구성하는 6가지 값중 version, prev_block, merkle_root, timestamp, bits 다섯가지는 채굴에 앞서 결정이 되어 있습니다. 그리고 이 값은 네트워크에 참여하는 어떤 노드라도 손쉽게 얻을 수 있는 값입니다. 하지만 nonce는 다릅니다. 이 nonce는 정해져 있지 않습니다. 가능한 범위는 0에서부터 2³² 까지의 모든 숫자이지만 어떤 것이 정답인지는 아무도 알 수가 없습니다. 직접 연산력을 투입하기 전까지는요. 작업 증명을 통한 블록 채굴을 하는 과정은 결국 이 nonce를 찾는 과정인데요, 수학적인 다른 기법을 통해 이 과정을 단축시키는 것은 불가능합니다. 오로지 직접 nonce를 하나씩 바꿔가면서 직접 연산을 해보아야합니다.
    https://medium.com/dnext-post/blockchain-core-series-pow-61227506a8c7
  • 블록을 만들기 위해서는 nonce를 구해야 하고, nonce를 구하려면 노가다를 해야함.

17. 코인을 거래하면 거래내역이 어디에 저장되나?

  • 노드에 저장됩니다 ㅎㅎ mattchoi님이 노드가 되어서 블록 데이터를 다 다운받으면 mattchoi님도 기여를 하시게 되는거죠! 예를들어 이더리움으로 치면 미스트라든가 이더리움월렛 패리티 이런걸 사용해서 블록싱크하면 데이터를 저장하게 됩니다~
    https://steemit.com/kr-qna/@mattchoi/nzfmv-kr-qna
  • 노드가 되는 방법이 궁금하긴 하다. 그것들을 분산처리에 참여하게 하는 방법도. 그거는 강좌 따라가면서 직접 블록체인 간단하게 만들어가면서 알아봐야겠다.

18. 노드가 되면 좋은점이 뭔가?

  • 채굴을 하기 위해서는 이전 블록체인의 내용을 알고 네트워크에 참여해야하기 때문에 블록체인 네트워크가 유지될 수 있고 채굴에 성공한 임의의 노드는 채굴 성공에 따라서 보상을 받게 되는거죠. 그러나 채굴에 성공하기는 사실상 로또에 가깝기 때문에 많은 채굴자들이 마이닝 풀이라는 걸 만들어서 같이 채굴에 참여하고 보상을 받게되는 경우 참여 지분에 따라서 나누게 되는 구조를 가진 것으로 알고있습니다.
    https://steemit.com/kr-qna/@mattchoi/nzfmv-kr-qna
  • 걍 코인 따려고 참여하는거임. 그럼 코인 채굴이 완료되면 블록체인은 어떻게 유지되지? 중요한 질문인듯.

19. 거래내역은 어떤 형태로 저장되나?

  • 비트코인의 경우 채굴 노드나 풀에서 똑같은 거래장부(데이터)를 보관하게 됩니다. 즉, 누구나 가지고 있는거죠. 하지만 이 장부라는게 전체 계정 리스트들에 대해서 얼마씩 보유하고 있다는 식의 장부는 아니구요. 필요한 경우 지금까지의 블록에서 일어난 트랜젝션들을 통해서 특정 계정에 들어있는 코인의 양을 확인하는 형태로 이루어집니다. 예를 들어서 lee5라는 계정에서 인출하는 트랜젝션을 보내게되면 노드들이 앞선 블록에서의 거래 내역을 검토해서 현재 계좌 잔액이 인출 잔액보다 많은지 확인하는거죠. 그래서 비트코인 노드에서 하는 일은 "계좌의 잔액이 출금액보다 큰지 확인하는 것"과 "해당 트랜젝션을 요구한 사람이 계정의 소유자가 맞는지 확인(공개키 검증) 하는 것" 두 가지 입니다.
    https://steemit.com/kr-qna/@mattchoi/nzfmv-kr-qna

위와 같은 식으로 거래내역이 추적되면 데이터가 쌓일수록 연산이 엄청나게 복잡해질텐데 그건 어떻게 해결하고 있지??? 100년 쌓이면 100년치를 역추적해서 지금 얼마있는지 계산해야되지 않나?

20. 블록체인 노드가 뭔가?

  • 중앙을 관리하는 서버가 따로 없지만 서버가 없는것은 아닙니다! 전 세계적으로 수십만개의 서버가 존재하며 이 서버를 노드(node)라고 부릅니다. 전세계 누구라도 노드가 될 수 있으며, 각 노드는 블록체인 네트워크에 연결된 모든 블록 정보를 가지고 있습니다. 노드는 크게 아래와 같이 2가지로 분류 할 수 있습니다.
    https://steemit.com/kr/@yahweh87/12-feat
  • 풀노드는 자신의 PC에 모든 블록체인의 내용을 가지고 있기 때문에 다른 노드의 도움없이 스스로 거래 검증이 가능하다. 하지만 용량이 너무 커서 다운로드를 받는데 시간이 오래 걸리고 하드디스크의 용량을 많이 차지한다는 단점이 있다. 이런 풀노드의 단점을 해결하기 위해 나온 것이 라이트노드(light node)이다.[6] 라이트노드는 가볍고 풀노드와 다르게 자료의 일부분만을 다운받는다. 대신 거래를 위해 내용 검증이 필요한데, 그때마다 풀노드에게 자료를 요청해야만 한다.
    http://wiki.hash.kr/index.php/%EB%85%B8%EB%93%9C

용량이 얼마나 되는지 궁금하네. 채굴이 완료되면 그거를 감당할 방법도 마련되어있는지 궁금하고.

21. 블록체인 거래내역이 어떤 과정으로 노드에 공유되나?

  • 정은이가 수아에게 1비트코인(BTC)를 주는 거래가 발생했다고 가정해봅시다. 정은이가 자신이 설치한 비트코인 월렛(Bitcoin Wallet)을 통해 수아 지갑주소를 입력해 ‘전송’ 버튼을 누를 것입니다. 이제 트랜잭션이 생성됐습니다. 아래와 같이 비트코인 송금에 필요한 모든 정보가 담겨있는 ‘거래정보’가 생성됩니다. 블록체인 생태계에서는 이 거래 정보가 정은과 수아만 알고 있어서는 거래가 완료되지 않습니다. 이 거래 정보가 블록에 들어가고 그 블록이 만들어져야지만 거래가 완료되죠. 이 때문에 거래 정보가 생성되면 근접한 이웃 노드들부터 순차적으로 트랜잭션이 공유됩니다. 위 왼쪽 그림처럼 거래 정보가 일단 하나의 노드에 전송되면, 정보를 받은 이 노드도 다른 모든 노드에게 받은 거래 정보를 ‘전파(broadcast)’ 합니다. 거래 정보를 받은 노드들은 ‘실제 존재하는 BTC인지’ ‘적혀져 있는 서명이 올바른 지’ 등 중요한 정보 내용에 대해 검증 합니다. 이때 오른쪽 그림처럼 검증하고 정보가 올바르다고 판단하면, 승인(v)하는 과정을 거치죠. 그리고 검증 내용 중 하나라도 오류 내용이 발견되면 바로 ‘폐기’됩니다. 다른 노드에 전파되지도 않죠.
    https://www.mobiinside.co.kr/2018/08/11/blockchainpepp-node/

승인하는 과정이 어떻게 진행되는지도 궁금하다. 디테일은 채워가면 된다. 큰 얼개 이해하는게 훨씬 중요해.

22. 트랜잭션은 신뢰성은 어떻게 검증되나?

  • 유효성 검증을 하기 위해서는 디지털 서명(Digital Signature) 혹은 전자 서명이 필요합니다...
  • 노드에 전파된 트랜잭션이 '진짜'인지 검증을 하기 위하여 '전자서명'이 필요하다. 공개키 암호화 알고리즘에 의해 송신자의 '개인 키'로 암호화 했을 경우 '전자 서명'된 데이터를 만들 수 있다. 트랜잭션에는 '원본 데이터'와 '전자 서명'이 포함되어 있으며 각 노드로 전파된 트랜잭션이 진짜 인지를 검증하기 위해 사용된다. 노드는 '전자 서명'된 데이터를 난독화 하여 난독화된 데이터와 원본 데이터가 완전히 일치했을 경우에만 유효한 트랜잭션으로 인정하고 해당 거래를 업데이트 후 주변 노드들에 해당 트랜잭션을 전파한다.
  • 'Caw'가 거래 내용을 마치 'Bird'가 'Dog'에게 BTC를 송금한것 처럼 메시지를 작성한 후 자신의 개인 키 정보를 이용하여 전자 서명 후 비트코인 네트워크에 있는 노드들에게 해당 거래내역을 전파합니다. 트랜잭션을 수신 받은 노드는 해당 메시지를 확인 후 Bird가 보낸 메시지가 맞는지 확인하기 위하여 Bird가 가지고 있는 공개 키 정보로 디지털 서명을 복호화 합니다. Bird의 공개키로 암호화된 데이터를 복호화 하였지만, 복호화한 데이터와 트랜잭션의 원본 내용이 일치하지 않기 때문에 해당 거래내역은 '가짜' 혹은 조작된 거래내역으로 판별하고 해당 트랜잭션을 무시하게됩니다.
  • 원본 데이터를 자신의 '개인키'로 암호화를 진행하여 '전자서명'을 진행합니다. 원본 데이터와 '전자 서명'된 데이터를 노드에 전파합니다. 노드는 해당 트랜잭션이 '진짜'인지에 대한 검증을 위해 트랜잭션을 송신한 'Bird'의 공개키를 이용하여 난독화를 진행합니다. 난독화된 거래 데이터와, 원본 데이터를 비교하여 수정된 데이터가 있는지 데이터의 무결성을 검증합니다. 수신 받은 트랜잭션이 '진짜'거래로 판단될 경우 블록체인에 해당 트랜잭션을 업데이트 하고 블록체인 네트워크에 연결된 노드들에게 해당 트랜잭션을 전파하게 됩니다.
    https://steemit.com/kr/@yahweh87/15-3-n

개인키로 거래데이터를 암호화해서 전자서명을 만들고, 전자서명을 거래데이터와 동봉하여 다른 사람들에게 전달하면, 다른 사람들이 공개키로 전자서명을 난독화해서 그 데이터가 동봉된 거래데이터와 일치하는지 확인하여 검증! 코드 수준으로 블록체인이 어떻게 구현되어있을지 궁금해졌다.

23. 개인키와 공개키가 뭔가?

  • 블록체인 세상에서는 지갑이 필요가 없어지고 전자지갑이 이를 대체하게 된다. 비트코인과 개인 신원등을 전자지갑안에 소유하며 디지털키, 비트코인주소, 디지털서명 들을 통해 비트코인의 소유권이 성립된다... 그 키는 개인키와 공개키 이렇게 한쌍으로 구성되어 있다. 공개키는 은행의 계좌번호와 유사하고 개인키는 비밀PIN혹은 계좌관리를 위한 수표에 하는 서명과 유사하다고 보면 된다. 공개키로 우리는 공개된 장부인 블록상의 거래에서 해당 거래키를 가지고 있는 사람의 거래들이 참인지 거짓인지 정도확인이 가능하다고 볼 수 있다. 개인키는 개인키를 이용해 직접 거래를 발생시킬 수 있으므로 개인키는 정말 백업을 여러번 확인하고 항상 소중히 보관해야 한다.
    https://www.banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EA%B3%B5%EA%B0%9C%ED%82%A4%EC%99%80-%EA%B0%9C%EC%9D%B8%ED%82%A4-Nhtdy

개인키는 자물쇠, 공개키는 열쇠 비유가 난 더 좋다. 뭐 내가 파악 못한 부분이 있어서 이러한 비유가 안들어맞는지는 몰라도.

24. 복호화 난독화가 뭔가?

후후 이제 기초적인 것으로 느껴진다~

25. 개인키로 암호화한것을 어떻게 공개키로 복호화할 수 있지?

  • 우선은 말그대로 어떤 메세지를 암호화하고 복호화 하는 방식 중 하나 입니다. 다른 암호 방식에는 대칭키 암호 방식 등이 있습니다. 공개키 암호 방식에서, 사용자는 공개키와 개인키(비밀키)를 부여받습니다. 사용자는 어떤 데이터를 공개키와 개인키를 활용하여 암호할 수 있습니다. 공개키와 개인키는 단 하나의 짝입니다. 개인키가 같고, 공개키가 다른 경우는 존재할 수 없고, 반대로 공개키가 같은데 개인키가 다를 수 없습니다. 공개키는 말 그대로, 남들에게 공개할 수 있는 키이고 개인키는 본인만이 가지고 있어야하고, 개인키가 노출되는 순간 심각한 보안 위협에 처할수 있습니다. 공개키는 개인키를 타원 곡선 암호 알고리즘을 통해 얻습니다. 즉, 비트코인 블록체인 상에서 사용자는 랜덤으로 주어진 개인키를 부여받고, 그 개인키를 타원 곡선 암호 알고리즘을 돌려 공개키를 얻는다고 볼 수 있네요. 개인키로 공개키를 알 수 있는 반면, 공개키로 개인키를 알 수 없습니다.
  • (1)공개키로 데이터를 암호화하면 개인키로 복호화(암호화를 푸는 것)를 할 수 있고,
    (2)개인키로 데이터를 암호화하면 공개키로 복호화를 할 수 있습니다. -> 이 두가지 특성이 암호화폐 거래에서 사용됩니다.
  • 댕댕이는 냥냥이만 그 메세지를 볼 수 있도록 하고 싶네요. 그럴 경우, 댕댕이가 냥냥이의 공개키로 '댕댕댕' 메세지를 암호화하면, 오직 냥냥이의 개인키로만 메세지를 복호화 할 수 있습니다. 결국, 다른 사람들은 무슨 내용인지 모르고 냥냥이만 해당 메세지를 받을 수 있겠죠?
  • 댕댕이는 본인이 댕댕이라는 것을 증명하기 위해서, 메세지를 댕댕이의 개인키로 암호화하고 본인의 공개키를 공개합니다. (여기서 댕댕이 개인키가 해킹당하지 않고, 댕댕이 본인만 개인키를 알고 있다고 가정할게요) 주위 사람들은 댕댕이의 공개키로 해당 메세지가 복호화되는지 확인합니다. 만약 복호화된다면, 분명히 댕댕이의 개인키로 해당 메세지를 암호화 한 것이 분명합니다. 따라서 이렇게 댕댕이는 본인이 보냈다고 증명할 수 있는 것이지요.
    https://steemit.com/kr/@dangdang/4wpjmg

랜덤한 개인키를 부여받고, 이거를 알고리즘을 활용해 공개키로 만드는데, 그렇기 떄문에 개인키로 공개키는 만들 수 있어도, 공개키로 개인키를 알수는 없고, 공개키를 활용해서 개인키로 암호화한 데이터는 난독화할 수 있음. 개인키 발급과정도 궁금해짐~~

26. 블록체인 지갑 어떻게 만들 수 있을까?


https://www.myetherwallet.com/wallet/dashboard

27. keyStore 파일이 뭘까?

  • 이더리움 KeyStore 파일은 이더리움 Private Key의 암호화된 버전입니다. KeyStore 파일은 특정 계좌에 대해 본인을 인증하는 수단이며, 이것은 트랜잭션을 사이닝 하기 위해 사용됩니다. 물론, Private Key를 직접 사용해도 됩니다. 결국, KeyStore 파일에 암호를 입력하면 복호화 과정 후 Private Key를 도출해 사용하기 때문이죠. 하지만, 이러한 암호화 되지 않은 중요한 정보를 직접 다루는 것은 매우 취약하며, 다양한 방법으로 탈취될 수 있습니다. 이더리움 KeyStore 파일은 Private Key를 암호화한 파일이라고 생각하시면 됩니다. 이더리움 KeyStore 파일을 통해 “안전성”과 “사용성”이라는 두 마리 토끼를 잡을 수 있습니다.
    안전성 : 공격자는 추가로 암호까지 알아내야 함 / 사용성 : 복잡한 Private Key 대신 KeyStore 파일 + 패스워드 조합을 사용
    https://medium.com/hexlant/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-keystore-%ED%8C%8C%EC%9D%BC-utc-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%95%94%ED%98%B8%ED%99%94-%EB%B3%B5%ED%98%B8%ED%99%94-%EC%9B%90%EB%A6%AC-1-2-d417cb605bf

개인키를 암호화한 것!

28. keyStore 파일에 어떤 내용이 들어있을까?

일단 지금 당장은 필요하지 않은 정보인듯 하다~

0개의 댓글