본문 바로가기
Investment/Blockchain, Bitcoin

알기쉬운 블록체인 8강 : 블록체인과 암호기술II

by YOU_IN 2021. 7. 19.

안녕하세요! :-)

 

이번 강의에서는 블록체인 '전자서명'에

대한 내용을 정리해 보았습니다. 

 

왜 6강에서 바로 8강이 되었냐면~!

7강은 중간고사였습니다 하핫

KMOOC도 중간, 기말고사를

모두 봐야 인증서가 나온답니다 :)

 

그럼 오늘도 블록체인 공부에

도움이 되셨으면 좋겠습니다!

 

 

 


제 8강 블록체인과 암호기술II

 

출처 : https://www.irmagazine.com/technology-social-media/exploring-ir-use-cases-blockchain

 


 

8-1. 거래 데이터의 신뢰성

 

◈ 전자서명의 필요성

 

• 공개된 네트워크에서 주고 받는 데이터를 어떻게 신뢰할 수 있을까?
- 메시지는 정당한 송신자가 보낸 것이 맞는가?
- 송신자가 보낸 메시지가 맞는가?
=> 문서에 서명을 하는 행위를 함으로써 위조를 어렵게 하고 해당 문서를 만든 사람을 확실히 하게 했다. 오프라인에서는 서명을 어떻게 할 수 있을까?

 

• 전자서명의 필요성
- 인터넷을 통하여 전세계 어디서나 비대면으로 데이터를 주고받을 수 있음
- 온라인에서 비대면으로 거래를 하는 경우 상대방을 확인할 수 있는 방법이 필요함
- 디지털 데이터의 특성상 쉽게 위변조가 가능함
- 일상생활에서 계약서에 서명하는 것과 같은 상황을 온라인에서 구현해야 함

 

◈ 전자서명의 특징

 

• 전자서명(Digital Signature)
- 디지털 데이터에 서명하는 방법
- 컴퓨터 네트워크를 통해 전송될 수 있음
- 인증과 무결성 기능을 어떻게 포함시키는지가 중요하다

 

• 기존서명 vs. 전자서명
- 기존서명 : 물리적으로 서명된 문서의 일부임 / 다른 서명과 비교하여 검증됨 / 원본이 유일함, 원본과 사본은 구분됨
- 전자서명 : 서명된 메시지에 실제로 첨부되지 않음 / 공개적으로 알려진 정보를 사용하여 확인할 수 있음 / 원본과 사본이 동일함, 재사용을 방지함(날짜 정보 등을 사용하여 방지)
=> 사용되는 메시지와 서명을 묶을 수 있는 방법이 필요함
=> 서명의 복제를 어렵게 해야 한다.

 

• 전자서명의 요구조건
1) 위조 불가 : 정당한 서명자만이 전자서명을 생성 가능
2) 서명자 인증 : 누구든지 서명자를 확인 가능
3) 재사용 불가 : 다른 문서의 서명으로 사용불가
4) 변경 불가 : 서명된 문서의 내용 변경 불가 -> 무결성 제공
5) 부인 방지 : 서명 사실 부인 불가

 

 

 

 


8-2. 전자서명이란?

 

◈ 전자서명의 개념

 

• 전자서명
1) 정당한 서명자만이 생성할 수 있어야 함 = 특정 권한을 가진 사람들을 식별하도록 해야 한다.
ex) PW을 알고 있음을 증명함으로써 로그인이 가능
- 서명자의 비밀정보 = 개인키(개인키는 각 개인이 알고 있는 정보. 비밀정보를 아는 사람은 유효한 데이터를 생성할 수 있기에 이 개인키를 나만 알고 있다는 것이 전제가 되어야 한다. 남에게 양도하거나 노출이 되면 전달 받은 사람은 똑 같은 행위를 할 수 있다.)
2) 누구나 서명 확인이 가능해야 함
- 해시 함수를 이용하는 경우는 A, B가 데이터를 주고 받았기에 키를 A, B만 가지고 있다. 전자서명은 누구나 확인 가능하도록 함으로써 키를 누구나 볼 수 있도록 한다.
- 공개된 정보 = 공개키(누구나 쉽게 취득 가능하고 공개키를 이용해서 서명을 검증할 수 있다.)
3) 위변조를 방지해야 함

 

• 서명스킴(Signature Scheme)
- P : a finite set of possible Messages (서명하고 싶은 원본 데이터의 전체 집합)
- A : a finite set of possible Signatures (생성한 서명값의 전체 집합)
- K : a finite set of possible Keys (키 전체 집합-개인키와 공개키가 하나의 묶음으로 존재)
- S : 서명 생성의 집합
- V : 서명 검증의 집합

- sig : 메시지 전체 집합에서 유효한 서명값이 존재하는 집합 mapping을 정의한다.
- ver : 메시지와 검증의 맵이 주어져 있는 상황에서 검증 성공, 실패를 정의한다.

 

• 전자서명의 구성
1) 키 생성 : 개인키와 공개키를 만든다. (서명 자체를 만드는 행위)
- 개인키는 중복되지 않기 위해 랜덤하게 선택한다. 길이가 비교적 길어야 한다. 개인키에 의해서 공개키는 계산으로 만들어진다.
2) 서명생성
- 입력 : 메시지, 개인키
- 출력 : 서명값
3) 서명검증
- 입력 : 메시지, 서명값, 공개키
- 출력 : 검증성공 또는 검증실패

 

◈ 전자서명의 예

 

• RSA 공개키 암호
- 서명자가 직접 키를 생성해야 한다. 서명자라면 개인키와 공개키를 만든다.
- N=PxQ 라고 정의한다. N을 알아도 P 또는 Q를 알기 어려움(인수분해 문제)
- 인수분해가 얼만큼 어려운가가 키 길이에 영향을 준다.
- 공개키 : N, E / 비밀키 : P, Q, D

1) 랜덤하게 소수 p, q 선택
2) n=pq 계산
3) 랜덤하게 e 선택
4) d값을 만든다. d값의 길어도 대략 2000비트

• RSA 저자서명
고른 메시지 = x

• RSA 암복호화
- 암호화는 메시지를 감추는 것. 복호화는 감춰진 메시지를 복구해서 내용을 열람하는 것
- 내용을 보는 것은 나만 할 수 있는 것. 복호화에 들어가는 것은 개인키, 암호화는 공개키를 가지고 한다.

• RSA 전자서명 예제
1) 키 생성 : 개인키-p=5, q=11, d=27 / 공개키 : e=3, n=55
2) 서명생성 : 28이 서명값

3) 서명검증

* mod 55 : 55로 나눴을 때 나머지로 모든 값들로 표현하시오.
-> 지수연산을 하면 값이 커지기 때문에 나눴을 때의 나머지로 표현하여 효율성을 높인다.

 

 

 

 


8-3. 블록체인과 전자서명

 

◈ 메시지 부가형 전자서명

 

• 메시지 부가형 전자서명
- 현재 가장 대표적인 전자서명 기법 : RSA 전자서명, 타원곡선 전자서명(ECDSA)
- 메시지의 해시값에 기반으로 서명값을 생성 -> 서명값 거대화 방지
1) RSA : 지수연산을 통해 서명값을 생성하고 동일하게 지수연산을 통해 서명검증을 하는 과정
효율성을 위해 모듈러 연산을 사용한다. 검증 과정을 통해서 메시지가 복구가 되고 전달된 메시지와 복구된 메시지를 비교함으로써 검증 성공, 실패를 나타낸다. RSA 시나리오에서 메시지를 큰 것을 쓴다면 그 큰 메시지만큼 검증값이 나오지 않는다면 검증에 성공할 수 없다. 메시지 크기만큼 서명값도 거대화된 상황이 발생할 수 있다.


- 개인키를 바꾸지 않고 메시지를 바꾸지 않는다고 가정하면 동일한 S가 나온다. 동일한 S에 여러 번 서명을 한다고 하면 할 때마다 동일한 S가 나와서 이전 서명과 이후 서명을 식별할 수 없게 된다. 이를 막기 위해 서명생성이라는 알고리즘 내에 난수를 포함해서 서명값을 만들어야 한다. H에 난수값이 조합되어 랜덤한 값의 d승을 하게 된다.

2) 타원곡선 전자서명

- 서명값이 2개가 나온다. r, s

 

 

 

 

◈ 비트코인에서의 전자서명

 

• 계좌 생성
- 공개키 기반 전자서명은 사용자가 선택한 개인키에 대응하는 공개키가 존재함
- 계좌의 정보를 공개된 정보인 공개키로 mapping을 한다.
- 개인키를 가지고 거래를 승인하므로, 개인키는 계좌의 소유권을 나타낸다.
- 개인키d 랜덤하게 생성 -> 타원곡선 연산 dp=Q=(x,y)
*작은 양의 서명값과 키를 가진다. 타원곡선연산은 250비트, RSA는 2000비트

• 거래 승인 및 검증
- 공개키는 계좌번호의 역할. 서명의 검증에 사용되기도 한다.
- 정당한 사용자가 개인키로 거명하여 거래를 승인함
- 전자서명에 특성에 의하여 거래 내용(메시지), 공개키, 전자서명값을 이용하여 누구나 검증 가능함

 

**정리
전자서명은 우리가 오프라인에서 하는 서명의 행위를 온라인에서 구현하기 위해 만들어진 기법이다. RSA와 타원곡선 전자서명 같은 경우가 과거부터 현재까지 가장 널리 쓰이고 있는 전자서명이다. 블록체인에서 거래의 신뢰성, 거래 내용의 검증과 승인, 계좌의 생성 등에 필요한 게 해시함수이고 전자서명을 이용해서 신뢰성을 제공을 하고 있다.

 


8강 강의 노트 끝-!

감사합니다 :)

*사진의 모든 출처 : http://www.kmooc.kr/

댓글