#14 - 공개키 암호화 알고리즘에 대한 개념정리! / 비트코인 거래원리(2/N)

in #kr7 years ago (edited)


main.jpg



안녕하세요. 어미새입니다.


지난 포스팅에서는 아래와 같이 트랜잭션에 대한 개념정리를 하였습니다.

  1. 비트코인 거래를 위해 작성된 문자열을 '트랜잭션'이라고한다.
  2. TXID는 Transaction Id 정보로써, 트랜잭션의 식별자 역할을 수행한다.
  3. TXID 정보를 이용하여 거래 정보를 확인할 수 있으며, TXID 정보는 거래의 유효성을 확인하기 위해서 사용된다.


오늘은 비트코인 거래 원리를 이해하기 위해서 공개키 암호화 알고리즘에 대해서 살펴보도록 하겠습니다!



위키에 기록된 공개키 암호화 알고리즘의 정의는 아래와 같습니다.


공개 키 암호 방식(公開 - 暗號 方式, public-key cryptography)은 암호 방식의 한 종류로 사전에 비밀 키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다. 공개 키 암호 방식에서는 공개 키와 비밀 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다. 공개 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 비대칭 암호(非對稱暗號)라고 부르기도 한다.


공개 키 암호 알고리즘은 공개 키, 개인 키(비밀키)로 구성되며, 공개 키는 누구나 알고 있어도 무방하지만 개인 키(비밀 키)는 반드시 소유자만 알고 있어야 합니다. 또한 공개 키를 토대로 비밀 키를 유추할 수 없습니다.

공개 키 암호 방식을 이해하기 위해서는 아래의 2가지 규칙을 기억해야합니다.


  1. 공개키로 암호화된 메시지는 오직 개인키로만 복호화 할 수 있다.
  2. 개인키로 암호화된 메시지는 오직 공개키로만 복호화 할 수 있다.


쉽게 쉽게 생각하세요! 공개키로 잠궜으면 반대로 개인키로 열어야 하고, 개인키로 잠궜으면 공개키로 열어야합니다. 이렇게 비대칭 방식으로 암호화 및 복호화를 하기 때문에 공개키 암호화 알고리즘이 비대칭 암호 방식이라고 표현하는겁니다!




이해를 돕기 위해 '개똥'이와 '소똥'이가 암호화 알고리즘을 이용하여 어떤 메시지를 주고 받는다고 가정해보겠습니다. '개똥'이와 '소똥'이는 각자 개인 키, 공개 키를 가지고 있기 때문에 아래의 그림처럼 총 4가지의 키 정보로 구성이됩니다. (공개 키 정보는 공개되어 있으나 각자의 개인 키 정보는 본인만 소유할 수 있습니다.)



18_0.png


그리고 '개똥'이가 '소똥'이에게 암호화된 메시지를 전달하기 위한 경우의 수는 아래와 같이 총 4가지의 경우의 수가 있습니다.


  1. '개똥'이가 '개똥'이의 개인키로 메시지를 암호화여 '소똥'이에게 전달
  2. '개똥'이가 '개똥'이의 공개키로 메시지를 암호화여 '소똥'이에게 전달
  3. '개똥'이가 '소똥'이의 개인키로 메시지를 암호화여 '소똥'이에게 전달
  4. '개똥'이가 '소똥'이의 공개키로 메시지를 암호화여 '소똥'이에게 전달




1. '개똥'이가 '개똥'이의 개인 키메시지를 암호화여 '소똥'이에게 전달


아래의 그림 처럼 '개똥'이는 '소똥'이에게 보낼 메시지를 자신의 개인 키로 암호화여 '소똥'이에게 전달하였습니다.



18_1.png


그리고 '소똥'이는 '개똥'이의 공개 키를 알고 있기 때문에 아래의 그림처럼 암호화된 메시지를 복호화하여 원본의 내용을 확인할 수 있게됩니다.



18_2.png


1번의 암호화 방식은 '개똥'이의 공개 키를 누구나 알 수 있기 떄문에 '소똥'이가 아니더라도 모든 사람들이 이 메시지를 확인 할 수 있게됩니다. 즉 정보 보안 중 기밀성에 문제가 발생합니다. (기밀성은 정보를 오직 인가된 사람에게만 공개하는 것입니다.)


하지만 반대로 메시지를 암호화할 때 '개똥'이의 개인키로 암호화 했기 때문에 해당 메시지는 오직 '개똥'이만 만들 수 있게됩니다. 즉 이 방식은 '개똥'이만 만들 수 있기 때문에 정보의 기밀성은 보장할 수 없지만 전자 서명에서 사용될 수 있습니다.



2. '개똥'이가 '개똥'이의 공개키메시지를 암호화여 '소똥'이에게 전달


'개똥'이의 공개키로 암호화 했을 경우에는 오직 '개똥'이의 개인키로만 복호화를 할 수 있습니다. 즉 '소똥'이는 이 암호화된 문서를 복호화할 수 없습니다. 그렇기 때문에 이런 암호화 방식은 사용될 수 없습니다.



3.'개똥'이가 '소똥'이의 개인키메시지를 암호화여 '소똥'이에게 전달


'개똥'이는 '소똥'이의 개인키를 알 수 없기 때문에 메시지를 암호할 수 없습니다!!



4. '개똥'이가 '소똥'이의 공개키메시지를 암호화여 '소똥'이에게 전달


'개똥'이가 '소똥'이의 공개키로 암호화를 하게되면 복호화할 수 있는 방법은 '소똥'이의 개인키로만 복호화를 할 수 있습니다. 즉 '개똥이가 암호환 메시지 내용은 오로지 '소똥'이의 개인키 소유자인 '소똥'이만 메시지를 복호화하여 할 수 있게됩니다.(정보의 기밀성이 보장됩니다!!)




자 어수선하지만 위의 내용을 한번 정리해보겠습니다.


  1. 공개 키 암호화 알고리즘에는 공개 키와, 개인 키 정보가 있다.
  2. 공개 키는 누구나 알 수 있지만 개인 키반드시 본인만 알아야한다.
  3. A와 B가 메시지를 주고 받고자할 때 A의 '개인키'로 암호화 하여 B에게 전송했을 경우 B는 A의 공개키로만 복호화가 가능하다. 또한 공개 키는 모두가 알고 있기 때문에 모든 사람이 메시지를 해석할 수 있다.
  4. A의 '개인키'로 암호화 된 문서는 오직 개인키를 알고 있는 A만 만들 수 있기 때문'전자서명'으로 사용될 수 있다.
  5. A가 B의 공개키메시지를 암호화 했을 경우 B의 개인키로만 메시지를 복호화 할 수 있기때문에 정보의 기밀성을 보장하면서 메시지를 전달 할 수 있게된다.


이제 어느정도 이해가 되셨나요? 그리고 오늘 포스팅에서는 언급하지 않았지만 비트코인 거래 시 상대방의 주소(공개키)를 이용하여 메시지 내용이 암호할될 경우 오직 그 주소의 개인 키 정보를 가지고 있는 사람만이 해당 메시지 내용을 복호화 할 수 있다는 의미가 무슨말인지 이해 되셨을겁니다.(이 부분은 계속해서 포스팅하면서 하나씩 알아가보도록 하겠습니다!!)


다음 포스팅에서도 계속해서 비트코인 거래 원리에 대한 이해를 돕기 위한 포스팅을 진행하도록 하겠습니다!


이상 긴 글 읽어주셔서 감사합니다!



[참고 사이트]
https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D
https://www.ddengle.com/board_FAQ/2843850

Sort:  

복잡한 듯, 단순한 듯.... ^^;
살짝(?) 이해가 가기는 하네요~ㅎ

아마도 내일 올릴 예정인 포스팅 보시면 완전히 이해하실 수 있을거에요!! 너무 어렵게 작성된 것 같기도 하네요 흐흐:)

저도 약간은 어렵게 느껴지는군요.ㅎ
그래도 차근히 한번 읽어봐야겟습니다.

계속해서 읽어보면 이해하실 수 있을거에요~ 너무 어렵게 생각하지 말고 읽어보심이 좋을 것 같습니다! 읽어주셔서 감사합니다~ ^^;

좋은 글이네요~
A가 A의 개인키로 암호화하는 경우에는 A의 신원을 확인하는데 쓸 수 있어 전자서명 등 인증에 사용되는 것 같고,
A가 B의 공개키로 서명하는 경우에는 B에게 안전하게 전달할 수 있겠어요. 비트코인에서는 이 경우겠군요.
정리 해주셔서 감사합니다 ^^

맞습니다! A가 A의 개인키로 암호화할 경우 전자서명, A가 B의 공개키로 서명할 경우는 오직 B만이 메시지를 확인할 수 있죠:) 내일은 조금더 디테일한 부분까지 설명할 계획입니다:)

알고리즘에 관심많은 사람입니다 :) 앞으로 자주방문하고 들러볼게요 감사함니다

감사합니다:) 저도 자주 방문 하겠습니다^^;


똥이 8번 넘어가면서 막 저의 뇌를 힘들게 했써요
소똥씨가 정말 소인지 확대해서 소똥시 얼굴도 확인해봤는데 역시 가볍게 읽어야 이해가 되겠네요
개인키와 공개키는 음....제가 스팀인에 로그인할때 쓰는 가입할때 받은 비밀번호가 공개키같은건가요?
ㅋㅋㅋ개발자님 앞에서 카오스를 봤다가 ㅋㅋㅋ
다시 제 블로그로 돌아갑니다

똥이 친구들 때문에 고생하셨습니다!!
스팀잇에는 여러가지 키가 있죠~
포스팅할때 필요한 포스팅 키, 거래할 때 필요한 액티브 키, 오너 키는 계정의 만능 키!
그리고 각 키마다 개인 키가 따로 있는걸로 알고있어요~
블로그에 지갑 메뉴 > 권한 영역 가면 각 키 종류에 개인 키 보이기 숨기기 버튼이 있답니다:)

블록체인 개발기술에도 관심이 많았는데 좋은 글 잘 읽었습니다~
그간 쓰신 글도 차근히 읽어보겠습니다
앞으로도 좋은 정보 많이 부탁드립니다

넵 감사합니다! 포스팅 내용이 조금 이어지도록 작성하였습니다. 첫 글부터 읽어보시면 좋을것 같아요! 오늘 하루도 즐겁게 마무리하세요:)

3월의 시작을 아름답게 보내세요^^
그리고 진정한 스팀KR 에어드롭!
[골든티켓x짱짱맨x워니프레임] 9차 옴팡이 이모티콘 증정 천명 이벤트! 그 첫번째 250명 !
https://steemkr.com/kr/@goldenticket/x-x-9-250

좋은 이벤트 소개!! 항상 감사합니다:)

Coin Marketplace

STEEM 0.18
TRX 0.18
JST 0.034
BTC 89179.04
ETH 3123.84
USDT 1.00
SBD 2.74