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(Message Authentication Code)

  • 해시는 키를 사용하지 않으나, MAC는 대칭키를 사용
  • 대칭키 기법과 유사
  • 구현
    • 해시함수를 이용한 구현
    • 트리플 DES나 AES와 같은 블록 암호를 사용해서 메시지 인증 코드를 구현
  • 활용 분야
    • SWIFT(Society for Worldwide Internet Financial Telecommunication)
    • IPsec(Internet Protocol Security)
    • SSL/TLS
  • 문제점
    • 부인 방지(non-repudiation) 불가
      • 수신자는 송신자가 메시지를 보냈음을 확인할 수 있음
      • 그러나 이 사실을 제 3자에게 증멍할 수 없으며, 특히 송신자가 부인할 경우 이를 제 3자에게 입증할 수 없음
      • 수신자도 동일한 키를 가지고 있으므로 수신자가 메시지를 만들었을 가능성이 있기 때문

        전자 서명(Digital Signature)

  • 송신자는 자신만이 알고있는 개인키를 사용하여 서명을 작성
  • 수신자는 공개키를 사용하여 서명을 검증
  • 송신자만이 해당 개인키를 가지고 있으므로 전자 서녕을 한 당사자임이 증명됨(제 3자에게도 증명)
  • 방법
    • 메시지에 직접 서명
    • 메시지의 해시에 서명

한양대학교 블록체인 강의를 수강하면서 정리한 게시물입니다.

Comments