보안/블록체인
비대칭 암호화
비대칭키 암호화 알고리즘(Public Key Enctyption) 암호화에 사용하는 키와 복호화에 사용하는 키가 다른 암호화 알고리즘이다. 키 생성 알고리즘은 공개 키(Public key)와 개인 키(Private key)를 생성하고, 암호화 알고리즘은 수신자의 공개키를 사용하여 암호문을 생성하고, 복호화 알고리즘은 수신자가 자신의 개인키를 사용해 복호화하는 과정이다. 개인키를 가진 사람 이외에 다른 사람은 암호문의 내용을 확인할 수 없다. 암호화 알고리즘은 무작위 알고리즘을 사용해 암호화를 진행할 때마다 다른 암호문이 나온다. 트랩도어 함수(TDF, Trapdoor Function) 해시 함수와 같은 일방향 함수는 입력이 주어지면 출력을 계산할 수 있지만, 출력이 주어지면 입력을 계산할 수 없다. 트랩..
블록체인 암호학 - 블록 암호
블록 암호(Block cipher) 블록 암호는 정보를 블록 단위로 암호화하는 대칭키 암호 시스템이다. 입력 비트와 출력 비트가 정해져 있다. AES가 많이 사용된다. AES(Advanced Encryption Standard) 2001년 미국 표준 기술 연구소에서 제정된 암호화 방식이다. DES의 안전성에 대한 논란 이후 새로운 암호 프로토콜이 필요했고, 링델(Rijndael) 암호가 가장 적합한 알고리즘으로 선정되어 AES라는 표준으로 채택되었다. 128비트, 192비트, 256비트 세 가지 키 길이로 처리할 수 있다. 안전성을 바란다면 256비트를, 빠른 속도를 바란다면 129비트를 이용한다. 입력과 출력 사이에는 레이어(라운드)가 있다. 128비트에서는 10라운드, 192비트에서는 12라운드, 2..
블록체인 암호학 - 고전 암호, 현대 암호 시스템
치환 암호(Substitution Cipher) 문자 매핑에 관한 테이블이 주어지는 암호 방식이다. 입력 문자에 대해 테이블 매핑을 그대로 적용하여 암호화를 진행한다. 복호화는 이 테이블을 거꾸로 적용한 것이다. 테이블을 어떻게 만들어 내느냐에 따라 다양한 값이 만들어진다. 알파벳의 경우 a는 a~z까지 26가지 값을 매핑할 수 있고, b는 a가 매핑된 값을 제외한 25가지, c는 24가지... 그래서 $26!$의 키가 존재하게 된다. 단순하게는 시저 암호(Ceasar Cipher)를 예로 들 수 있다. 키가 단순한 덧셈 형태로 이루어져있어 a의 경우는 +3한 d에 매핑되는 방식이다. 치환 암호는 어떻게 파훼할 수 있을까? 빈도 분석을 사용해서 암호를 깰 수 있다. 시저 암호의 경우 같은 테이블을 이용한..
블록체인 암호학 - 전자 서명 2
공인인증서 전자 서명을 검증하는 데 필요한 공개키에다 소유자 정보를 추가한 증명서이다. CA(Certificate Authority, 인증기관)와 사용자 간 인증서 체결을 통해 사용자 공개키를 인증한다. 사용자는 검증키와 서명키 쌍을 보유한다. CA는 사용자 정보를 확인하고, 검증키와 사용자 정보에 서명해 인증서를 생성한 후 사용자에게 전달한다. CA에서 받은 인증키로 검증키를 인증하고, 서명을 확인한다. 사용자는 개인 서명키를 이용해 데이터나 자금을 거래할 수 있다. 서명 압축(Signature Aggregation) 블록체인에서 서명이 차지하는 비중은 크다. 효율성을 위해서 서명 크기를 줄여야 하는데, 이를 구현한 것이 서명 압축이다. 다수의 서명을 하나로 압축하는데, 개수에 상관 없이 일정한 크기로..
블록체인 암호학- 전자서명
전자서명 전자서명은 서명자가 전자문서에 서명했다는 사실을 확인할 수 있는 정보이다. 키 생성 알고리즘, 서명 알고리즘, 검증 알고리즘으로 구성된다. 키 생성 알고리즘 전자서명을 생성하는 서명키와 서명을 확인하는 검증키를 생성한다. 서명키와 검증키는 개인 별로 다르게 만들어진다. 서명키는 서명하는 본인만 아는 비밀정보이다. 검증키는 모든 이가 아는 공개된 정보이다. 서명키로부터 검증키를 도출할 수는 있지만, 검증키로부터 서명키를 계산할 수는 없다. 서명 알고리즘 문서를 받아 서명키를 사용해 서명값을 계산한다. 문서의 크기가 크다면 알고리즘 내부에서 해시 함수를 사용해 크기를 줄인다. 서명자만이 알고 있는 서명키를 사용해 전자서명을 만든다. 검증 알고리즘 문서와 서명값을 입력으로 받고, 검증키를 사용해 서명..
블록체인 암호학 - 작업 증명(PoW), 양자 안정성, 머클 해시 트리
작업 증명(Proof of Work) 합의 알고리즘 많은 분산 시스템에서는 합의 알고리즘을 통해 일을 처리한다. 합의란 다수의 참여자가 적절한 합의 방법을 이용해 통일된 의사결정을 내리기 위해 사용하는 알고리즘을 말한다. 상태 기계 복제(SMR, State machine Replication) 상태 기계가 같은 상태로 시작하면, 처리가 정상적으로 이루어졌을 경우 모두 같은 상태를 가지게 된다. SMR같은 시스템은 일부가 고장나거나 악의적인 행동을 보여도 전체 시스템은 정상적으로 동작한다고 보장해야 한다. CFT(Crash Fault Tolerant) 서버가 단순히 고장난 형태에 대응할 수 있는 알고리즘이다. BFT(Bizantine fault Tolerant) 서버가 악의적인 행동을 보일 때 대응할 수 ..
블록체인 암호학 - 암호학적 해시 함수
해시(Hash) 해시 함수는 입력 데이터를 고정된 길이로 출력하는 함수다. 입력을 받아 출력을 계산하기는 쉬워도, 주어진 출력값에 해당하는 입력값은 찾기 어렵다. 작업 증명, 전자 서명, 멤버쉽 증명 등 다양한 곳에서 사용한다. 일반적인 해시 함수를 만드는 방법 해시 테이블(Hash table) 연관 구조를 이용하는 자료 구조 블룸 필터(Bloom Filter) 원소가 집합에 속하는지 여부를 검사하는데 사용되는 확률적 자료구조 체크섬(Checksum) 입력 데이터가 바뀌었는지 찾아내는 방법. 네트워크에서 오류가 발생했는지 체크하는 데 사용된다. 암호학적 해시 함수 이런 해시 함수를 작업증명이나 체인에 어떻게 적용할 수 있을까? 이런 해시 함수로는 적용할 수 없다. 일반적인 해시 함수와 다른 성질을 요구하..
블록체인 암호학 - 암호학 기본 내용, 블록체인 암호 기술
암호 핵심 모듈 대칭 암호(Symmetric Cryptography) 정보를 보내는 사람과 받는 사람이 같은 키를 사용하는 방법이다. 송신자는 키(key)를 사용해 메시지를 섞어 해석할 수 없는 텍스트 문자열로 만든다. 뒤섞인 메시지가 목적지에 도착하면 수신자는 동일한 키로 텍스트를 해독해 메시지를 드러낸다. 대칭 암호화 방식은 키가 핵심적인 역할을 맡는다. 메시지를 교환하기 전에 키에 대한 합의를 하거나, 수신 당사자에게 키를 전달해야 한다. 이 때문에 키가 위험에 노출된다. 제삼자가 키를 취득하면 중간에 메시지를 가로채 해독할 수 있다. 비대칭 암호(Asymmetric Cryptography) 정보를 보내는 사람과 받는 사람이 다른 키를 사용하는 방법이다. 공개키 암호(Public-key Crypto..