Blockchain 암호학
암호학의 필요성
- 법정화폐 대비 전자화폐의 차이점
- 중앙은행과 같은 화폐 발행의 권한(authority) 부재(탈중앙화)
- 위변조를 방지하기 위한 법률적, 실물적 장치 부재(법정화폐에는 다양한 위변조 방지 장치가 되어있음)
- 이중지불(double spending) 용이성
- 블록체인에서 암호학의 역할
- Cryptographic puzzle : 화폐 발행의 권한 부여 및 검증(퍼즐을 푼 사람만이 발행할 수 있음)
- Hash & digital signature : 위변조 방지
- Digital signature(& consensus) : 이중지불 방지
정보보호의 CIA Triad(세가지 원칙)
- Confidentiality(기밀성) : 정보의 유출 방지
- Integrity(무결성) : 정보의 신뢰성
- Availability(가용성) : 서비스의 지속 유지성
용어 정리
평문(plaintext) : 암호화하기 전의 메시지
암호문(ciphertext) : 암호화한 후의 메시지
암호화(encryption) : 평문을 암호문으로 바꾸는 것
복호화(decryption) : 암호문을 평문으로 바꾸는 것
키(key) : 암호화 및 복호화에 사용되는 정보
고전 암호 알고리즘
크게 치환 또는 전치, 두가지 기법을 사용
- 스트림 암호 : 한 문자씩 암호 알고리즘에 입력되어 한 문자씩 생성
- 블록 암호 : M개의 문자가 함께 암호화되어 N개의 암호문 생성
시저 암호
- 알파벳을 일정한 문자 수 만큼 평행 이동(Shift)시키는 암호 기법
- 치환 암호의 일종
- 모든 가능한 키를 시도하는 전사공격에 의해 해독 가능
- 덧셈암호
단일문자 치환 암호(monoalphabetic substitution)
- 알파벳을 다른 알파벳으로 변환하는 암호 기법
- 전사공격 시간 26!
- 평문에 등장하는 문자의 빈도와 암호문에 나오는 문자의 빈도가 일치하는 것을 이용하는 빈도공격으로 해독 가능
아핀(Affine) 암호
- 덧셈암호 + 곱셈암호
다중문자 치환 암호(polyalphabetic cubstitution)
- 다중문자를 이용하여 문자의 발생빈도를 균일화하는 암호 기법
- 문자의 위치에 따라 같은 문자라도 다른 문자로 치환(일대다대응)
ex. 비제너(Vigenere) 암호
전치 암호(transposition)
- 문자의 위치를 바꾸는 암호 기법
- 정해진 크기로 평문을 나눈 뒤, 치환키를 사용하여 문자 위치를 바꾸는 기법
현대 대칭키 암호
- 고전 대칭키 암호 : 문자(character) 기반의 암호
- 현대 대칭키 암호 : 비트(bit) 기반의 암호, 암호 대상이 텍스트에서 그래픽, 오디오, 비디오 등으로 확대
현대 블록 암호의 구성요소
- P-박스 : 비트의 위치를 바꾸는 기능(permutation)
- S-박스 : 비트를 치환하는 기능(substitution)
- 순환이동
- 스왑연산
- 배타적 논리합 연산(Exclusive-OR) : A ⊕ B ⊕ B = A
DES(Data Encryption Standard)
- 56 비트의 키를 사용하는 암호기법
- 암호를 깨는 여러 방법들이 나오면서 사용하지 않는 것을 권장
- 과거 소프트웨어와의 호환성 유지를 위해 일부 사용(트리플 DES)
AES(Advanced Encryption Standard)
- DES를 대신하는 표준 대칭 암호 알고리즘(사이즈, 알고리즘 복잡도 ↑)
- 128 비트 평문을 128 비트 암호문으로 만드는 알고리즘(DES, 64 -> 64)
- 속도가 빠르고 다양한 플랫폼에서 동작
- 현재까지는 안전, 사용을 권장
현대 비대칭키 암호
키 배송 문제(Key distribution problem)
- 대칭 암호를 사용하는 경우 송신자와 수신자가 사전에 대칭키를 공유하면서 발생하는 문제
비대칭키 암호의 특징
- 암호화 키(공개키)와 복호화 키(개인키)가 다름
- 암호화 키를 가지고 있는 누구든지 암호화 가능(암호화 키는 알려져도 무방)
- 복호화는 복호화 키를 소유해야만 가능
- 대칭키 알고리즘에 비하여 속도가 느림(수 백배)
RSA(Rivest-Shamir-Adleman)
- RSA 암호체계의 안정성
- 큰 숫자를 소인수 분해하는 것이 어렵다는 것에 기반을 둔 기법
- 양자 컴퓨터의 실용화가 진행되면 안정성이 깨질것으로 예상됨
이름 순서는 어떻게 정했을까?
ECDSA(Elliptic Curve Digital Signature Algorithm)
- 타원곡선을 이용한 전자서명 알고리즘
공개키와 신원
- 공개키를 이용한 메시지 복호화의 의미
- 공개키에 대응하는 개인키를 소유한 사람이 작성한 메시지임을 확인
- 블록체인에서의 익명적 신원(Anonumous Identity)
- 공개키를 기반으로 익명적 신원을 사용
- 탈중앙 신원(Decentralized Identity)
- 중앙화된 신원 발급이 아니라 누구나 공개키-개인키 쌍을 생성하여 새로운 신원을 자유롭게 생성할 수 있음
암호학적 해시와 블록체인
해시함수
- 입력 : 임의의 데이터
- 출력 : 고정자리 수의 데이터
[ex]
H(x) = x mod 10(34,098 -> 8)
문제점 : 충돌 확률 10%
데이터 무결성(Integrity) 검사
- 암호학적 해시함수
- 몇 가지 성질을 만족한다면 해시함수의 출력값은 원본 데이터의 다이제스트(digest) 또는 지문(fingerprint) 역할 가능
- 데이터의 위변조 검사
- 해시함수를 이용한 메시지 다이제스트 생성 및 기억
- 메시지의 다이제스트를 계산하여 원본의 다이제스트와 비교
- 메시지 전체를 비교하는 것에 비해 효과적
암호학적 해시함수의 성질
- 역상 저항성(preimage resistance, one way)
- Given y, infeasible to find x such that h(x) = y
- 주어진 해시값으로부터 원본 메시지를 찾아낼 수 없음
- 제 2 역상 저항성(second preimage resistance)
- Given x, infeasible to find y ≠ x such that h(x) = h(y)
- 주어진 메시지와 해시값이 같은 또 다른 메시지를 찾을 수 없음
- 충돌 저항성(collision resistance)
- Infeasible to find y, x, with y ≠ x such that h(x) = h(y)
- 자유롭게 탐색하여 해시값이 같은 2개의 메시지를 찾을 수 없음
- 제 2 역상 저항성을 깨는 것이 더 어려움(지정된 target)
충돌저항성
Pigeonhole Principle
- 비둘기의 수보다 비둘기 집의 개수가 적은 경우
- 256 비트의 출력값을 가지는 해시함수 2^256 + 1 가지의 입력값을 검사하면 반드시 충돌을 찾을 수 있음
Birthday paradox
- 23명 이상이 모이면 생일이 같을 확률은 1/2을 넘음, 366명이 모이면 반드시 존재
- 57명이 모이면 확률은 99%를 넘음
SHA-256 해시함수(256 비트의 출력값)
- 10억 가지의 입력값에 대해서 사용할 경우 충돌이 발생할 확률은 4.3*10^-60
MD4(Message Digest 4)
MD5
SHA(Secure Hash Algorithm)
- SHA1
- SHA-256
- SHA-384
- SHA-512
블록의 무결성 보존을 위한 해시함수
새로운 블록을 생성할 때 이전 블록의 해시값을 포함Merkle Tree(Ralph Merkle)
- 데이터 블록의 해시값을 트리 구조로 구성
- 부모 노드는 자식 노드의 해시값을 저장
- 트리의 일부 정보만으로 “proof of membership”을 log(n) 시간 안에 확인 가능
해시퍼즐과 Proof of Work
Proof of Work
- PoW 합의 : 채굴과 비트코인 발행을 위한 약속
- 해시퍼즐을 푼 채굴자는 비트코인 획득
- 신규 블록의 생성 권한도 획득
- 해시퍼즐 : 주어진 조건을 충족하는 nonce 변수값 찾기
- 가능한 nonce 값에 대해 일일이 해시 출력값을 계산해봐야 함
- 해시값이 미리 정해진 T보다 작을 때까지 nonce를 탐색
해시퍼즐의 특징
- 무작위성(randomness)
- 난이도
- 모든 컴퓨터들이 시도하여 최초로 답을 찾는데 평균 10분 소요
- 2주에 한 번씩 난이도 조정(T 값을 조정)
전자서명과 블록체인
해시함수의 장점과 한계
- 장점 : 데이터 내용의 무결성에 대한 확인 가능
- 해시함수를 사용하여 내용의 진위 확인 가능
- 한계 : 데이터 출처 확인(인증, authentication) 불가능
- 해시는 키를 사용하지 않으나, MAC는 대칭키를 사용
- 대칭키 기법과 유사
- 구현
- 해시함수를 이용한 구현
- 트리플 DES나 AES와 같은 블록 암호를 사용해서 메시지 인증 코드를 구현
- 활용 분야
- SWIFT(Society for Worldwide Internet Financial Telecommunication)
- IPsec(Internet Protocol Security)
- SSL/TLS
- 문제점
- 송신자는 자신만이 알고있는 개인키를 사용하여 서명을 작성
- 수신자는 공개키를 사용하여 서명을 검증
- 송신자만이 해당 개인키를 가지고 있으므로 전자 서녕을 한 당사자임이 증명됨(제 3자에게도 증명)
- 방법
- 메시지에 직접 서명
- 메시지의 해시에 서명
한양대학교 블록체인 강의를 수강하면서 정리한 게시물입니다.