Liveness / Safety blockchain 블록의 생성 과정은 safety와 liveness를 동시에 만족시킬 수 없다. 이는 1985년에 발표된 FLP Impossibility를 통해 증명되었다. FLP Impossibility 위 논문에서는 ‘비동기 네트워크 환경에서는 Safety와 Liveness를 동시에 만족시키는 분산된 합의 알고리즘은 존재할 수 없다.’를 수학적으로 증명하였는데, 이는 곧 분산 시스템 기반의 Blockchain 환경에서 Liveness와 Safety를 모두 만족하며 합의하는 것은 불가능하다는 것을 의미한다. 때문에 블록체인에서는 이를 극복하기 위해 다음 방법들을 사용한다. 합의를 재정의한다. 비동기성을 포기한다. Liveness over Safety Liveness를 ..
Digital Signature 네트워크에서 송신자의 신원을 증명하는 방법이며, 공개 키 기반의 암호화 방식을 이용하였다. 디지털 서명에 활용하는 기본 알고리즘은 다음과 같다. RSA 기반 DSA 기반 ECC 기반 단계 Alice가 Content를 Alice’s private key로 암호화한 Crypto를 Alice’s public key와 함께 업로드한다. Bob이 Crypto를 Alice가 올린 Alice’s public key와 함께 다운로드한다. Bob이 Crypto를 Alice’s public key로 Decrypt 한다. 만약 Alice가 올린 Content가 훼손되거나, 공격자에 의해 바뀐 경우, Decrypt 되지 않는다. 만약 Decrypt가 성공한다면 해당 내용은 Alice’s pri..
Cryptographic Hashing 해시 함수의 일종으로, 해시 값으로부터 원래의 값을 도출하기 힘든 성질을 가진 경우를 뜻한다. 입력값의 길이에 상관없이 출력값의 길이는 고정적이다. 예를 들어 256 bits 해싱일 경우 64개의 16진수 문자로 이루어진 코드 문자열로 끝난다. 조건 단방향성 해시 함수는 단방향성을 가지고 있어 출력값을 베이스로 입력값을 유추할 수 없어야한다. 하나의 문자만 변경되어도 전혀 다른 값 출력 해시 충돌 해시 함수는 여러 입력값으로부터 하나의 출력값을 가질 수 있는데 이를 해시 충돌이라고 부르고, 이를 최소화하여 매우 낮은 충돌 확률을 보장해야한다. 고정된 출력값의 길이 항상 일정한 출력값을 보장하여 데이터 일관성과 효율적인 처리를 보장 Hash table key-valu..
Asymmetric Key Encryption 공개 키와 비공개 키 기반의 기술. 평문을 encrypt와 decrypt하기 위해 2개의 다른 키를 사용한다. 대칭 키 암호화 보다 느리다. 대표적인 알고리즘으로는 RSA, 디피-헬만, 타원곡선암호 등이 있다. 개념 A와 B 키가 있다고할 때, A로 암호화한 내용은 오직 B로만 복호화할 수 있고 B로 암호화한 내용은 A로만 복호화할 수 있다는 것이 기본 개념이다. 때문에 하나의 키를 공개하여도 나머지 키만 보호된다면 무관하므로 서로가 상대의 공개 키를 공유하여 이를 해석하는 데에 사용하게되어 배송 문제가 근본적으로 발생하지 않는다. 다만 이러한 비대칭 키는 암복호화가 대칭 키 알고리즘보다 현저히 느려 소규모의 데이터, 또는 대칭 키를 공유하는 데에 활용할 수..
Symmetric Key Encipherment 하나의 secret key를 encrypt와 decrypt에 사용하는 암호화 방식이며 대칭 키 알고리즘에는 두 개의 유형이 존재한다. 블록암호 암호문을 만들기 위해 암호 키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방법이다. 패딩 블록 암호는 블록 단위로 암호화를 진행하므로 평문의 길이가 블록의 배수가 아니라면 패딩을 추가하여 를 극복한다. 이때 사용하는 패딩 알고리즘에서 가장 중요한 점은 패딩된 메시지 P(M) 으로부터 원본 메시지 M을 찾아야한다는 것이다. 운용 방식 각 블록들에 대해서 각각 암호화를 진행하는 방식을 운용 방식이라 부른다. 블록 길이 주로 64, 128bits를 사용한다. 키 길이 키 길이에는 40, 56, 64, 80, 128,..
terraform state backend를 외부로 설정하고 외부에서 인프라를 수정했을 때 외부의 tfstate와 로컬의 tfstate를 state pull/push를 통해 일관성을 유지할 수 있다. 다만, 이와 달리 terraform에서 전혀 다루지 않고 Web GUI에서만 생성한 경우 terraform import를 통해 infra를 코드로 정의할 수 있다. 사용법 terraform [global options] import [options] ADDR ID ADDR - import하는 대상에게 부여하는 리소스 주소 ID - import 대상의 고유 값 import를 수행하기 위해서는 대상을 위한 provider를 구성하여 init까지 완료되어야한다. 이후 Security Group을 예시로 들자면, ..