비대칭 암호화 간략 설명

in upvu •  2 years ago 

블록체인에서 암호화는 비대칭 방식을 사용합니다.

비대칭 암호화란 암호화 할 때 사용하는 키와 복호화 할 때 사용하는 키가 다른 암호 체계를 말합니다.

이것은 대부분 우리가 주로 알고 있는 Public Key와 Private Key를 말합니다.

Public Key와 Private Key 둘다 암호화가 가능한데요, Public Key로 암호화 한 것은 Private Key로 복호화가 가능하고, Private Key로 암호화 한 것은 Public Key로 복호화가 가능합니다.

이 두가지 방법은 상황에 따라 다르게 쓰입니다.


Public Key로 암호화를 하는 경우

  • 기밀이나 비밀 정보를 전달하는 경우 사용됩니다.
  • 기밀을 특정 누군가에게 보내야 하는 경우 그 누군가로 부터 Public Key를 전달 받아서, 정보를 암호화 합니다.
  • 이 정보는 Private Key가 있어야만 복호화가 가능하므로 중간에 암호화된 정보가 털리더라도, Private Key가 없으면 복구를 할 수 없습니다.
  • Private Key가 있는 사람은 암호화 된 내용을 받아서 복호화 하여 정보를 읽을 수 있게 됩니다.

Private Key로 암호화를 하는 경우

  • 누군가가 자신이 서명한 정보가 맞다는 것을 증명 할 때 사용합니다.
  • 어떤 정보를 Private Key를 가진 사람이 암호화를 하고, 암호화 된 정보를 서명(Signature)한 데이터와 암호화하려고 했던 정보를 공개합니다.
  • 이 정보는 공개된 Public Key를 알고 있는 누구라도 복호화가 가능하기 때문에 이 정보는 Private Key를 가진 사람이 암호화 했다는 사실을 증명 할 수 있습니다.
  • Private Key를 가지고 있지 않은 사람이 정보 부분만 바꾼다면 서명(Signature)가 변경 되기 때문에 Public Key로 복호화를 할 수 없게 됩니다.
  • 일반적으로 알려진 전자서명의 경우 이러한 방식을 사용합니다.

비대칭 키의 종류

  • RSA : 소수(Prime Number)을 사용
  • ECC : 타원 곡선 암호(이더리움에서 사용되고 secp256k1 타원곡선을 사용)

ECC 암호화 테스트 사이트 : https://paulmillr.com/noble

이더리움 지갑 주소

  • 32바이트 랜덤 값을 생성하여 Private key를 생성합니다.
  • Private Key에서 Public Key유도가 가능한데,
  • Keccak-256 해시 알고리즘(32bytes)으로 Public Key를 해싱한 값에서 앞의 12 Bytes를 버린 값을 지갑 주소로 사용(남은 20bytes)

서명 과정

검증 과정(Recovery)

  • 메세지 원본과 r, s, v 값으로 퍼블릭 키를 도출 가능합니다.
  • 퍼블릭 키를 해싱하고 뒤의 20Byte만 추출하면 지갑주소랑 동일해져야 합니다.
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!