TIL 23 - 암호화와 합의 알고리즘

프동프동·2023년 2월 10일
0

TIL

목록 보기
23/46
post-thumbnail

Achievement Goals

암호화 기술을 이해할 수 있다.

대칭키, 비대칭키 암호화를 이해할 수 있다.

대칭키

암호화를 할 때의 키와 복호화를 할 때의 키가 같은 것을 대칭키라고한다.

  • 암호 방식
    • 하나의 키를 암호화하여 암호화한 데이터와 키를 함께 송신한다.
    • 이를 받은 사람은 동봉된 키를 사용해 암호화된 데이터를 복호화한다.
    • 블록 암호 방식
      • 데이터를 미리 정해둔 사이즈로 잘라 청크(Chunk)단위로 그룹화하고, 각 블록을 개인키로 암호화한다.
    • 스트림 암호 방식
      • 원본 데이터의 길이와 같은 키로 키 스트림(Key Stream)을 생성하고, 원본데이터와 키 스트림을 XOR 연산하여 암호화한다.
      • 나중에 복호화할 때도 암호화된 값과 키 스트림을 XOR연산하면 원본데이터가 나온다.

비 대칭키

대칭 키의 쉽게 탈취하여 쉬운 복호화가 가능하다는 단점을 해결하기 위한 방안으로 고안된 개념

공개키와 개인키 2가지를 사용한다.

  • 암호 방식
    • 공개키 암호 방식
      • 공개키는 전송자가 데이터를 암호화 하는 데 사용
      • 개인키는 수신자가 데이터를 복호화 하는 데 사용
      • 키 배송 문제 해결, 데이터의 무결성을 확인하는데 사용할 수 도 있다.
        • 트랜잭션을 검증하는 디지털 서명 방식으로 사용된다.
      • 수학적 계산이 매우 복잡하여 대량의 데이터를 처리할 경우 오버헤드가 발생하여 속도가 느려진다.
    • 개인키 암호 방식(개인키 서명 방식)
      • 개인키로 암호화하고 공개키로 복호화한다.
      • 개인키의 소유자가 데이터를 암호화 한뒤 공개키와 함께 전달하는 방식
      • 해당 방법은 데이터 보호 보다, 신원 확인(보장)을 위해 사용한다.
    • 신원 확인 방법
      • 공개키와 개인키는 한쌍으로 한쪽 키로 암호화를 했다면 다른 한쪽키로 복호화할 수 있다는 특성을 사용하여 공개키와 한쌍인 개인키로 암호화했다는 것을 증명한다.
      • 블록체인에서는 디지털 서명에 사용된다.

해시함수를 이해할 수 있다.

해싱(Hashing)은 다양한 크기의 입력값을 고정된 크기의 출력값으로 생성해 내는 과정을 의미한다.

  • 특징
    • 단방향 암호
      • 한번 해싱하면 해싱된 값을 유추할 수 없다.
    • 어떠한 크기의 입력이 들어와도 동일한 크기의 출력값을 반환한다.
      • SHA-256 : 어떤 입력값을 넣어도 256비트 길이의 값을 출력한다.
      • SHA-1 : 160 비트 길이의 값을 출력한다.
    • 서로 다른 입력값에 대해 완전히 다른 출력을 반환한다.

블록체인에서의 역할

  • 해시 값을 사용해 익명성 보장
    • 지갑 주소
  • 트랜잭션을 하나로 연결 및 압축
  • 블록을 연결하는 동시에 무결성 보장
    • 머클트리 알고리즘
  • 해시값을 사용해 채굴 노드를 정함
    • PoW 방식에서는 해시값을 만족하는 입력값인 논스를 가장 먼저 찾는 노드에게 채굴할 권한을 준다.

디지털 서명을 이해할 수 있다.

메시지나 디지털 문서의 진위성과 무결성을 검증하는데 사용하는 수학적 메커니즘이다.

  • 디지털 통신에서 변조 및 사칭 문제를 해결하기 위한 것
    • 전자 문서
    • 거래
    • 메시지의 출처
    • 신원 및 상태에 대한 보증 등

디지털 서명의 동작 방식

디지털 서명은 크게 해싱, 서명, 검증 세 단계로 나뉜다.

디지털 서명 방식

  1. 해싱
    • 데이터를 해싱한다.
      • 원본 데이터의 크기는 제각기 다를 수 있지만, 해싱 되었을 때는 동일한 길이의 해시값을 가진다.
  2. 서명
    • 공개키 암호화 방식을 사용해 해싱된 데이터에 서명을 한다.
      • 일반적으로 송신자의 개인키로 해시값을 암호화한다.
      • 이 암호화된 결과값이 바로 디지털 서명이다.
    • 서명이 완료되면 송신자는 원본 데이터와 디지털 서명, 송신자의 공개키를 함께 전송한다.
  3. 검증
    • 수신자는 송신자의 공개키를 가지고 디지털 서명을 복호화한다.
    • 송신자의 개인키에 의해 암호화된 데이터에서 해시값이 나온다.
    • 수신자는 원본 데이터를 해싱하여 데이터의 해시값을 구한다.
    • 이 두 해시값을 비교하여 만약 해시값이 맞다면 데이터가 정상적으로 송신자에 의해 서명된 것임을 확인할 수 있다.

디지털 서명 시스템의 필요조건

  • 알고리즘
  • 구현
  • 개인키

블록체인 트릴레마(Trilemma)를 이해할 수 있다.

확장성, 보안성, 탈중앙성 모두를 만족시키는 것이 가장 이상적이지만 현실적으로 한 번에 해결 할 수 없음을 말한다.

탈중앙성, 확장성, 보안성이 가지는 의미를 이해할 수 있다.

  • 확장성(Scalability) : 사용자 수가 늘어나더라도, 유연하게 대응할 수 있는 정도
    • TPS(Transaction Per Second)가 높다고도 표현한다.
  • 보안성(Security) : 외부의 공격으로 부터 프로그램을 보호한다.
  • 탈중앙성(Decentralization) : 중앙집권화를 벗어나 자율적으로 운영되는 방식

TPS가 중요한 이유를 이해하고, 한계에 부딪히는 이유를 설명할 수 있다.

성능 저하 없이 더 많은 사용자, 더 많은 사용 사례, 더 많은 트랜잭션을 처리하기 위함

→ 이는 곧 사용자의 대량 채택에 중요한 역할을 한다.

확장성 및 TPS를 높이게 되면 탈중앙화에 대한 타협과 보안에 대한 타협이 필요해진다.

비트코인, 이더리움, 이오스의 트릴레마를 각각 설명할 수 있다.

확장성보안성탈중앙성
비트코인(1세대)낮은 TPS확장성을 포기하고 보안성을 확보확장성을 포기하고 탈중앙성을 확보
이더리움(2세대)버전업을 통해 확장성을 늘리려고 한다.확장성을 포기하고 보안성을 확보확장성을 포기하고 탈중앙성을 확보
이오스(3세대)탈중앙성보다 확장성에 기준을 두었다.

블록체인에서 트릴레마를 고려해야하는 이유를 설명할 수 있다.

블록체인 트릴레마 문제를 해결하기 위한 다양한 방안을 이해할 수 있다.

레이어 1, 레이어 2 솔루션에 대해 설명할 수 있다.

레이어 1

  • 합의 알고리즘 개선
    • PoW → PoS
      • PoW는 안전하지만 확장성이 떨어진다.
      • 그로인해 이더리움은 PoS로 전환했다.
  • 샤딩
    • 네트워크에서 동시에 병렬로 처리되므로 동시에 수많은 트랜잭션에 대한 순차적 작업이 가능하다.

레이어 2

다른 블록체인 위에 구축된 네트워크를 의미한다. 레이어 1위에서 작동하며 확장성과 효율성을 향상하게 시키는 네트워크 또는 기술을 말한다.

  • 롤업(Rollup)
    • 레이어 1 외부에서 트랜잭션을 실행하지만, 레이어 1에 트랜잭션 데이터를 저장하는 방식
    • 보안성은 건들지 않으면서도 확장성을 강화할 수 있다는 장점이 있다.
    • 동작 방식
      • 레이어 1 외부에서 트랜잭션 실행
      • 트랜잭션 데이터는 레이어 1에 저장
      • 레이어 1의 트랜잭션 데이터를 사용하여 레이어 2에서 올바른 트랜잭션 실행을 할 수 있는 롤업 스마트 계약
    • 롤업 기술 2가지
      • 옵티미스틱 롤업(Optimistic Rollup) : 애플리케이션이 바로 상호 작용할 수 있게 해주어 누구나 레이어 1 클론에 연결할 수 있다.
      • ZK롤업(Zero Knowledge Rollup, 영지식 롤업) : 자체 환경에서 사일로로 존재하기 때문에 사용자들이 자체 롤업으로 애플리케이션에 연결해야 한다.
  • 중첩 블록체인
    • 메인 블록체인을 활용하여 더 넓은 네트워크에 대한 매개변수를 설정하고 실행은 보조 체인의 상호 연결된 웹에서 수행되는 분산형 네트워크 인프라
    • 확장성을 기하급수적으로 향상시킨다.
  • 상태 채널
    • 두 거래 당사자 간에 생성되는 채널을 통해 서로 즉각적이고 저렴하게 거래를 할 수 있는 솔루션이다.
    • 상태 채널은 더 큰 확장성을 달성하기 위해 어느 정도의 탈중앙화를 희생한다.
  • 사이드 체인
    • 블록체인의 메인체인 옆에 나란히 붙어서 작동하는 하위체인
    • 속도와 확장성을 위해 최적화된 독립적인 합의 매커니즘을 사용한다.

블록체인의 Safety와 Liveness, Finality를 설명할 수 있다.

이상적인 합의 알고리즘은 두 속성을 만족시켜야 한다.

FLP Impossiblity를 이해할 수 있다.

Byzantine Failure가 아닌 Fail-Stop Failure가 하나만 있어도 Safety와 Liveness를 둘 다 만족하는 합의 알고리즘이 존재할 수 없습니다. 이를 FLP Impossibility 혹은 FLP Theorem이라고 한다.

Liveness over Safety와 Safety over Liveness의 차이를 이해할 수 있다.

  • Safety 시스템에 나쁜 일이 발생하지 않는다는 의미, 문제 없는 노드는 잘못된 합의를 하지 않는다.
  • Liveness 시스템은 항상 살아 있어야한다.라는 의미, 문제 없는 노드는 반드시 합의한다.

합의 알고리즘이 무엇인지 설명할 수 있다.

블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에, 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것이라는 것을 상호간에 합의하는 과정이 필요하다

PoW, PoS, DPoS의 차이를 이해하고, 설명할 수 있다.

  • PoW
    • 블록 생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계가 되어있다.
    • 장점
      • 강력한 보안성
      • 서비스 남용 방지
    • 단점
      • 높은 전력 소모로 인한 자원 낭비
        • 지속적으로 해시파워 유지 필요
      • 해시 독점으로 인한 생태계 교란 우려
  • PoS
    • PoS는 코인을 보유한 지분율에 따라 새롭게 생성하는 코인을 분배받는 방식의 컨센서스 알고리즘
    • 장점
      • 해시파워가 필요치 않아 경제적이며 친환경적이다.
      • 블록 생산자의 탈중앙화로 안정성을 확보한다.
      • 블록을 생성하기 위해 지분을 담보로 잡아야하기 때문에 Dumping을 방지할 수 있다.
    • 단점
      • 검증되지 않아 보안성이 강한지 알지 못한다.
      • 지분이 많은 고래들의 독점 가능성
  • DPoS
    • 위임 지분 증명 방식
    • 장점
      • PoS에 비해 많은 트랜잭션을 빠르게 처리한다.
      • PoW에 비해 비용이 낮다
      • 하드포크의 위험이 낮다
    • 단점
      • 증인끼리 손쉽게 담합할 수 있다.
      • 공개된 소수의 증인에 대한 디도스 공격 위험이 있다.

비잔틴 장군 문제를 이해할 수 있다.

분산 네트워크 환경에서 악의적인 노드(배신자)가 존재할 때 이를 어떻게 극복하고 합의에 도달할 수 있느냐가 “비잔틴 장군의 딜레마"라고 한다.

BFT 합의 알고리즘에 대해 설명할 수 있다.

기존 확률적 합의 알고리즘의 문제점을 개선하고자 기존 분산시스템에서 상태 기계 복제(State Machine Replication)를 위해 활용한 BFT (Byzantine Fault Tolerance) 합의 알고리즘

다양한 합의 알고리즘의 종류와 장단점

profile
좋은 개발자가 되고싶은

0개의 댓글