KAIST 사이버보안연구센터, ‘PGP를 활용한 롤링페이퍼’ 설계
[보안뉴스= 정승일 KAIST 사이버보안연구센터 바이너리분석팀장] 여러분은 친구에게 비밀 글이나 비밀 파일을 보내려 할 때 어떤 방식을 사용하는지 생각해 볼 필요가 있다, 아마도 파일을 압축하고 비밀번호를 설정한 후 해당 비밀번호를 메신저나 이메일을 통해 전송할 것이다. 하지만 이 방식은 암호가 유출될 위험이 있어 보안상의 문제가 발생할 수 있다. 그렇다면 어떤 방법을 사용해야 할까?

▲간접 신뢰(Indirect Trust)[자료=카이스트 CSRC]
이에 필자는 안전한 컴퓨팅 방법으로 개인정보와 데이터를 안전하게 암호화하고 전자서명을 생성하는 데 사용되는 암호화 프로토콜 및 소프트웨어인 PGP(Pretty Good Privacy)를 소개하고자 한다. PGP는 높은 수준의 암호화를 누구나 쉽게 수행할 수 있는 유용한 소프트웨어다. PGP를 사용하기 위해 키를 생성하면 공개키(Public Key)와 개인키(Private Key)가 쌍으로 생성된다. 다른 사람이 나의 공개키를 이용해 암호화할 수 있으며 암호화된 파일은 나의 개인키로만 복호화를 할 수 있다. 따라서 PGP의 서비스를 원활하게 이용하기 위해서는 공개키를 공유하는 것이 중요하다. PGP는 안전하고 효율적으로 키를 공유하기 위해 어떤 방법을 제공할까?
PGP 사용, 공개키에 대한 신뢰가 중요
PGP를 안전하게 사용하기 위해서는 공개키에 대한 신뢰가 중요하다. 신뢰할 수 없는 공개키에 암호화를 하면 중요한 정보가 유출될 수 있기 때문이다. 이를 해결하기 위해 제안된 개념이 ‘Web of trust’다. Web of trust는 중앙 집중식 인증기관(PKI) 없이도 사용자 간에 신뢰 관계를 형성하고 키를 교환하는 방법을 제공하는 신뢰 모델이다. 예를 들어 A가 B를 신뢰하고 B가 C를 신뢰할 때 A는 C를 알지 못하지만, B와의 연결을 통해서 A가 C를 신뢰할 수 있도록 설계한 관계를 말한다. 내가 직접 알지 못하지만, 제3자를 통해 연결된 신뢰 관계를 간접 신뢰(Indirect Trust)라고 하고, 이는 Web of trust를 확장하는 중요한 역할을 한다.

▲간접 신뢰의 예시[자료=카이스트 CSRC]
Web of trust도 올바르게 활용하지 못하면 오히려 문제가 발생할 수 있다, 이는 모델의 중요한 가치인 ‘신뢰’의 기준이 주관적이기 때문이다. 사용자마다 신뢰 수준을 평가하는 기준이 다르기 때문에 때에 따라서는 키를 안전하게 관리하지 못하는 사람의 키도 신뢰 망에 연결돼 있어 신뢰하는 키가 될 수 있다. 그렇다면 주관적인 기준 때문에 발생하는 문제는 무엇일까?
‘신뢰 수준(Trust Level)’이란 키 소유자의 키 관리 능력을 신뢰할 수 있는지 평가하는 기준이다. 예를 들어, 아무에게나 쉽게 키에 서명하는 키의 소유자는 신뢰하기 어렵지만, 신중하게 키에 서명하는 키의 소유자는 신뢰할 수 있다. 이러한 신뢰도는 △1단계=I don′t know or won′t say(신뢰 수준을 판단할 수 없음) △2단계=I do NOT trust(신뢰하지 않음) △3단계=I trust marginally(제한된 신뢰) △4단계=I trust fully(완전한 신뢰) △5단계=I trust ultimately(최고 수준의 신뢰로 자신의 키에 해당) 등 다섯 단계로 표현된다. 1과 2는 잘 모르는 사람이거나 신뢰할 수 없는 상황에 해당한다. 3 또는 4는 신뢰가 있지만, 신뢰 정도에 따라서 구분해 선택할 수 있다. 5는 최고 수준의 신뢰로 자신일 경우 해당한다.
PGP 사용, ‘보안’과 ‘확장’ 사이에 고민이라면
보안의 관점에서는 모든 정책은 보수적이어야 하고, 신뢰 수준의 평가 역시도 보수적이어야 한다. 가장 안전한 신뢰 수준 설정 방법은 내가 아는 사람만 신뢰하는 것이다. 만난 적이 없다면 신뢰할 수 없다는 기준을 세워야 한다. 따라서 간접 신뢰의 상황에서는 2 수준인 ‘Not trust’를 설정해야 한다.
PGP는 안전한 컴퓨팅을 목적으로 사용하기 때문에 안전을 위협할 수 있는 요소가 있다면 보수적인 관점으로 접근해 신중하게 사용할 필요가 있다. 따라서 나를 기준으로 직접 신뢰(Direct Trust)만 신뢰 수준을 설정하고 그 외에는 모두 신뢰하지 않음(2, Not Trust)으로 설정하는 편이 좋다. 직접 신뢰도 3 수준인 ‘제한된 신뢰’를 기본으로 해야 한다.

▲다양한 신뢰 관계 예제[자료=카이스트 CSRC]
PGP를 안전하게 사용하기 위해서는 Web of trust의 확장보다 안전한 신뢰망 형성을 우선으로 생각해야 한다. 함께 일하는 회사 동료, 팀원들과 같이 직접 만나는 관계에서 안전한 신뢰망을 구축하는 것부터 시작해야 한다. Web of trust는 누구나 인증기관(Certificate Authority)이 될 수 있다. PGP의 키 관리 시스템과 절차를 정확하게 이해하고 신중하게 키에 서명하고 관리한다면 견고하고 안전한 PGP 사용이 가능할 것이다.
PGP 사용의 생활화, 안전한 컴퓨팅 환경 노하우는
일상생활, 특히 ‘파일 암호화 전송’이나 ‘Git 커밋 서명’ 등에서 PGP를 사용하면 더욱 안전한 컴퓨팅 환경을 구축할 수 있다. 먼저 ‘파일 암호화 전송’에서는 다양한 업무를 수행하는 과정에서 암호화가 필요한 상황이 때때로 발생한다. 연구계획서를 작성하거나 특허 또는 소프트웨어 등록을 위해 주민등록번호, 주소 등 개인정보가 요구될 때가 있다. 또는 연구 관련 비용을 집행하기 위해 신용카드 번호 및 CVC(Card Verification Code) 정보가 요구되기도 한다. 이처럼 업무 수행 중 다양한 형태의 민감한 정보를 공유해야 하는 상황이 발생할 때 PGP로 암호화해 안전하게 정보를 공유할 수 있다.
‘Git 커밋 서명’은 소프트웨어 개발 시 깃허브(GitHub)와 깃랩(GitLab)에 공개키를 등록해 커밋할 때마다 코드에 서명을 진행할 수 있다. 신원이 확인되지 않은 악의적인 공격자가 공개 소프트웨어 저장소에 악성코드를 업로드가 가능하다. 이러한 문제를 해결하기 위해 커밋시 서명을 진행하면 안전한 환경을 만들 수 있다. 커밋을 할 때 서명이 정상적으로 되면 원격저장소에서 개발자의 신원이 확인됐음을 나타내는 Verified의 확인이 가능하다.
새로운 PGP 활용법, PGP 활용한 롤링페이퍼
이에 KAIST 사이버보안연구센터(CSRC)는 PGP 활용을 더욱 장려하기 위해 다양한 방법을 모색하고 있으며, 그 가운데 하나로 PGP를 활용한 롤링페이퍼를 설계했다. 롤링페이퍼란 한 장의 종이에 여러 사람이 메시지를 작성해 전달하는 것이다. 이와 같은 작성 방식은 다른 사람이 작성한 메시지를 누구나 확인할 수 있으며, 때로는 깊은 마음을 전하기 어려울 수 있다. 이를 개선하기 위해 기존의 롤링페이퍼에 PGP를 사용해 편지의 최종 수신자만 확인할 수 있는 메커니즘을 제안했다.

▲PGP를 활용한 롤링페이퍼[자료=카이스트 CSRC]
‘PGP를 활용한 롤링페이퍼’를 보면, X는 최종 수신자, A·B·C는 메시지 작성자다. A, B, C는 X의 공개키를 소유하고 있다. A가 A.txt에 메시지를 작성해 rolling.enc로 압축 후 X의 공개키로 암호화해 B에게 보내고, B는 B.txt에 메시지를 작성 후 X의 공개키로 암호화해 C에게 보낸다. 이 과정을 살펴보면 rolling.enc는 파일 내용은 변경되지만 이름은 같은 것을 알 수 있다. C도 똑같이 메시지 작성 후 압축 및 암호화해 X에게 보낸다. X는 받은 rolling.enc를 자신의 개인키로 복호화와 압축을 해제하면 A, B, C의 메시지 파일을 모두 확인할 수 있다.
이러한 방식을 통해 안전한 롤링페이퍼 구현이 가능하며, 파일이 암호화돼 있기 때문에 메시지 전달을 위해 메신저, 메일, 파일 공유 서비스 등 다양한 매체를 활용할 수 있다. PGP를 활용한 롤링페이퍼는 사내에서 안전하고 재미있는 의사소통 도구로 활용될 수 있다.
KAIST CSRC에서는 PGP를 안전하게 사용하기 위한 신뢰 수준 설정 방법, PGP를 사용해 파일 암호화 등 다양한 활용 방법에 관해 연구하고 ‘PGP를 활용한 롤링페이퍼’를 제안했다. 더욱 편리하고 안전한 PGP 사용이 일상생활에 자리 잡고 다양한 형태로 발전해 대중화되기를 기대해본다.
이 연구성과는 과기정통부, 정보통신기획평가원의 ‘데이터경제를 위한 블록체인 기술 개발’ 사업 ‘스마트 컨트랙트의 개발-배포-실행의 전주기적 취약점 및 신뢰성 오류 개선 기술개발’ 과제의 수행 결과로 KAIST 사이버보안연구센터(CSRC)는 이러한 보안 강화 기술 제안과 더불어 현존하는 모든 종류의 스마트 컨트랙트 버그 오라클을 포괄하는 동적 분석 도구를 개발 중이며, 이를 통해 스마트 컨트랙트의 안전성과 신뢰성을 높이고, 블록체인 기술의 발전을 도모하고 있다. 앞으로도 CSRC는 보안 강화 및 기술 개발에 지속적으로 투자해 더 안전하고 신뢰할 수 있는 블록체인 환경을 구축하고자 한다.
[글_ 정승일 KAIST 사이버보안연구센터 바이너리분석팀장]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>