기초암호학(공개키)

고정훈·2023년 10월 26일

오늘은 암호학을 배웠습니다

먼저 알아볼 용어는

  • 기밀성 (confidentiality) : 타인은 알아볼수없음
  • 무결성 (integrity) : 정보가 변하지 않음
  • 가용성 (availablity): 정당한 사용자가 정보 접근가능
  • 부인방지 (non-repudiation) : 본인 확인 절차 필요

양방향에서의 대칭키

대칭키란 암호화와 복호화를 할수있는 키 하나를 여러 사람이 공유해 쓰는 방식이다.
암호화를 하는데 사용할수있는키와 복호화 할수있는 키가 공통된것이다.
암호화는 평문을 예를들어 데이터를 암호화 하는과정이고
복호화는 암호화된 평문 혹은 데이터를 다시 평문으로 되돌리는 것이다.
A와 B는 공통된 키를 가지고있고 수신자와 송신자 둘다 암호를 암호화 복호화 할수있다.
A가 평문을 암호화 하여 B에게 전송하면 B는 대칭키를 사용하여 암호화한 평문을 복호화해 평문으로 만들수있고
B가 평문을 암호화하여 A에게 전송하면 A는 똑같이 암호화된 평문을 복호화 할수있는
키를 가지고있다 누구에게 공개되서는 안되며 공개될시에 암호화된 평문을 누구든 복호화 할수있기
때문에 송수신은 빠르지만 무결성,가용성,부인방지는 보장이 안된다.

양방향에서의 비대칭키

비대칭키는 말그대로 암호화할수있는 키와 복호화 할수있는키가 따로존재한다.
평문을 암호화 하여 수신자에게 전송할때 중간에 갈취 되더라도 제3자는 절대 복호화 할수없다.
A는 복호화할수 없지만 암호화 할수있는 공개키를 가지고있고 B는 복호화 할수있는 개인키를 가지고있다.
A는 평문을 암호화하여 B에게 송신하면 B는 개인키로 평문을 복호화 하고 다시 자신의 공개키와
함께 A에게 암호화한 평문을 보낸다 이렇게 복호화 할수있는 사람은 개인키를 가진 B한명으로 정해져있다.
이경우에는 무결성,가용성,부인방지가 모두 보장된다. 하지만 송수신이 느린점이 있다.

그리고 따로 알아볼것은 타원 곡선함수

ECDSA(Elliptic Curve Digital Signature Algorithm)의 타원 곡선 함수에 개인키 값을
대입하여 공개키를 얻는다.
K=k*G(k:개인키,G:상수) (사실 잘모른다)

이렇게 얻어진 공개키는 타원곡선 상의 한쌍의 좌표 x,y 이다.
이좌표의 x값과 y값을 이어 붙인 형식을 비압축형 공개키라고 한다
이경우에는 다른형식의 공개키와 구분하기 위해 값의 앞에 0x04를 추가한다.

그리고 압축형 공개키는 비압축형의 경우 520바이트의 저장공간이 필요하기때문에
공간을 줄이기 위해 압축한다 압축형 공개키는 x값으로만 공개키를 표현한다 . y
값은 생략하게 되고 다음 수식을 통해 도출할 수 있기 때문이다.

y^2=x^3+7

해당 함수 값에 대입하면 y값이 도출된다. y가 양수일 경우 K값 앞에 0x02를 음수일 경우
0x03을 추가하여 이를 구분한다.

비트코인에서의 공개키 (단방향)

공개키는 말그대로 비트코인에서 거래를 할때 사용되는 공개키이다
어떻게 보면 계좌번호와도 같다고 보면된다 송금할때 사용된다
토큰을 송신하거나 수신할때 공개키를 사용하게된다. 하지만
이것은 위에서 말한것과는 다르게 단방향이다 절대 공개키를 만든 개인키는
공개키로 알수가없다.

이렇게 알아보고 다음에 더 자세하게 알아보자!

profile
Every day Learning and kaizen

0개의 댓글