2021.11.22

비대칭 키부터 블록체인까지··· 알수록 쓸모 있는 '암호화' 상식

Matthew Tyson | InfoWorld
디지털 서명부터 전송 계층 보안, 블록체인, 비트코인까지 현대 인터넷 보안 인프라의 이면에 있는 암호화 기술을 살펴본다. 

암호화 기술이 점점 더 중요해지고 있다. 모두가 앱에 로그인하거나 이메일을 보낼 때마다 1970년대의 획기적 발전을 바탕으로 한 독창적인 암호화 인프라를 사용하고 있다.  

특히, 암호화폐 및 암호화폐 투자의 시대에 전문 소프트웨어 개발자와 코더를 넘어 일반 대중도 암호화 기술의 작동 방식을 이해하면 혜택을 볼 수 있다. 알고 있든 그렇지 않든 모두 일상생활에서 암호화 기술을 쓰기 때문이다. 
 
ⓒGetty Images

암호화란? 
암호화는 통신을 보호하는 행위다. 이는 원치 않는 자가 데이터를 보거나 변경하지 못하게 하는 프로토콜을 구현하는 여러 기법을 통해 달성된다. 암호화 기술 분야는 다음의 4가지 측면으로 설명할 수 있다. 

1. 기밀성(Confidentiality): 데이터가 의도하지 않은 자에게 노출되지 않는다.
2. 무결성(Integrity): 네트워크를 통해 송수신되는 데이터가 임의로 조작되거나 삭제되지 않는다.
3. 인증(Authentication): 당사자가 서로의 신원을 확실하게 검증할 수 있다.
4. 부인방지(Non-repudiation): 데이터를 보낸 사람이 보낸 사실을 부인하거나, 받은 사람이 받은 사실을 부인할 수 없다.


대칭 암호(Symmetric ciphers) 
컴퓨터가 등장하기 이전의 암호화는 암호 문자(cipher)를 사용했다. 암호 문자는 읽을 수 있는 텍스트에서 알 수 없는 텍스트로, 그리고 다시 그 반대로 매핑하는 것을 의미한다. 

간단한 예를 들면 텍스트의 모든 문자에 4를 더하는 것이다(그러면 A는 E가 된다). 디코딩은 각 문자에서 4를 빼면 된다. 이러한 과정을 암호화(encryption)와 복호화(decryption)라고 부른다. 

물론 알파벳에서 4자리를 이동하는 것은 너무 쉽기 때문에 안전하지 않다. 해석용 키를 필요로 하는 복잡한 매핑을 생성하는 게 더 안전하다. 하지만 이런 키가 모든 송·수신자에게 배포돼야 한다. 대칭 암호의 유명한 예는 2차 세계 대전에서 쓰인 에니그마(Enigma machine)다. 

단방향 함수(One-way functions)
컴퓨터의 등장과 수학의 발전으로 암호화 가능성은 한층 복잡해졌다. 여러 새로운 기법이 생겨났지만 가장 기본적인 것은 단방향 함수다(이는 고정 길이 출력을 생성하는 단방향 해시를 포함한다). 단방향 함수는 암호화 기본 요소로 간주된다. 이름에서 알 수 있는 것처럼 이는 한 방향으로만 작동한다. 

단방향 함수의 일반적 용도는 비밀번호가 데이터베이스(예: 자바 및 자바스크립트)에 유지될 때 이를 해시하는 것이다. 비밀번호는 일반 텍스트(fluffy123)로 만들어지고, 단방향 알고리즘은 이를 무의미한 문자열(XFcbe2d3bh0sa)로 변환한다. 

공격자가 데이터베이스 액세스 권한을 얻더라도 비밀번호는 안전하다. 현재 컴퓨터 시스템을 사용해 이 과정을 효율적으로 되돌릴 방법은 없는 것으로 알려졌다. 

공격자가 알고리즘 로직(예: BCrypt 소스)을 모두 알아내더라도 함수를 환원시킬 수 없다는 것은 흥미로운 사실이다. 그렇긴 하지만 단방향 해싱은 완벽하지 않으며, 이를 깨기 위한 다양한 기법이 도입됐다(예: 레인보우 테이블 등). 

최신 해싱 라이브러리는 해시의 난이도를 높이는 기능(컴퓨팅 성능이 증가하면 해시 강도도 증가한다)과 알고리즘에 ‘솔트’를 도입하는 기능(동일한 입력이라고 해도 해시값은 고유하다)을 포함한다. 솔트가 비밀로 유지되는 한, 솔트로 해시된 비밀번호는 기본적으로 해독할 수 없다. 

단방향 해싱의 배경이 되는 이론을 간단하게 이해하려면 이 스택 오버플로우 답변을 참조하라.

유사-난수 함수(Pseudo-random functions) 
단방향 함수와 함께 무작위 숫자를 생성하는 알고리즘 역시 암호화 기본 요소, 즉 통신 보안에 필요한 기본 구성 요소로 간주된다. 왜 그럴까? 

모든 비밀 통신 시스템은 보안 당사자는 알고, 외부자는 알지 못하는 값을 사용한다. 그리고 이는 무작위 숫자 생성을 활용한다(사용자가 제공한 입력도 통합되지만 사람은 그러한 입력을 제공하는 데 있어 신뢰할 수 없는 것으로 악명 높다). 

대부분의 무작위 시드 유형(예: 시스템 클럭에서 가져오기 등)은 어느 정도까지만 무작위일 뿐이다. 해커가 숫자 생성 방식을 안다면 무작위 숫자 공격을 할 수 있다. 해커의 독창성은 화이트 해커의 독창성과 나란히 진행되는 듯하다. 실제로 암호화 기술의 역사는 밀고 당기기 경쟁이다. 

난수 공격을 방지하기 위해 난수를 생성하는 더 안전한 방법이 개발됐다. 대부분의 암호화 라이브러리에는 난수 생성기를 위한 기능이 포함돼 있다. 

비대칭 키(Asymmetric keys)
현대 암호화에서 가장 독창적이고 영향력이 큰 (기술) 개발은 아마도 비대칭 키 쌍일 것이다. 이는 공개-개인 키 쌍(public-private key pairs)이라고도 한다. 기본 개념은 암호화용 키와 복호화용 키 2개가 생성된다는 것이다. 암호화 키는 배포하기에 안전하고, 복호화 키는 비밀로 유지된다. 

이는 1970년대 말 두 명의 프로그래머와 한 명의 수학자에 의해 개발됐다. 이들은 자신들의 이름 첫 글자를 따서 이 획기적인 암호 시스템을 RSA로 명명했다(여담이지만 비슷한 시스템이 한 영국인 수학자에 의해 몇 년 앞서 발명됐다. 하지만 해당 시스템은 비밀로 유지됐고, 당시 컴퓨터 기술의 한계로 실용적이지 않다고 여겨졌다). 

RSA 및 다른 비대칭 키 시스템은 비대칭 방식으로 작동하는 2개의 키를 생성함으로써 단방향 함수의 개념을 크게 발전시켰다. 첫 번째 키는 암호화된 메시지를 생성하는 데 쓰이고(공개 키), 두 번째 키는 이를 해독하는 데 쓰인다(개인 키). 

이 기법의 배경이 되는 수학은 간단하지 않다. 실제로 한동안 관련 연구진은 이것이 이론적으로 가능한지 심각하게 의심하기도 했다. 오늘날 공개-개인 키 암호화는 SST/TLS, 디지털 서명, 비트코인 등의 암호화폐에서 사용되는 ‘전송 계층’ 보안을 포함하여 현대 인터넷 보안 인프라의 많은 부분을 차지한다. 

비대칭 키가 깨뜨리기 불가능한 시스템을 생성하는 건 아니다. 하지만 개인 키가 비밀로 유지되는 한, 암호화를 깨는 것은 사실상 불가능하다. 

지금까지 공개된 수많은 취약점 공격(예: 난수 공격, 타이밍 공격 등) 외에도 가장 안전한 공개-비밀 키 쌍의 보안은 관련된 숫자를 분해하는 과정을 역으로 실행하는 데 얼마나 많은 시간이 걸리느냐에 기초한다. 

이는 그다지 안전하지 않은 것처럼 보일 수 있지만 공개 키 암호화 수학에 관한 브렛 슬래트킨의 기사를 인용하자면 다음과 같다. “지구상에서 가장 빠른 컴퓨터에 있는 환상적인 솔루션조차도 현대의 비대칭 암호화를 깨려면 우주 끝까지 가야 할 것이다.” 

최신 애플리케이션에서 비대칭 키는 대칭 키를 교환할 보안 채널을 설정하기 위한 일종의 핸드셰이크로 사용된다(브라우저가 TLS와 협상할 때 발생). 대칭 키는 실제로 훨씬 더 빠르기 때문에 서버와 클라이언트는 비대칭 키를 통해 서로를 검증한 다음 추가 통신에 쓰일 대칭 키를 전송한다. 그렇게 되면 이 통신은 도청이나 조작으로부터 안전하다. 

공개 키 인프라(Public key infrastructure) 
비대칭 암호화에서 또 다른 중요한 유의사항은 신뢰할 수 있는 중앙집중식 기관이 필요하다는 것이다. 이는 누군가를 검증하는 게 누군가가 개인 키를 보유하고 있음을 증명하는 데 국한되지 않기 때문이다. 

이를테면 웹 서버의 SSL/TSL 인증서가 기술적으로 유효할 뿐만 아니라 진짜임을 확인하려면 중앙 기관(예: 구글 등)을 참조해야 한다. 

이는 키 유효성 검사 계층 내의 침해가 아래의 모든 키를 손상시키므로 해커에게 더 많은 기회를 제공한다. 이러한 침해가 발생하더라도 대부분의 인터넷은 이 시스템을 사용한다. 이 시스템 전체를 공개 키 인프라(PKI)라고 한다. (인증서를 발급하는) 신뢰할 수 있는 당사자는 인증 기관(Certification Authority; CA)이다. 

PKI의 대안은 사용자가 중앙집중식 권한에 의존하는 대신 P2P 분산 기반으로 서로를 신뢰하는 ‘PGP(Pretty Good Privacy)’다. PGP는 이메일을 암호화하고 다운로드가 조작되지 않았는지 확인하는 데 주로 사용된다.  

일반적으로 가장 정교한 형태의 비대칭 키 및 암호화 기술은 비트코인 등의 블록체인 시스템에서 사용된다. 

중앙집중식 권한의 필요성을 제거하고, 암호화로 서명된 트랙잭션의 유효성 검사를 네트워크로 이동함으로써 블록체인은 인터넷 인프라 위에 분산돼 있지만 안전한 계층에 구축된 새로운 시스템의 가능성을 열었다. 현재는 이 가능성의 맛만 보고 있을 뿐이다. 

블록체인과 이를 기반으로 구축된 시스템은 필수적인 암호화 구조다. 키 쌍은 트랜잭션에 서명하는 데 사용되며, 암호화 해시는 체인 내의 링크를 검증하는 데 활용된다. 

오늘날의 암호화 환경을 간략하게 살펴봤다. 상당히 복잡하긴 하지만 암호화 세계를 이해하는 일은 개발자와 비개발자 모두에게 갈수록 중요해지고 있다. 
ciokr@idg.co.kr


 



2021.11.22

비대칭 키부터 블록체인까지··· 알수록 쓸모 있는 '암호화' 상식

Matthew Tyson | InfoWorld
디지털 서명부터 전송 계층 보안, 블록체인, 비트코인까지 현대 인터넷 보안 인프라의 이면에 있는 암호화 기술을 살펴본다. 

암호화 기술이 점점 더 중요해지고 있다. 모두가 앱에 로그인하거나 이메일을 보낼 때마다 1970년대의 획기적 발전을 바탕으로 한 독창적인 암호화 인프라를 사용하고 있다.  

특히, 암호화폐 및 암호화폐 투자의 시대에 전문 소프트웨어 개발자와 코더를 넘어 일반 대중도 암호화 기술의 작동 방식을 이해하면 혜택을 볼 수 있다. 알고 있든 그렇지 않든 모두 일상생활에서 암호화 기술을 쓰기 때문이다. 
 
ⓒGetty Images

암호화란? 
암호화는 통신을 보호하는 행위다. 이는 원치 않는 자가 데이터를 보거나 변경하지 못하게 하는 프로토콜을 구현하는 여러 기법을 통해 달성된다. 암호화 기술 분야는 다음의 4가지 측면으로 설명할 수 있다. 

1. 기밀성(Confidentiality): 데이터가 의도하지 않은 자에게 노출되지 않는다.
2. 무결성(Integrity): 네트워크를 통해 송수신되는 데이터가 임의로 조작되거나 삭제되지 않는다.
3. 인증(Authentication): 당사자가 서로의 신원을 확실하게 검증할 수 있다.
4. 부인방지(Non-repudiation): 데이터를 보낸 사람이 보낸 사실을 부인하거나, 받은 사람이 받은 사실을 부인할 수 없다.


대칭 암호(Symmetric ciphers) 
컴퓨터가 등장하기 이전의 암호화는 암호 문자(cipher)를 사용했다. 암호 문자는 읽을 수 있는 텍스트에서 알 수 없는 텍스트로, 그리고 다시 그 반대로 매핑하는 것을 의미한다. 

간단한 예를 들면 텍스트의 모든 문자에 4를 더하는 것이다(그러면 A는 E가 된다). 디코딩은 각 문자에서 4를 빼면 된다. 이러한 과정을 암호화(encryption)와 복호화(decryption)라고 부른다. 

물론 알파벳에서 4자리를 이동하는 것은 너무 쉽기 때문에 안전하지 않다. 해석용 키를 필요로 하는 복잡한 매핑을 생성하는 게 더 안전하다. 하지만 이런 키가 모든 송·수신자에게 배포돼야 한다. 대칭 암호의 유명한 예는 2차 세계 대전에서 쓰인 에니그마(Enigma machine)다. 

단방향 함수(One-way functions)
컴퓨터의 등장과 수학의 발전으로 암호화 가능성은 한층 복잡해졌다. 여러 새로운 기법이 생겨났지만 가장 기본적인 것은 단방향 함수다(이는 고정 길이 출력을 생성하는 단방향 해시를 포함한다). 단방향 함수는 암호화 기본 요소로 간주된다. 이름에서 알 수 있는 것처럼 이는 한 방향으로만 작동한다. 

단방향 함수의 일반적 용도는 비밀번호가 데이터베이스(예: 자바 및 자바스크립트)에 유지될 때 이를 해시하는 것이다. 비밀번호는 일반 텍스트(fluffy123)로 만들어지고, 단방향 알고리즘은 이를 무의미한 문자열(XFcbe2d3bh0sa)로 변환한다. 

공격자가 데이터베이스 액세스 권한을 얻더라도 비밀번호는 안전하다. 현재 컴퓨터 시스템을 사용해 이 과정을 효율적으로 되돌릴 방법은 없는 것으로 알려졌다. 

공격자가 알고리즘 로직(예: BCrypt 소스)을 모두 알아내더라도 함수를 환원시킬 수 없다는 것은 흥미로운 사실이다. 그렇긴 하지만 단방향 해싱은 완벽하지 않으며, 이를 깨기 위한 다양한 기법이 도입됐다(예: 레인보우 테이블 등). 

최신 해싱 라이브러리는 해시의 난이도를 높이는 기능(컴퓨팅 성능이 증가하면 해시 강도도 증가한다)과 알고리즘에 ‘솔트’를 도입하는 기능(동일한 입력이라고 해도 해시값은 고유하다)을 포함한다. 솔트가 비밀로 유지되는 한, 솔트로 해시된 비밀번호는 기본적으로 해독할 수 없다. 

단방향 해싱의 배경이 되는 이론을 간단하게 이해하려면 이 스택 오버플로우 답변을 참조하라.

유사-난수 함수(Pseudo-random functions) 
단방향 함수와 함께 무작위 숫자를 생성하는 알고리즘 역시 암호화 기본 요소, 즉 통신 보안에 필요한 기본 구성 요소로 간주된다. 왜 그럴까? 

모든 비밀 통신 시스템은 보안 당사자는 알고, 외부자는 알지 못하는 값을 사용한다. 그리고 이는 무작위 숫자 생성을 활용한다(사용자가 제공한 입력도 통합되지만 사람은 그러한 입력을 제공하는 데 있어 신뢰할 수 없는 것으로 악명 높다). 

대부분의 무작위 시드 유형(예: 시스템 클럭에서 가져오기 등)은 어느 정도까지만 무작위일 뿐이다. 해커가 숫자 생성 방식을 안다면 무작위 숫자 공격을 할 수 있다. 해커의 독창성은 화이트 해커의 독창성과 나란히 진행되는 듯하다. 실제로 암호화 기술의 역사는 밀고 당기기 경쟁이다. 

난수 공격을 방지하기 위해 난수를 생성하는 더 안전한 방법이 개발됐다. 대부분의 암호화 라이브러리에는 난수 생성기를 위한 기능이 포함돼 있다. 

비대칭 키(Asymmetric keys)
현대 암호화에서 가장 독창적이고 영향력이 큰 (기술) 개발은 아마도 비대칭 키 쌍일 것이다. 이는 공개-개인 키 쌍(public-private key pairs)이라고도 한다. 기본 개념은 암호화용 키와 복호화용 키 2개가 생성된다는 것이다. 암호화 키는 배포하기에 안전하고, 복호화 키는 비밀로 유지된다. 

이는 1970년대 말 두 명의 프로그래머와 한 명의 수학자에 의해 개발됐다. 이들은 자신들의 이름 첫 글자를 따서 이 획기적인 암호 시스템을 RSA로 명명했다(여담이지만 비슷한 시스템이 한 영국인 수학자에 의해 몇 년 앞서 발명됐다. 하지만 해당 시스템은 비밀로 유지됐고, 당시 컴퓨터 기술의 한계로 실용적이지 않다고 여겨졌다). 

RSA 및 다른 비대칭 키 시스템은 비대칭 방식으로 작동하는 2개의 키를 생성함으로써 단방향 함수의 개념을 크게 발전시켰다. 첫 번째 키는 암호화된 메시지를 생성하는 데 쓰이고(공개 키), 두 번째 키는 이를 해독하는 데 쓰인다(개인 키). 

이 기법의 배경이 되는 수학은 간단하지 않다. 실제로 한동안 관련 연구진은 이것이 이론적으로 가능한지 심각하게 의심하기도 했다. 오늘날 공개-개인 키 암호화는 SST/TLS, 디지털 서명, 비트코인 등의 암호화폐에서 사용되는 ‘전송 계층’ 보안을 포함하여 현대 인터넷 보안 인프라의 많은 부분을 차지한다. 

비대칭 키가 깨뜨리기 불가능한 시스템을 생성하는 건 아니다. 하지만 개인 키가 비밀로 유지되는 한, 암호화를 깨는 것은 사실상 불가능하다. 

지금까지 공개된 수많은 취약점 공격(예: 난수 공격, 타이밍 공격 등) 외에도 가장 안전한 공개-비밀 키 쌍의 보안은 관련된 숫자를 분해하는 과정을 역으로 실행하는 데 얼마나 많은 시간이 걸리느냐에 기초한다. 

이는 그다지 안전하지 않은 것처럼 보일 수 있지만 공개 키 암호화 수학에 관한 브렛 슬래트킨의 기사를 인용하자면 다음과 같다. “지구상에서 가장 빠른 컴퓨터에 있는 환상적인 솔루션조차도 현대의 비대칭 암호화를 깨려면 우주 끝까지 가야 할 것이다.” 

최신 애플리케이션에서 비대칭 키는 대칭 키를 교환할 보안 채널을 설정하기 위한 일종의 핸드셰이크로 사용된다(브라우저가 TLS와 협상할 때 발생). 대칭 키는 실제로 훨씬 더 빠르기 때문에 서버와 클라이언트는 비대칭 키를 통해 서로를 검증한 다음 추가 통신에 쓰일 대칭 키를 전송한다. 그렇게 되면 이 통신은 도청이나 조작으로부터 안전하다. 

공개 키 인프라(Public key infrastructure) 
비대칭 암호화에서 또 다른 중요한 유의사항은 신뢰할 수 있는 중앙집중식 기관이 필요하다는 것이다. 이는 누군가를 검증하는 게 누군가가 개인 키를 보유하고 있음을 증명하는 데 국한되지 않기 때문이다. 

이를테면 웹 서버의 SSL/TSL 인증서가 기술적으로 유효할 뿐만 아니라 진짜임을 확인하려면 중앙 기관(예: 구글 등)을 참조해야 한다. 

이는 키 유효성 검사 계층 내의 침해가 아래의 모든 키를 손상시키므로 해커에게 더 많은 기회를 제공한다. 이러한 침해가 발생하더라도 대부분의 인터넷은 이 시스템을 사용한다. 이 시스템 전체를 공개 키 인프라(PKI)라고 한다. (인증서를 발급하는) 신뢰할 수 있는 당사자는 인증 기관(Certification Authority; CA)이다. 

PKI의 대안은 사용자가 중앙집중식 권한에 의존하는 대신 P2P 분산 기반으로 서로를 신뢰하는 ‘PGP(Pretty Good Privacy)’다. PGP는 이메일을 암호화하고 다운로드가 조작되지 않았는지 확인하는 데 주로 사용된다.  

일반적으로 가장 정교한 형태의 비대칭 키 및 암호화 기술은 비트코인 등의 블록체인 시스템에서 사용된다. 

중앙집중식 권한의 필요성을 제거하고, 암호화로 서명된 트랙잭션의 유효성 검사를 네트워크로 이동함으로써 블록체인은 인터넷 인프라 위에 분산돼 있지만 안전한 계층에 구축된 새로운 시스템의 가능성을 열었다. 현재는 이 가능성의 맛만 보고 있을 뿐이다. 

블록체인과 이를 기반으로 구축된 시스템은 필수적인 암호화 구조다. 키 쌍은 트랜잭션에 서명하는 데 사용되며, 암호화 해시는 체인 내의 링크를 검증하는 데 활용된다. 

오늘날의 암호화 환경을 간략하게 살펴봤다. 상당히 복잡하긴 하지만 암호화 세계를 이해하는 일은 개발자와 비개발자 모두에게 갈수록 중요해지고 있다. 
ciokr@idg.co.kr


 

X