암호학의 역사와 블록체인 — 탈중앙화 혁신
— written by 김선우 박현재 서용원 / reviewed by 돌비콩
목차
들어가며
1. 암호화의 필수요소와 과거 암호화 방식
- 암호화의 필수요소
- 공격의 종류
- 과거의 암호화
2. 암호화의 기본적인 방법
- 대체하기
- 자리바꾸기
- 키를 통한 암호화
3. 대칭키 암호화와 비대칭키 암호화
- 대칭키 암호화란?
- 대칭키 암호화의 예시
- 비대칭키 암호화란?
- 비대칭키 암호화의 예시
4. 디지털 서명
- 디지털 서명이란?
- hash
- 디지털 서명의 과정
5. 키를 주고받는 방법과 블록체인
- 키를 어떻게 주고받을 것인가
- 중앙화 — 키 분배 센터와 인증 기관
- 탈중앙화 — 블록체인
마치며
들어가며
인류는 자신만의 소중한 정보를 보호하고 싶은 본능을 가지고 있습니다. 정보를 비밀스럽게 유지하기 위해서 인류는 제삼자가 알아보지 못하게 암호화를 발전시켜 왔습니다. 고대 로마의 카이사르 암호에서부터 암호화를 찾아볼 수 있는데, 이는 단순한 문자 치환 방식임에도 불구하고 오늘날까지 가장 잘 알려진 암호화 방법 중 하나입니다.
영화 ‘이미테이션 게임’에서 앨런 튜링의 에니그마를 해독하기 위한 노력을 보면서, 우리는 보안이 역사의 한 획을 긋는데 결정적인 영향을 준다는 것을 알 수 있습니다. 암호학의 발전은 단순히 학문의 발전을 넘어서 국가의 운명을 좌우할 만큼 중요합니다.
최근에 경제적 이슈, 정보의 권리와 관련해 ‘탈중앙화’가 중요한 화두로 떠올랐습니다. 블록체인 기술은 이러한 패러다임 전환의 최전선에 있습니다. 고대 카이사르 암호에서부터 블록체인에 이르기까지 암호화에 대해 간략하게 알아보고 이를 통해 탈중앙화가 어떤 맥락에서 중요한 키워드로 부상했는지 알아봅시다.
1. 암호화의 필수요소와 과거 암호화 방식
암호화의 필수 요소
암호화의 필수 요소는 기밀성, 무결성, 가용성입니다. 이 세 요소는 서로 밀접하게 연결되어 있습니다.
1)기밀성(Confidentiality)
정보에 접근할 권한이 없는 사람으로부터 그 사람이 메시지에 접근 또는 읽거나 해독할 수 없도록 보호하는 것을 말합니다. 예를 들어, 암호화를 사용하여 데이터를 보호하여, 키를 가지고 있는 사람만이 정보를 볼 수 있도록 합니다.
2)무결성(Integrity)
데이터가 의도하지 않은 방식으로 변경되는 것을 막고 변경 사실이 숨겨지지 않도록 보장하는 것을 말합니다. 무결성을 확보하기 위해서는 해시 함수, 디지털 서명 등의 기술을 사용하여 데이터가 변경되었는지 검증할 수 있습니다.
3)가용성(Availability)
데이터나 서비스가 필요할 때 권한이 있는 정당한 사용자가 정상적으로 접근할 수 있도록 보장하는 것을 의미합니다. 이는 시스템이 정상적으로 작동하고, 데이터가 필요할 때 이용할 수 있도록 관리 및 보호하는 것을 포함합니다.
정보가 기밀성을 유지하면서 무결성과 가용성을 잃는다면 해당 정보는 신뢰성을 잃게 됩니다. 또한 무결성이 보장되더라도 기밀성이 침해되면 정보는 더 이상 안전하지 않게 됩니다. 마찬가지로 가용성이 확보되지 않는다면 데이터가 안전하더라도 사용할 수 없기 때문에 실질적 가치가 줄어듭니다.
공격의 종류
공격 유형을 파악하는 것은 무엇을 어떻게 지킬 것인지 생각할 때 중요합니다. 공격은 크게 수동적 공격(Passive Attacks)과 적극적 공격(Active Attacks)으로 구분됩니다. 수동적 공격은 메시지 자체에는 영향을 주지 않는다는 특징이 있고, 적극적 공격은 메시지의 내용을 변화시킨다는 특징이 있습니다.
1)수동적 공격(Passive Attacks)
- 내용 열람(Eavesdropping or Interception)
공격자가 네트워크를 통해 전송되는 메시지를 몰래 듣거나 내용을 살펴보는 것입니다. 이는 데이터의 기밀성을 침해합니다.
- 트래픽 분석(Traffic Analysis)
공격자가 메시지를 보고 어디에서 어디로 가는지, 언제 가는지, 메시지는 얼마나 큰지 알 수 있게 되는 것입니다.공격자는 어떤 패턴을 분석해서 정보를 추론할 수 있습니다.
2)적극적 공격(Active Attacks)
- 마스커레이드(Masquerade)
공격자가 다른 사용자로 가장하여 시스템에 접근하는 것입니다. 메시지를 보내는 과정에서 “누가” 를 조작하는 것입니다.
- 재전송(Replay)
이전에 캡처된 데이터를 재전송하여 시스템을 속이는 방법입니다. 메시지를 보내는 과정에서 “언제” 를 조작하는 것입니다.
- 메시지 변조(Modification)
메시지 내용을 수정하거나 변조하여 수신자에게 전달하는 방법입니다. “무엇” 을 조작하는 것입니다.
이 외에도 악성 소프트웨어 관련 공격 유형도 있습니다.
- 바이러스(Virus)
사용자의 명시적인 행동에 의해 활성화되며, 다른 프로그램에 자신을 복제하여 시스템의 파일이나 정보를 손상시키는 코드입니다.
- 웜(Worm)
스스로 네트워크를 통해 복제할 수 있는 독립적인 프로그램으로, 대량의 네트워크 트래픽을 발생시키거나 시스템 자원을 고갈시켜 피해를 줍니다.
이처럼 공격에는 다양한 종류가 있습니다. 이러한 공격으로부터 인류는 정보를 보호하기 위해 많은 노력을 해왔습니다. 데이터의 기밀을 유지하면서 변조가 되지 않아야 하고 정확히 열람 허가가 된 자만 해독할 수 있어야 암호화의 목적을 달성했다고 볼 수 있습니다. 그렇다면 과거엔 어떤 방식으로 암호화가 이루어 졌을까요?
공격의 종류
과거의 다양한 암호화 방식 몇 가지를 살펴보겠습니다.
1)스키테일 암호 (Scytale)
스키테일은 고대 그리스에서 사용된 초기의 암호화 도구 중 하나로, 주로 스파르타에서 군사적 메시지를 암호화하기 위해 사용되었습니다. 긴 띠에 메시지를 가로 방향으로 쓴 다음, 이 띠를 막대기에 감아서 사용합니다. 막대기의 두께가 암호의 키 역할을 하며, 메시지는 막대기에 풀어야만 읽을 수 있습니다.
스키테일의 주요 취약점은 암호의 키인 막대기의 두께를 알아내면 쉽게 해독할 수 있다는 점입니다. 또한, 빈 공간에 무의미한 문자를 채워 넣어야 하기 때문에 패턴을 분석할 수 있는 취약점도 존재합니다.
2)카이사르 사이퍼 (Caesar Cipher)
카이사르 사이퍼는 줄리어스 카이사르가 자신의 군사적 메시지를 암호화하기 위해 사용한 것으로 유명합니다. 이 암호는 알파벳의 자리를 정해진 수만큼 밀어서 암호화합니다. 예를 들어, 3글자씩 이동시키는 카이사르 암호에서 ‘A’는 ‘D’가 되고, ‘B’는 ‘E’가 됩니다.
카이사르 사이퍼의 취약점은 평문에서 암호문으로 변환될 때 알파벳의 이동 거리가 고정되어 있어서 빈도 분석을 통해 쉽게 해독할 수 있다는 점이 있습니다.
3)비제네르 암호 (Vigenère Cipher)
비제네르 암호는 16세기 프랑스의 암호학자 블레즈 드 비제네르의 이름을 따서 명명되었습니다. 이 암호는 여러 개의 카이사르 사이퍼를 결합하여 만든 것입니다. 카이사르 사이퍼가 빈도 분석을 통해 해독될 수 있다면, 비제네르 암호에서는 키워드를 활용해 빈도 분석에서 자유로워 질 수 있었습니다. 그러나 키워드의 길이가 길지 않을 때 긴 메시지에서 반복적인 특징이 발생하면, 빈도 분석과 패턴 매칭 기법을 사용하여 키워드를 유추하고 메시지를 해독할 수 있습니다.
4)에니그마 (Enigma)
에니그마는 제2차 세계대전 중 독일군에 의해 사용된 전자 기계식 암호화 장치입니다. 여러 개의 회전하는 디스크(로터)를 사용하여 복잡한 방식으로 암호화를 수행했습니다. 로터의 위치는 매번 변하며, 이는 암호화 과정을 매우 복잡하게 만들었습니다.
에니그마의 취약점 중 하나는 한 글자가 절대 그 글자 자신으로 암호화되지 않는다는 점입니다. 이와 같은 패턴과 함께 당시 연합국의 암호해독가들은 복잡한 수학적, 통계적 방법을 사용하여 에니그마의 암호를 깰 수 있었습니다.
시간이 지나면서 암호화의 방식이 발전한 것을 알 수 있습니다. 과거의 암호화 방식을 통해 인류가 어떤 식으로 암호화의 요소들을 완성시켜 나갔는지 살펴보겠습니다.
2. 암호화의 기본적인 방법
1)대체하기
대체하기는 암호학에서 보통 치환(substitution)이라고 불리는 기본적인 암호화 방법 중 하나입니다. 이 방법은 암호화 과정에서 원본 메시지(평문)의 각 문자를 규칙에 따라 다른 문자로 치환하여 암호문을 만들어내는 것을 말합니다.
먼저, 암호화에 사용할 새로운 알파벳 테이블을 설정합니다. 예를 들어, A-Z까지의 알파벳에 대해 각각 다른 문자로 대응시키는 표를 만듭니다. 다음으로 그 테이블에 따라 규칙을 원문에 적용합니다.
예를 들어, 다음과 같은 대응 테이블이 있다고 하겠습니다.
원본 알파벳: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
대응 알파벳: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
‘gopax’라는 단어를 위의 테이블에 따라 암호화 하겠습니다.
- G -> J
- O -> R
- P -> S
- A -> D
- X -> A
따라서 ‘gopax’는 ‘jrsda’로 암호화되었습니다.
알파벳을 고정된 수만큼 이동시켜서 치환하는 카이사르 암호와 여러 개의 카이사르 암호를 조합시키는 비제네르 암호가 이 대체하기를 통해 암호화합니다. 그러나 언어마다 자주 등장하는 문자가 있어서, 등장하는 빈도가 따라 통계적인 접근을 통해 테이블을 유추할 수 있다는 단점도 있습니다.
2)자리바꾸기
자리바꾸기는 암호학에서 보통 전위(Transposition)라고 불립니다. 이 방식은 평문의 문자 위치를 재배치함으로써 암호화를 진행하는데, 원문의 글자 자체는 변하지 않고 그 순서만 바뀌는 것이 특징입니다. 미리 정한 규칙에 따라 순서를 재설정하는 간단한 방식입니다.
예를 들어, 규칙이 홀수 번째 글자를 먼저 쓰고, 그 다음에 짝수 번째 글자를 쓰는 것을 규칙으로 정하겠습니다.
준비한 ‘gopax guardians’를 위의 규칙에 따라 재배치하겠습니다.
- 홀수 번째 글자: g p x g a d a s
- 짝수 번째 글자: o a (띄어쓰기) u r i n
따라서 ‘gpxgadasoa urin’ 으로 암호화되었습니다.
글자들을 위아래로 지그재그 형태로 배열한 후 행을 따라서 글자들을 읽어 암호문을 만드는 레일 펜스 암호, 긴 막대기에 평문을 나선형으로 감은 다음 그 막대기를 벗겨내어 세로로 읽어 암호문을 만드는 스키테일 암호가 이 자리 바꾸기 방식으로 암호화합니다. 역시 통계적으로 동일한 패턴이 반복되면 추측해서 원문을 찾을 수 있다는 단점이 있습니다.
치환과 전위는 훌륭한 암호화 방법이었지만 시간이 지나면서 학문과 기술이 발담함에 따라 여러가지 방법으로 파훼되기 쉬워졌습니다. 결국 기밀성과 무결성을 보장하지 못하게 되고 암호화의 요소를 갖추지 못하게 되었습니다. 이를 보완하기 위해서 암호화는 한 단계 더 발전해 key라는 것이 등장하게 됩니다.
3)키를 통한 암호화
키를 사용하는 암호화는 대체하기(substitution)와 자리 바꾸기(transposition)의 기본 원칙에 조합해 더 많은 보안을 추가하는 것입니다. 이 키는 암호화와 복호화 과정에 필수적인 정보로 이용되며 메시지의 내용을 암호화할 때 적용되는 특정 규칙이나 절차를 정의합니다.
키는 그 내용의 특정 방법에 따라 평문을 암호문으로 바꿉니다. 암호문을 다시 원래의 평문으로 변환하는 과정에서도 동일한 키 또는 다른 키가 사용됩니다. 동일한 키를 사용하는 방식을 대칭키 암호화라고 부르고, 다른 키를 사용하는 방식을 비대칭키 암호화라고 부릅니다.
공통된 특징으로 키가 없으면 암호문을 복호화하기 어려워 메시지에 대한 보안이 강화된다는 것과, 암호화 및 복호화 과정을 자동화하여 실수를 최소화하고 처리 속도를 높일 수 있다는 것이 있습니다. 이때 키를 안전하게 보관하고 전달하는 것이 중요합니다. 암호화 방법과 키를 관리하는 방법이 복잡할수록 키를 관리하고 유지하는 데 더 많은 자원이 필요합니다. 이러한 암호화의 대표주자인 대칭키 암호화와 비대칭키 암호화에 대해서 알아보겠습니다.
3. 대칭키 암호와 비대칭키 암호화
1)대칭키 암호화란?
대칭키 암호화 시스템에서는 암호화와 복호화에 동일한 비밀 키를 사용합니다. 두 사람이 서로 메시지를 주고받으려 할 때 미리 공유한 같은 비밀 키를 갖고 있어야 합니다. 같은 키를 사용해 메시지를 암호화하고 다시 그 키로 메시지를 복호화하는 것입니다.
암호화된 메시지는 원본 메시지와 전혀 다르게 보여야 합니다. 다르게 보여야 한다는 것을 강조하는 용어 두가지가 있습니다. 하나는 확산(diffusion), 다른 하나는 ‘혼란(confusion)입니다.
확산(Diffusion)은 암호문과 평문 사이의 관계를 알 수 없어야 한다는 것을 말합니다. 암호문에서부터 평문의 구조를 알아볼 수 없어야 한다는 것으로, 공격자가 암호문을 통해 원본 메시지의 정보를 유추하기 어려워야 한다는 것입니다. 메시지의 한 부분이 바뀌면 암호문 전체에 걸쳐 변화가 발생하도록 해서 관계를 알아보기 힘들게 만들 수 있습니다.
혼란(Confusion)은 암호문과 키 사이의 관계를 알 수 없어야 한다는 것을 말합니다. 이는 키가 조금만 변경되어도 암호문이 크게 바뀌는 방식으로 이뤄질 수 있는데, 암호문으로부터 키를 유추하는 것이 사실상 불가능해야 한다는 것을 강조하고 있습니다.
라운드(rounds)라는 용어도 있는데, 이 용어는 암호화가 이루어지는 반복 수를 말합니다. 각 라운드를 반복할수록 암호화 정도가 더욱 올라가는 것입니다. 암호문이 더 안전해지는 것을 목표로 할 때, 각 라운드를 더 많이 반복합니다.
2)대칭키 암호화의 예시
- DES (Data Encryption Standard)
DES는 1977년 미국 국립표준기술연구소(NIST)에 의해 표준화되었습니다. 초기에는 매우 강력한 암호화 방법으로 여겨졌습니다. DES는 64비트 블록 크기를 사용하고, 56비트 키를 사용하여 블록 암호화를 수행합니다. 평문은 16라운드의 복잡한 변환을 거칩니다.
DES의 가장 큰 취약점은 키 길이가 상대적으로 짧다는 것이었습니다. 그래서 무작정 넣어보는 공격에 취약해 1999년에는 암호문이 며칠 만에 해독되었습니다. 빠르게 발전하는 하드웨어의 능력에 비해 보안성이 떨어지게 되었습니다. 이 문제를 해결하기 위해서 다른 암호화 방식을 찾아보게 됩니다.
- AES (Advanced Encryption Standard)
DES의 취약점을 극복하기 위해 미국 국립 표준 연구소는 새로운 암호화 표준을 찾기 위한 공개 경쟁을 시작했습니다. 여기에서 AES가 선택되었습니다. 키 길이가 짧아서 취약점이 있었던 DES와는 다르게 더 긴 다양한 길이의 키를 사용하게 되었고, 암호화 과정도 더 복잡하게 바뀌었습니다.
DES보다 더 복잡해진 만큼 더 오래 걸릴 수 있다는 단점은 있지만, 단점보다 보안적인 장점이 더 크다고 할 수 있습니다.
3)비대칭키 암호화란?
비대칭키 암호화는 공개키 암호화라고도 합니다. 암호화와 복호화에 다른 키, 공개키와 비밀키를 따로 사용하는 방식입니다. 공개키는 모두가 볼 수 있게 공개하고 비밀키는 키의 소유자만이 알 수 있도록 안전하게 유지합니다.
이 방식은 대칭키 암호화의 단점 때문에 생겨났다고 할 수 있습니다. 대칭키 암호화는 몇가지 문제가 있었는데, 키를 어떻게 분배할 것인지의 문제와 그 키를 어떻게 관리할 것인지에 대한 문제, 새로운 사용자가 생길 때마다 모든 기존 유저들과 새로운 키를 만들어야 해서 비효율에 대한 문제가 있었습니다. 이에 반해 비대칭키 암호화는 공개키를 일괄적으로 암호화에 사용하지만 공개키로 암호화한 메시지는 개인키로만 복호화할 수 있기 때문에 훨씬 효율적이었고, 키의 보관과 관리에 있었어도 유리했습니다.
예를 들어 ‘고’, ‘팍’, ‘스’가 서로 메시지를 주고 받는다고 가정할 때, 고는 팍과 스에게 자신의 공개키를 알립니다. 팍이 고에게 메시지를 보내고 싶다고 하면 팍은 고의 공개키로 메시지를 암호화해서 고에게 줍니다. 고의 공개키로 암호화된 메시지는 고의 비밀키로만 복호화할 수 있기 때문에, 팍이 보낸 메시지는 고만이 읽을 수 있습니다. 스 또는 다른 사람이 그 메시지를 공개키나 비밀키로 메시지를 복호화할 수 없습니다.
4)비대칭키 암호화의 예시
- RSA (Rivest-Shamir-Adleman)
RSA 알고리즘은 1977년에 로널드 리베스트, 아디 샤미르, 레오나르드 에이들먼에 의해 고안되었습니다. RSA는 최초의 실용적인 공개키 암호 시스템이라고 인정받고 있습니다.
RSA 알고리즘의 핵심은 큰 소수를 이용하는 것입니다. 두 개의 큰 소수를 곱하여 얻은 결과(N)를 기반으로 공개키와 비밀키를 생성합니다. 아주 큰 소수와 지수승만큼 곱하기, 나머지 계산하기와 같이 수학적 연산으로 메시지를 암호화하고 복호화합니다.
RSA의 숫자가 아주 크고 지수승 계산, 나누기 계산이 있어서 속도가 느리다는 단점이 있으나 그만큼 안전한 면이 있습니다.
이러한 비대칭키 암호화는 디지털 서명에도 사용 될 수 있습니다. 공개키와 개인키(비밀키)를 통해 데이터의 진위 여부를 확인 할 수 있기 때문입니다. 디지털 서명에 대해서 간략하게 알아보고 비대칭키 암호화가 어떻게 적용되는지 알아보겠습니다.
4. 디지털 서명
1)디지털 서명이란?
디지털 서명은 암호화 기술을 사용하여 어떤 메시지가 특정한 사람과 관련이 있음을 증명하는 것입니다. 마치 공문서에 날인을 남기는 것처럼, 디지털 서명은 개인의 신원 뿐 아니라 그 내용까지 객관적으로 증명할 수 있게 만들어줍니다. 이와 관련된 키워드들이 있습니다.
- 인증(Authentication)
디지털 서명은 문서나 메시지가 특정한 사람에 의해 서명되었다는 것을 확인합니다. 이는 서명한 사람의 공개키를 사용하여 검증할 수 있습니다.
- 무결성(Integrity)
서명된 문서나 메시지가 전송 후에 변경되지 않았음을 보증합니다. 만약 내용이 조금이라도 변경되면, 서명이 무효가 되므로 무결성이 위배됩니다.
- 부인 방지(Non-repudiation)
문서나 메시지의 발송자가 자신이 보낸 것을 부인할 수 없게 만듭니다. 서명이 보내는 사람의 개인키로 생성되었기 때문에, 해당 개인키의 소유자만이 서명을 할 수 있습니다. 이를 통해 문서나 메시지의 발송에 대해 거짓말을 할 수 없게 만듭니다.
2)hash
해시(hash) 함수는 데이터를 고정된 크기의 값(해시 값)으로 변환하는 과정입니다. 다양한 데이터의 양이나 길이에 상관없이 일정한 길이의 결과값을 도출하는 것이 특징입니다. 블록체인 네트워크의 무결성을 보장하고, 새로운 트랜잭션을 네트워크에 추가하는데 비트코인을 포함한 많은 암호화폐는 채굴 과정에 SHA-256 해시 함수를 사용합니다. 이전의 내용이 조금이라도 변한다면 해시 결과값이 크게 변한다는 특징이 있기 때문에 기존 해시값과 값이 변했다면 데이터가 위변조 되었다고 짐작 할 수 있습니다. 해시 함수는 다음과 같은 키워드로 설명할 수 있습니다.
- 결정적(Deterministic)
동일한 입력에 대해 항상 동일한 해시 값을 생성한다는 것을 말합니다.
- 원상 저항(Pre-image Resistance)
결과적인 해시 값으로부터 원본 데이터를 찾는 것이 계산상 불가능해야 한다는 것을 말합니다.
- 충돌 방지(Collision Resistance)
두 개의 서로 다른 입력값이 동일한 해시 값을 갖는 것이 계산상 불가능해야 합니다.
이 특징들은 해시가 디지털 서명에서 핵심적인 역할을 수행하게 합니다.
3)디지털 서명의 과정
디지털 서명은 다음과 같은 과정을 통해 이뤄집니다.
- 발송자는 메시지의 해시함수를 통해 해시값을 생성합니다.
- 그 해시를 자신의 비밀키로 암호화하여 서명을 생성합니다.
- 메시지와 함께 이 서명을 수신자에게 보냅니다.
- 수신자는 발송자의 공개키를 사용하여 서명을 복호화하여 원래의 해시 값을 얻습니다.
- 수신자는 메시지로부터 독립적으로 같은 해시 함수를 사용해 해시 값을 생성하고, 이를 서명으로부터 복호화된 해시 값과 비교합니다.
- 해시 값이 일치하면 메시지가 변조되지 않았다는 것과 동시에 발송자가 보낸 것이 확실하다는 것을 확인할 수 있습니다.
5. 키를 주고받는 방법과 블록체인
1)키를 어떻게 주고 받을 것인가
키의 관리와 교환은 암호화의 핵심적인 부분입니다. 대칭키이든 비대칭키이든 키를 이용한다는 것은 동일하기 때문입니다. 키를 필요로 하는 사람에게 공개키든 대칭키든 실질적으로 주고 받아야 메시지를 암호화하고 복호화할 수 있습니다. 여기서 어떻게 키를 주고 받게 할 것인지의 문제가 중요해집니다. 네트워크로 키를 주고 받는 와중에, 가운데에서 악의적으로 키를 가로채고 마치 목표로 하는 키인 것처럼 다른 키를 주거나 또는 키 자체를 가로챈다면 메시지의 기밀성도, 무결성도 지킬 수 없게 됩니다. 이 문제를 해결하기 위한 첫 번째 접근은 국가를 최상단에 두고 이것을 관리해 주는 계층 구조를 만드는 것이었습니다.
2)중앙화 — 키 분배 센터와 인증 기관
키 분배 센터(Key Distribution Center, KDC)는 사용자들 사이에서 대칭키를 안전하게 분배하는 중앙 서버입니다. 키 분배 센터는 각 사용자에게 개인적인 비밀키를 할당하고 두 사용자가 통신하고자 할 때 임시 세션 키를 생성하여 안전하게 통신할 수 있도록 합니다. 이 세션 키는 통신 세션이 종료되면 더 이상 사용되지 않습니다.
인증 기관(Certificate Authority, CA)는 공개키 인프라(Public Key Infrastructure, PKI)에서 핵심 역할을 합니다. 최상단의 단일 인증 기관이 모든 일을 하기에는 일이 너무 많기 때문에, 인증 기관을 두고 일정 부분을 대리하게 합니다. 인증 기관은 사용자의 신원을 검증하고 공개키와 함께 디지털 인증서를 발급합니다. 이 인증서는 해당 사용자가 소유한 공개키가 실제 그 사용자의 것임을 보증합니다.
하지만 이런 중앙화된 키 분배 센터의 방식도 완벽하지 못합니다. 구성원 수가 증가 시 배포 센터의 부하가 올 수 있습니다. 또한 만약 누군가의 악의적인 공격으로 배포센터의 컴퓨터가 고장난다면 조직 전체의 암호 통신의 마비가 올 수도 있습니다. 중앙에서 키를 관리한다는 것을 안다면 공격의 대상이 되기가 너무도 쉽다는 것 역시 큰 문제점입니다. 이러한 키의 배분에 있어서 중앙화의 문제점은 비트코인의 등장으로 새로운 국면을 맞이합니다.
3)탈중앙화 — 블록체인
블록체인이라는 개념은 비트코인 백서에 처음으로 등장했습니다. 중앙화된 기관을 거치지 않고 탈중앙화라는 개념을 사용하기 위해 도입된 블록체인의 장점은 데이터를 구축하고 검증하는 분산성입니다. 각자의 분산된 블록체인 네트워크 노드는 합의 알고리즘을 거쳐 트랜잭션의 유효성을 검증합니다. 각 노드는 전부 동일한 분산된 원장을 가지고 있으며 합의 알고리즘에 의해서 유효하다고 판단되지 않는 것은 걸러지고 51% 이상의 동의를 얻어야 다음 블록으로 넘어 갈 수 있습니다. 이러한 블록체인은 합의와 불변성이라는 가치를 도입하고 노드 유지와 탈중앙성을 유지하기 위해 마이닝(채굴)이라는 개념과 해시함수를 도입했습니다. 해시함수를 통해 데이터의 고유 값을 유지하게 하며 마이닝을 통해서 채굴자들에게 합당한 보상을 제시하고 그렇지 못한 채굴자들은 퇴출함으로써 정직한 탈중앙성을 유지하게 합니다.
블록체인 기술은 탈중앙화된 방식으로 키를 배분할 수 있도록 합니다. 공개키와 개인 키를 사용하는 비대칭 암호화 기술이 사용된다고 할 때, 사용자의 공개키를 블록체인에 등록해 누구나 해당 공개키를 사용하여 메시지를 암호화할 수 있게 합니다. 여기서 블록체인은 키의 배포와 관리를 중앙화된 기관 없이도 가능하게 합니다. 키 관리 비용을 줄임과 동시에 중앙화로부터 생기는 보안 문제에서 자유롭다는 장점을 가집니다. 중앙화 되어있지 않기 때문에 중앙컴퓨터가 문제가 생긴다고 해도 네트워크상의 다른 노드가 존재한다면 이는 문제가 되지 않습니다.
하지만 블록체인 역시 완벽한 보안을 자랑하지는 않습니다. 하나 또는 소수의 사용자가 네트워크의 해시파워의 51% 이상을 통제한다면 공격이 성공할 수 있습니다. 실제로 규모가 작은 알트코인에서는 그리 어려운 일이 아닙니다. 비트코인과 비교해서 현저하게 낮은 해시파워를 보유하고 있기 때문에 51%이상의 공격이 성공한 사례가 실제로 있습니다. 이는 모든 합의 프로세스를 가진 암호화폐들의 문제이며 실제 사례도 존재합니다. 51% 공격이 성공한다면 네트워크가 중단되거나 이중지불이 되는 등 심각한 피해가 발생 할 수 있습니다.
블록체인 기술은 여전히 발전하고 있습니다. 그러나 모든 새로운 기술처럼 블록체인도 새로운 보안 문제, 법적/규제 문제, 인식 문제 등 여러 도전에 직면해 있습니다. 그럼에도 불구하고, 이 기술은 암호화와 키 관리에 있어서 중요한 요소로 자리 잡을 것입니다.
마치며
우리는 인류가 오랜 시간 동안 발전시켜 온 암호학에 대하여 알아보았습니다. 초기의 단순 치환 암호에서부터 현대의 대칭키, 비대칭키, 키 분배 센터와 블록체인에 이르기까지 비밀을 지키기 위한 인간의 노력은 끊임없이 이어지고 있고 발전하고 있다는 것을 알 수 있었습니다.
블록체인 기술의 등장은 이러한 발전 과정에서 중요한 전환점이 될 것입니다. 블록체인은 데이터 검증에 있어서 국가를 필요로 하지 않습니다. 중앙화된 데이터 관리 시스템과는 다르게 분산된 네트워크를 통해 데이터의 기밀성과 무결성, 가용성을 지켜내고 있습니다.
블록체인이 강조하는 탈중앙화가 어떤 맥락에서의 탈중앙화인지 알아보았습니다. 이때까지의 중앙화는 대칭키와 비대칭키를 주고 받는 과정을 보증하기 위해서 어쩔 수 없었다는 것을 알았고, 여기에서 누군가의 보장을 더 이상 필요하지 않게 만드는 블록체인이 혁신적이라고 불리는 이유라는 것을 알게 되었습니다.
암호학의 발전은 기술적인 진보뿐만 아니라, 우리의 사회적, 경제적 상호작용 방식에도 영향을 미치고 있습니다. 블록체인은 이러한 변화의 최전선에 서 있으며, 앞으로도 이 분야에서 더 많은 혁신과 발전이 이루어질 것으로 기대됩니다.
Reference
Atul Kahate, Cryptography and network security
본 아티클은 고팍스 가디언즈의 블록체인 대중화 교육 일환으로 만들어진 자료입니다. 고팍스는 블록체인 산업의 연구와 학술 활동 활성화하고, 가상자산과 블록체인 기술에 대한 인식 개선을 목표로 하고 있습니다.
면책 조항: 해당 게시글은 단순한 정보 제공을 위해 작성되었으며, 특정 가상자산에 대한 추천을 하는 것이 아닙니다. 또한 내용상의 정합성과 정확성, 완전성을 보장하지 않습니다. 따라서 해당 내용을 바탕으로 투자 결정을 하지 마십시오. 작성된 내용은 작성자 본인의 견해이며, 고팍스의 공식 의견이 아닙니다. 본지는 어떠한 투자적, 법률적 책임 등을 지지 않습니다.