
Paperis 아티클
암호화 — 내용은 잠가도 드나든 기록은 남는다
열쇠가 있어야 읽히는 글, 잠그는 자리에 따라 달라지는 숨는 상대, 그리고 잠가도 남는 것들
암호화 — 내용은 잠가도 드나든 기록은 남는다
메시지 한 통을 거치는 손들
출근길 지하철에서 친구에게 메시지를 한 통 보냅니다. 「오늘 저녁 7시, 회사 앞에서 보자.」 이 글은 내 휴대전화를 떠나 지하철 와이파이와 통신사의 망을 지나고, 메신저 회사의 컴퓨터에 들렀다가 친구의 휴대전화에 닿습니다. 화면에서는 한순간이지만, 그사이 이 글을 손에 쥐는 곳이 여럿입니다.
그중 누가 이 글을 읽을 수 있을까요. 「암호로 보호된다」는 말을 들으면 아무도 못 본다는 뜻처럼 들립니다. 암호가 숨겨 주는 것은 실제로 많고, 숨겨 주지 못하는 것도 분명히 있습니다.
이 글은 세 물음을 따라갑니다. 암호는 글을 어떻게 바꿔 두는가. 어디서 잠그느냐에 따라 누구에게서 숨는가. 그리고 잠가도 남는 것은 무엇인가. 수식은 쓰지 않습니다.
열쇠가 있어야 읽히는 글
「오늘 저녁 7시, 회사 앞에서 보자」는 누가 보든 읽히는 글입니다. 평문은 암호를 걸기 전의, 누구나 읽을 수 있는 원래 내용입니다. 내 화면에 뜬 글도, 친구 화면에 뜬 글도 평문입니다.
암호화는 열쇠를 가진 사람만 원래 내용으로 되돌릴 수 있게 정보를 바꾸는 일입니다. 평문에 암호화를 걸면 뜻을 알아볼 수 없는 글자 덩어리가 나옵니다. 암호문은 암호화를 거쳐 열쇠 없이는 뜻을 알아볼 수 없게 된 내용입니다.
복호화는 열쇠로 암호문을 원래 내용으로 되돌리는 일입니다. 열쇠를 가진 쪽은 암호문을 받아 복호화하고, 화면에는 다시 평문이 뜹니다. 오늘날 널리 쓰이는 표준 암호 방식 하나는 보내는 쪽과 받는 쪽이 같은 열쇠로 잠그고 엽니다 (DOI: 10.1109/ccict56684.2022.00039; DOI: 10.6028/nist.fips.197, 표준 문서). 잠그는 열쇠와 여는 열쇠가 같은 이런 암호를 대칭키 암호라고 부릅니다. 그 짝으로, 누구나 가져다 쓰라고 내놓는 열린 자물쇠인 공개키로 잠그는 방식이 있고, 둘 다 「열쇠와 자물쇠 — 공개키는 왜 공개해도 안전한가」가 다뤘습니다. 양자컴퓨터는 주로 이 공개키 방식이 기대는 계산을 싸게 만들 수 있는 기계로 꼽힙니다. 지금 가로채 둔 암호문을 나중에 풀겠다는 위협도 함께 거론됩니다 (DOI: 10.55041/isjem08542). 무엇이 정말 위험해지는지는 「양자컴퓨터가 오면 암호는 정말 다 깨지나 — '전부'와 '나중'이라는 두 개의 오해」가 다룹니다.
암호화가 막는 것은 읽기입니다. 암호화는 데이터의 내용을 지킬 뿐, 누군가 그 데이터를 중간에서 가로채거나 손에 넣는 일 자체를 막지는 않습니다 (DOI: 10.1109/ccict56684.2022.00039). 암호문은 남의 손에 들어갈 수 있습니다. 암호화가 약속하는 것은, 남이 가져가도 열쇠 없이는 읽지 못한다는 데까지입니다.
방식은 공개하고, 비밀은 열쇠에만
오래된 암호로 자주 소개되는 카이사르 암호는 글자를 알파벳 순서로 몇 칸씩 밀어 적습니다. 이런 옛 방식은 지금 기준으로는 아주 단순해서 쉽게 깨집니다 (DOI: 10.1016/s1353-4858(1070006-4). 밀 수 있는 칸 수가 스물다섯 가지뿐이라, 방식을 아는 사람은 하나씩 다 밀어 봐도 금방 원문을 찾습니다.
오늘날의 암호는 방식을 숨기는 데 기대지 않습니다. 케르크호프스 원칙은 암호의 안전이 방식을 비밀로 지키는 데가 아니라 열쇠만 비밀로 지키는 데 달려 있어야 한다는 원칙입니다. 이 원칙은 암호의 기본 원칙 가운데 하나로 꼽힙니다 (DOI: 10.1109/netwks.2008.6231360). 방식이 새어 나가도 열쇠만 남아 있으면 잠금이 유지되도록 만들라는 뜻입니다.
표준 암호를 고른 과정이 케르크호프스 원칙을 그대로 보여 줍니다. 미국 국립표준기술연구소는 1997년, 정부의 민감한(기밀 등급은 아닌) 정보를 지킬 대칭키 암호 방식을 고르는 절차를 시작했습니다. 이듬해 후보 15개를 받아 놓고 암호 연구자들에게 분석을 청했고, 최종 후보 다섯을 거쳐 하나를 표준안으로 골랐습니다 (DOI: 10.6028/jres.106.023). 국제 경연을 거쳐 승인된 방식입니다 (DOI: 10.1080/0161-110291890876). 연구자들이 공개적으로 그 방식을 들여다보며 흠을 찾았다는 뜻입니다. 표준이 된 지금도 방식은 공개돼 있고, 숨기는 것은 사용자마다 다른 열쇠뿐입니다.
그러면 열쇠를 하나씩 다 넣어 보면 어떨까요. 무차별 대입은 가능한 열쇠를 하나씩 전부 넣어 보는 공격입니다. 카이사르 암호가 금방 깨지는 것도 이 공격 앞에서 후보가 스물다섯 개뿐이기 때문입니다. 오늘날 표준 방식의 열쇠는 0과 1을 늘어놓은 줄입니다. 0과 1 가운데 하나가 들어가는 자리 하나를 비트라고 부릅니다. 표준 방식의 열쇠 길이는 128비트, 192비트, 256비트 가운데 하나입니다 (DOI: 10.6028/nist.fips.197, 표준 문서).
자리가 하나 늘 때마다 넣어 볼 열쇠의 가짓수는 두 배가 됩니다. 128비트 열쇠라면 2를 128번 곱한 만큼의 후보가 있습니다. 디지털 수사 현장에서도 강한 암호는 열쇠나 비밀 문구 없이 우회할 수 없는 벽으로 다뤄집니다 (DOI: 10.1145/1368506.1368519). 다만 공개키 방식과 마찬가지로, 이 잠금도 여는 값이 아직 아무도 치를 수 없을 만큼 비싸게 만들어졌을 뿐이고, 열 수 없다고 증명된 것은 아닙니다. 정면으로 여는 값이 이렇게 비싸다면, 남는 길은 열쇠를 손에 넣거나 잠그지 않은 내용을 보는 것입니다. 뒤의 절들이 그 자리를 따라갑니다.
다만 열쇠를 사람이 외우는 비밀번호에서 만들면, 짐작해야 할 것은 128비트 열쇠가 아니라 그 비밀번호가 됩니다.
숨기기, 확인하기, 표기 바꾸기
인코딩은 정보를 기계나 프로그램이 다루기 좋은 꼴로 바꿔 적는 일입니다. 웹 주소를 복사해 메신저에 붙이면 주소 속 한글이 %로 시작하는 기호 줄로 바뀌어 있을 때가 있는데, 이것이 인코딩입니다. 바꾸는 규칙이 공개돼 있고 열쇠가 없어서, 규칙을 아는 프로그램이면 누구나 원래대로 되돌립니다. 사람 눈에 낯선 글자 줄이라는 것만으로는 비밀이 되지 않습니다.
해시는 또 다른 일을 합니다. 해시는 아무리 긴 글이든 정해진 길이의 짧은 값 하나로 줄여 놓은 것이고, 「블록체인이란 무엇인가 — 아무도 관리하지 않는 장부가 성립하는 이유」가 이 장치를 다뤘습니다. 해시에는 되돌리는 열쇠가 없습니다. 같은 글을 넣으면 늘 같은 값이 나오고, 글이 한 글자만 달라져도 값이 달라집니다. 그래서 미리 받아 둔 값과 맞대 보면 글이 바뀌었는지 알 수 있습니다. 다만 일부러 고치는 사람은 해시값도 새로 계산해 바꿔 끼울 수 있어서, 맞대 볼 값은 믿을 수 있는 곳에서 받아야 합니다.
그래서 둘은 맡는 일이 다릅니다. 암호에 쓰는 해시는 정보가 고쳐졌는지 알아채는 데, 암호화는 허락받은 사람만 정보를 볼 수 있게 하는 데 쓰입니다 (DOI: 10.1109/sp40001.2021.00010). 되돌리는 열쇠가 없어도, 짧고 흔한 글은 후보를 하나씩 넣어 값을 맞춰 보면 짐작할 수 있습니다. 서버가 비밀번호를 해시로 보관할 때 생기는 이 문제는 이 시리즈의 다른 편 「비밀번호와 패스키」가 다룹니다.
셋을 가르는 물음은 하나입니다. 되돌리는 데 열쇠가 필요한가. 암호화는 열쇠가 있어야 되돌리고, 인코딩은 누구나 되돌리고, 해시는 되돌리는 길 자체를 두지 않습니다.

오가는 동안의 잠금, 보관하는 동안의 잠금
웹에서 오가는 데이터의 약 95%가 이미 암호를 건 연결로 다닙니다. 2026년의 한 체계적 문헌고찰이 최근 측정을 옮겨 적은 수치입니다. 같은 문헌고찰은 암호화가 오가는 데이터와 보관된 데이터를 지키는 주된 수단이 되었다고 정리하면서, 이 잠금이 공격에 쓰이는 데이터도 점점 더 많이 가린다고 적었습니다 (DOI: 10.55041/isjem08542). 데이터는 이렇게 오가는 동안과 보관되는 동안, 두 상태로 지냅니다.
전송 중 암호화는 데이터가 내 기기와 상대 컴퓨터 사이를 오가는 동안 그 길 위에서 내용을 잠가 두는 일입니다. 주소창의 자물쇠 그림이 표시하는 연결의 보안에는 이 잠금이 들어 있습니다. 자물쇠는 길 위의 잠금을 보증할 뿐, 그 길 끝의 사이트가 정직하다는 표시는 아닙니다. 길이 끝나면 잠금도 풀립니다. 상대 컴퓨터에 닿은 데이터는 거기서 복호화되고, 그 컴퓨터는 내용을 읽습니다.
저장 중 암호화는 디스크나 서버에 보관된 데이터를 보관되는 동안 잠가 두는 일입니다. 노트북의 저장장치 전체를 잠가 두는 기능이 그 예입니다. 운영체제에 이런 강한 암호화가 들어오면서, 꺼진 컴퓨터에서는 수사관도 자료를 꺼내지 못할 수 있게 됐습니다. 그래서 조사관은 컴퓨터를 끄기 전에, 켜진 채로 자료를 떠 낼지를 먼저 정해야 합니다 (DOI: 10.1145/1368506.1368519). 꺼져 있을 때는 잠금이 제 몫을 한다는 뜻이고, 켜져 잠금이 풀린 동안에는 사정이 다르다는 뜻이기도 합니다.
켜져 쓰이는 동안 암호 열쇠는 메모리에 평문 그대로 올라가 있습니다 (DOI: 10.14722/ndss.2014.23125). 메모리는 전원이 끊긴 뒤에도 몇 초, 조건에 따라서는 그보다 훨씬 오래 내용을 간직합니다. 기계를 손에 넣은 사람이 그 틈에 메모리에서 열쇠를 찾아내 디스크 암호화 제품 여럿을 뚫은 실험이 있고, 연구진은 이 위험을 없앨 간단한 해결책은 아는 한 없다고 적었습니다 (DOI: 10.1145/1506409.1506429, 2008년 발표·2009년 재수록). 이 공격은 기계를 직접 손에 넣어야 하고, 한 독립 재현 실험은 당시의 새 메모리 칩에서는 재현하지 못했습니다 (DOI: 10.1109/ares.2013.52). 뒤이은 연구들은 새 칩이 메모리 내용을 뒤섞어 두는 장치도 넘을 수 있음을 보였습니다 (DOI: 10.1016/j.diin.2016.01.009; DOI: 10.1109/hpca.2017.10).
서비스 회사의 서버에 보관된 데이터도 잠가 둘 수 있습니다. 그런데 클라우드 서버의 관리자는 최고 권한으로 서버의 메모리와 디스크를 원격으로 들여다볼 수 있는 자리에 있습니다. 한 연구용 데이터베이스는 그런 관리자에게도 평문을 보이지 않으려고, 그 목적으로 따로 설계한 하드웨어를 붙였습니다 (DOI: 10.1145/2463676.2467797). 서버가 내용을 읽지 못하면 서버가 해 주던 일도 줄어듭니다. 메일 서버에 잠가 둔 메일에서 특정 낱말이 든 것만 찾아 달라는 일이 그런 예이고, 이 맞바꿈을 메우는 방식이 따로 연구돼 왔습니다 (DOI: 10.1109/secpri.2000.848445).
어디서 잠그고 어디서 여느냐가, 누구에게서 숨는지를 정합니다.
서버도 못 읽는 대화
메신저 회사의 서버는 내 메시지를 받아 친구에게 건네줍니다. 전송 중 암호화만 걸려 있다면, 길 위에서 잠긴 메시지는 서버에 닿아 풀립니다. 종단간 암호화는 보내는 사람의 기기에서 잠그고 받는 사람의 기기에서만 열어, 그 사이를 건네주는 서버도 내용을 읽지 못하게 하는 방식입니다. 서버는 잠긴 글을 잠긴 채로 건네기만 합니다.
널리 쓰이는 한 메신저 규약은 두 사람의 기기가 먼저 둘만 쓰는 대화 열쇠를 맞추고, 메시지를 보낼 때마다 그 열쇠를 새로 바꿉니다. 열쇠가 한 번 털려도, 그 뒤에 주고받는 메시지에서는 다시 안전해지게 하려는 장치입니다. 기기를 계속 장악당하고 있다면 이 회복도 일어나지 않습니다. 2017년 기준으로 이 규약은 활성 사용자가 10억 명이 넘는 메신저 두 곳을 포함해 여러 곳에 채택돼 있었습니다 (DOI: 10.1109/eurosp.2017.27).
이 규약의 핵심 설계를 수학적 모형으로 옮겨 따진 2017년의 분석은, 자신들이 세운 모형 안에서 그 핵심의 안전성을 증명했고 설계에서 큰 결함을 찾지 못했다고 적었습니다. 이 규약을 다룬 학술 분석은 그때까지 거의 없었고, 저자들은 자신들의 분석이 다른 분석의 출발점이 되기를 바란다고 적었습니다 (DOI: 10.1109/eurosp.2017.27). 이 분석은 설계를 따진 것이고, 각 앱의 코드나 휴대전화의 상태를 따진 것은 아닙니다.
학술지 수준을 확인하지 못한 한 체계적 문헌고찰은, 종단간 암호화가 메시지의 비밀을 지키는 데 크게 기여한다고 정리하면서 암호화와 복호화에 드는 성능 부담 같은 과제도 함께 적었습니다 (DOI: 10.69933/0j09nj29). 수사하는 쪽에서는 이 잠금이 벽이 됩니다. 플랫폼에 저장된 데이터가 암호화돼 있어 분석이 어려워졌고, 조사관은 메신저 앱이 남기는 흔적에 기대 증거를 찾습니다 (DOI: 10.1145/3727641). 수사기관이 이런 대화에 들어갈 길을 둘지는, 수사에 필요한 접근과 그런 통로가 다른 사람에게도 열릴 수 있다는 우려가 맞서는 물음이고, 이 글은 그 답을 정하지 않습니다.
종단간 암호화에도 남는 부담이 있습니다. 내가 잠그는 데 쓴 자물쇠가 정말 친구의 것이어야 합니다. 공개키를 쓰는 통신은 선로를 엿듣기만 하는 사람에게는 대개 효과적이지만, 주고받는 절차를 잘못 설계하면 남을 사칭하거나 메시지를 바꾸는 적극적인 공격자에게 뚫릴 수 있습니다 (DOI: 10.1109/tit.1983.1056650). 가운데 낀 누군가가 양쪽 모두에게 상대방인 척하는 중간자 공격이 그런 공격입니다.
드나든 기록은 남는다
잠긴 집 안에서 오간 말은 밖에서 들리지 않습니다. 그래도 누가 몇 시에 어느 집 문을 드나들었는지, 얼마나 머물다 갔는지는 출입 기록에 남습니다. 메타데이터는 내용 자체가 아니라 누가 누구와 언제 주고받았는지 같은 내용 둘레의 정보입니다.
메타데이터만으로도 많은 것이 드러납니다. 여러 나라가 전화 통화의 메타데이터를 대량으로 모으고 있고, 통신의 메타데이터가 내용보다 훨씬 약하게 보호받는다는 원칙은 논란이 돼 왔습니다 (PMID 27185922). 전화 통화의 메타데이터는 서로 촘촘히 이어져 있고, 누구의 기록인지 손쉽게 다시 알아낼 수 있으며, 민감한 사실을 추론하는 데 쓰일 수 있습니다. 참여자들에게서 직접 통화 기록을 모은 2016년 연구가 보인 결과입니다 (PMID 27185922). 누가 누구와 언제 통화했는지만 보고도 그 사람에 대해 많은 것을 짐작할 수 있다는 뜻입니다.
그리고 내용을 암호화해도 메타데이터를 숨기기는 쉽지 않습니다. 중앙 없이 사용자끼리 직접 잇는 소셜 네트워크를 다룬 2012년 연구의 지적입니다. 중앙에 서비스 회사가 있는 구조에서는 그 회사가 모든 연락을 중개하며 사용자들끼리는 서로의 메타데이터를 보지 못하게 가려 줍니다. 대신 모든 것이 그 회사 한곳에 모이고, 연구진은 그렇게 모이는 자리를 가장 강력한 공격자로 꼽습니다. 중앙이 없으면 그 공격자는 사라지지만, 사용자들 사이의 가림막도 함께 사라집니다 (DOI: 10.1109/percomw.2012.6197506).
길 위에서도 마찬가지입니다. 암호를 건 연결 위에서도, 통신하며 생기는 메타데이터를 분석해 사용자가 어느 웹사이트에 들어갔는지 알아내는 공격이 연구돼 왔습니다. 사용자를 보호하려고 만든 익명 통신 체계를 겨냥한 연구도 있습니다 (DOI: 10.1145/3576915.3623107). 내용을 한 글자도 읽지 않고, 오간 데이터의 모양만으로 행선지를 짐작하는 것입니다.
메타데이터까지 숨기려는 연구 시스템도 있습니다. 2016년에 나온 한 연구용 시제품은 누가 누구와 연결했는지를 숨기며 대화를 시작하게 했는데, 서버 세 대로 사용자 1,000만 명을 감당하는 실험에서 상대를 불러 연결을 시작하는 데 평균 150초가 걸렸습니다 (DOI: 10.5555/3026877.3026921). 메시지를 주고받는 쪽의 시스템들은 들키지 않으려고 가짜 메시지를 계속 섞어 보내야 해서 부담이 컸습니다. 2018년의 한 시스템은 이 부담을 줄여 사용자 200만 명 규모에서 6.8초의 지연을 냈고, 비교한 앞선 두 시스템보다 5~10배 빨랐습니다 (DOI: 10.5555/3291168.3291221). 둘 다 각 연구진이 제안한 설계를 시제품으로 잰 결과입니다. 메타데이터를 숨기는 길은 있고, 이 시제품들에서는 그 대가로 시간과 부담을 치렀습니다.
메타데이터로 무엇까지 짐작되는지는 이 시리즈의 다른 편 「개인정보와 익명화」가 다룹니다.
잠금 바깥에서 새는 자리
누르는 자판을 몰래 기록하는 프로그램이 있습니다. 이런 프로그램은 대개 사용자가 모르게 돌아갑니다 (DOI: 10.1109/ccict56684.2022.00039). 메시지는 자판으로 치는 동안 평문이고, 잠금은 그 뒤에 걸립니다. 받는 쪽에서도 잠금이 풀린 뒤에야 화면에 뜹니다. 그래서 기기 자체를 엿보는 프로그램 앞에서는 종단간 암호화도 그 기기의 내용을 지키지 못합니다. 사용자 몰래 해를 끼치려고 만든 프로그램이 어떻게 기기에 들어오는지는 이 시리즈의 다른 편 「보안」와 「피싱과 사회공학」가 다룹니다.
두 번째 자리는 암호를 다루는 코드입니다. 암호는 제대로 쓰면 공격자로부터 정보를 지킬 수 있습니다. 그런데도 큰 데이터 유출 소식은 자주 들립니다. 2015년의 한 논문은 그 상당수가 암호 장치를 잘못 쓴 데서 났고, 앱을 만드는 개발자 상당수가 암호 전문가가 아니라는 데 문제가 있다고 짚었습니다 (DOI: 10.1145/2814228.2814229). 잘못 쓰는 방식에는 코드에 드러난 비밀이나 남이 짐작할 수 있는 무작위 값 같은 것이 있습니다 (DOI: 10.1145/3319535.3345659).
잘못 쓰는 일은 흔했습니다. 2013년에 발표된 조사에서, 구글 플레이의 앱 가운데 암호 기능을 쓰는 11,748개를 살폈더니 88%가 실수를 적어도 하나 했습니다 (DOI: 10.1145/2508859.2516693). 실수의 무게는 저마다 다릅니다. 공개된 자바 프로젝트를 살핀 2020년 조사는 살핀 암호 기능의 85%가 잘못 쓰이고 있었지만, 그 잘못이 모두 심각한 결과로 이어지지는 않는다고 적었습니다. 저자들은 이런 잘못을 무작정 개발자 탓으로 돌리면 잘못된 결론에 이를 수 있다고 결론지었습니다 (DOI: 10.1145/3382494.3422166). 출처를 따져 본 2018년 조사에서는, 문제가 있는 안드로이드 앱의 90%에서 그 실수는 앱이 가져다 쓴 외부 코드 묶음에서 왔습니다 (DOI: 10.1145/3196494.3196538).
기기에 든 잠금 장치도 틀릴 수 있습니다. 세 제조사가 2014~2018년에 만든 저장장치가 스스로 거는 암호화를 뜯어보니, 많은 모델에서 비밀번호 같은 비밀을 몰라도 데이터를 전부 되살릴 수 있었습니다. 널리 쓰이는 운영체제에 든 암호화 소프트웨어는 저장장치가 이 기능을 지원한다고 알리면 그 하드웨어 암호화에만 맡겼습니다. 저자들은 이런 사정이 걸친 범위를 시장의 약 60%로 보았습니다. 시장의 60%를 차지하는 제품이 모두 뚫렸다는 뜻은 아닙니다. 그리고 저장장치가 제공하는 하드웨어 암호화에만 기대지 말고 추가 조치를 하라고 결론지었습니다 (DOI: 10.1109/sp.2019.00088).
세 번째 자리는 열쇠가 태어나는 순간입니다. 다음에 무엇이 나올지 누구도 미리 알 수 없는 수, 이것을 난수라고 합니다. 암호 열쇠는 난수로 만듭니다. 그 값을 만드는 과정에 약점이 있으면, 가장 강한 암호도 뚫을 수 있는 정보가 새어 나갈 수 있습니다 (DOI: 10.3390/s20071869). 열쇠의 홈을 남이 짐작할 수 있으면 열쇠도 짐작됩니다. 128비트 열쇠라도 실제로 나올 수 있는 값이 몇 개뿐이라면, 무차별 대입은 그 몇 개만 넣어 보면 끝납니다. 앞에서 본 「남이 짐작할 수 있는 무작위 값」도 같은 계열의 실수입니다.
난수 실패로 생긴 약한 열쇠는 실제로 무더기로 나왔습니다. 2012년, 두 연구팀이 암호를 건 웹 연결을 제공하는 인터넷 서버(HTTPS 호스트)의 0.5%에서, 주인만 갖고 어디로도 보내지 않는 열쇠인 개인키를 계산해 냈습니다. 두 팀은 그 원인을 네트워크 기기들에 널리 퍼진 난수 생성 실패로 추적했습니다. 이 문제는 수십 곳의 제조사에 알려졌고, 그중 몇 곳이 보안 권고를 냈으며, 실패에 한몫한 운영체제의 결함도 고쳐졌습니다. 그런데 4년 뒤인 2016년의 후속 연구는 제목 그대로, 약한 열쇠가 네트워크 기기에 여전히 널리 남아 있다고 보고했습니다 (DOI: 10.1145/2987443.2987486).
암호 자체가 튼튼해도, 잠그기 전과 연 뒤의 기기와 열쇠를 다루는 코드와 열쇠를 만드는 난수가 틀리면 내용은 샙니다.
메시지 한 통이 지나가는 길
이제 처음의 메시지를 종단간 암호화가 걸린 메신저로 다시 보내 보겠습니다. 「오늘 저녁 7시, 회사 앞에서 보자.」

자판으로 치는 동안 이 글은 내 휴대전화 안의 평문입니다. 이 순간을 엿보는 프로그램이 기기에 있다면, 뒤에 올 잠금은 이 글을 지켜 주지 못합니다.
보내기를 누르면 메신저는 내 휴대전화 안에서 글을 잠급니다. 열쇠는 친구 기기와 맞춘 대화 열쇠입니다. 그 열쇠가 남이 짐작할 수 없는 난수로 만들어졌고, 그 열쇠를 다루는 앱의 코드가 바르게 짜였다는 것이 이 잠금의 바탕입니다. 그리고 내가 잠그는 데 쓴 자물쇠가 정말 친구의 것이어야 합니다.
지하철 와이파이와 통신사 망을 지나는 것은 암호문입니다. 여기에 전송 중 암호화가 한 겹 더 걸릴 수 있습니다. 그래도 내 휴대전화가 언제 메신저 서버와 데이터를 얼마나 주고받았는지는 길 위에서 보이는 메타데이터입니다.
서버는 잠긴 글을 받아 친구에게 건넵니다. 그 자물쇠가 정말 친구의 것이라면, 서버는 내용을 읽지 못합니다. 누가 누구에게 언제 보냈는지는 내용이 아니라 메타데이터라서, 종단간 암호화가 잠그는 대상이 아닙니다.
친구의 휴대전화가 열쇠로 글을 복호화하면 화면에 다시 평문이 뜹니다. 휴대전화에 남은 대화는 저장 중 암호화로 다시 잠길 수 있지만, 휴대전화가 켜져 쓰이는 동안에는 열린 내용이 화면에 오갑니다. 그 화면은 휴대전화를 열 수 있는 사람이면 누구나 읽습니다.
이 길에서 암호가 숨긴 것은 글의 내용입니다. 숨기지 못한 것은 보낸 시각과 상대, 그리고 두 화면 위의 평문입니다. 종단간 암호화는 열쇠 없는 사람에게서 내용을 숨기지만, 그것만으로는 누가 누구와 언제 얼마나 주고받았는지와 잠그기 전·연 뒤 기기 속의 내용을 숨기지 않습니다. 제대로 건 강한 암호는 지금 알려진 방법으로는 열쇠 없이 정면으로 열기 어렵고, 이 글이 모은 새는 자리는 모두 그 자물쇠 바깥에 있었습니다. 다만 이 목록은 고른 사례이고, 사고를 세어 본 결과는 아닙니다.
어디를 더 볼까
잠그는 도구와 여는 도구를 가른 공개키 방식, 그리고 상대의 자물쇠가 진짜인지 확인하는 이름표 이야기는 「열쇠와 자물쇠 — 공개키는 왜 공개해도 안전한가」에 있습니다. 그 이름표를 발급하는 곳을 지키는 한 방법은 「주소창의 자물쇠는 무엇을 보증하나 — '믿을 기관'을 고르는 대신, 모든 발급을 공개 장부에 적기로 한 웹」이 다룹니다.
해시가 장부의 봉인으로 쓰이는 모습은 「블록체인이란 무엇인가 — 아무도 관리하지 않는 장부가 성립하는 이유」에 있습니다. 내용을 보이지 않고도 그 내용이 참임을 보이는 장치는 「영지식 증명 — 정보를 공개하지 않고 참임을 증명하는 법」에 있습니다.
암호가 기대는 계산의 값이 싸지는 날은 「양자컴퓨터가 오면 암호는 정말 다 깨지나 — '전부'와 '나중'이라는 두 개의 오해」로 갑니다.
이 시리즈의 다른 편 「개인정보와 익명화」는 메타데이터에서 무엇이 드러나는지를, 「비밀번호와 패스키」는 서버가 비밀번호를 보관하는 법을 다룹니다.
근거 논문
- "A Systematic Review of Encryption and Keylogging for Computer System Security" (2022) — DOI: 10.1109/ccict56684.2022.00039 — 암호화는 비밀번호나 열쇠를 가진 사람만 접근하게 하며, 내용을 지킬 뿐 가로채기·접근 자체는 막지 않는다. 대칭키 표준은 송수신자가 같은 열쇠를 쓴다. 키로거는 누른 자판을 대개 사용자 모르게 기록한다.
- "Advanced Encryption Standard (AES)" (2001, 표준 문서) — DOI: 10.6028/nist.fips.197 — 대칭 블록 암호. 암호화는 데이터를 알아볼 수 없는 암호문으로, 복호화는 원래 꼴인 평문으로. 열쇠 길이 128·192·256비트.
- "Advanced Encryption Standard (AES)" (2009) — DOI: 10.1016/s1353-4858(1070006-4 — 카이사르 암호 같은 옛 방식은 지금 보면 아주 단순해 쉽게 깨진다.
- "Kerckhoffs' principle for intrusion detection" (2008) — DOI: 10.1109/netwks.2008.6231360 — 암호의 기본 원칙: 시스템의 안전은 알고리즘이 아니라 열쇠만 비밀로 지키는 데 달려야 한다(케르크호프스 원칙). 이를 침입 탐지에 적용 제안.
- "Report on the development of the Advanced Encryption Standard (AES)" (2001) — DOI: 10.6028/jres.106.023 — 1997년 NIST가 대칭키 암호 선정 절차 시작, 1998년 후보 15개 접수·연구 공동체에 분석 요청, 최종 후보 5개, Rijndael을 표준안으로.
- "THE ADVANCED ENCRYPTION STANDARD" (2002) — DOI: 10.1080/0161-110291890876 — AES는 국제 경연을 거쳐 NIST가 승인했다.
- "The impact of full disk encryption on digital forensics" (2008) — DOI: 10.1145/1368506.1368519 — 강한 암호는 열쇠나 비밀 문구 없이 우회할 수 없어, 꺼진 뒤에는 자료에 접근 못 할 수 있으므로 조사관은 켜진 상태 수집 여부를 정해야 한다.
- "Encryption in Compute Networks: A Systematic Literature Review …" (2026) — DOI: 10.55041/isjem08542 — 암호화는 전송 중·저장 중 데이터를 지키는 주된 수단. 최근 측정상 웹 트래픽 약 95%가 HTTPS. 지금 수집해 나중에 해독하는 양자 위협 등 과제.
- "CRYLOGGER: Detecting Crypto Misuses Dynamically" (2021) — DOI: 10.1109/sp40001.2021.00010 — 암호 해시는 무결성, 암호화 알고리즘은 기밀성을 보장할 수 있다. 개발자는 고정 열쇠·약한 비밀번호 등으로 오용한다.
- "Copker: Computing with Private Keys without RAM" (2014) — DOI: 10.14722/ndss.2014.23125 — 실제로 암호 열쇠는 메모리에 평문으로 올라가 물리 메모리 공격에 취약하다. CPU 안에서만 계산하는 방식 제안.
- "Lest we remember" (2009) — DOI: 10.1145/1506409.1506429 — 메모리는 전원이 끊겨도 몇 초간 내용을 유지해, 물리 접근 공격자로부터 열쇠를 지키는 데 한계. 디스크 암호화 제품 여럿이 뚫림. 간단한 해결책은 아는 한 없다.
- "On the Practicability of Cold Boot Attacks" (2013) — DOI: 10.1109/ares.2013.52 — 원 연구를 독립 재현해 DDR1·DDR2에서는 대체로 일치했지만 최신 DDR3 칩에서는 재현하지 못했다(17개 시스템 중 5개가 DDR3).
- "Lest we forget: Cold-boot attacks on scrambled DDR3 memory" (2016) — DOI: 10.1016/j.diin.2016.01.009 — 인텔 메모리 뒤섞기(스크램블)를 푸는 공격으로 콜드부트를 다시 가능하게 했다.
- "Cold Boot Attacks are Still Hot" (2017) — DOI: 10.1109/hpca.2017.10 — DDR4의 강화된 스크램블러도 콜드부트를 충분히 막지 못해 디스크 암호화 열쇠를 꺼낼 수 있었다. 강한 전체 메모리 암호화가 필요.
- "Secure database-as-a-service with Cipherbase" (2013) — DOI: 10.1145/2463676.2467797 — 루트 권한의 클라우드 관리자는 서버 메모리·디스크를 원격으로 볼 수 있다. 암호화가 기밀성의 기본 장치이고, 관리자도 평문을 못 보게 하는 신뢰 하드웨어 통합 DB 시연.
- "Practical techniques for searches on encrypted data" (2002) — DOI: 10.1109/secpri.2000.848445 — 서버에 데이터를 암호화해 두면 대개 기능(검색)을 희생한다. 서버가 평문을 모른 채 검색하는 증명 가능한 기법 제안.
- "A Formal Security Analysis of the Signal Messaging Protocol" (2017) — DOI: 10.1109/eurosp.2017.27 — 종단간 암호화 메신저 규약. 메시지마다 세션 키를 갱신(래칫)해 미래 비밀성·침해 후 보안을 노림. 활성 사용자 10억 명 이상인 두 곳 포함 여러 곳이 채택. 첫 학술 분석으로 핵심을 증명했고 설계에서 큰 결함을 찾지 못했다.
- "Analysis of the Effectiveness of End-to-End Encryption in Chatting Applications on User Data Security: A Systematic Literature Review" (2025) — DOI: 10.69933/0j09nj29 — 종단간 암호화는 메시지 기밀성·데이터 탈취 방지·무결성에 크게 기여하며, 성능 부담 같은 기술적 과제가 있다.
- "A Systematic Literature Review of Secure Instant Messaging Applications from a Digital Forensics Perspective" (2025) — DOI: 10.1145/3727641 — 종단간 암호화의 확산으로 포렌식 분석이 어려워졌고, 조사관은 앱이 만드는 아티팩트에 기댄다.
- "On the security of public key protocols" (1983) — DOI: 10.1109/tit.1983.1056650 — 공개키 체계는 수동적 도청자에 대개 효과적이지만, 잘못 설계한 프로토콜은 사칭·변조하는 능동 공격자에 취약할 수 있다.
- "The devil is in the metadata — New privacy challenges in Decentralised Online Social Networks" (2012) — DOI: 10.1109/percomw.2012.6197506 — 내용을 암호화해도 메타데이터를 숨기기는 쉽지 않다. 중앙 시스템에서는 운영자가 메타데이터를 가려 주는데 탈중앙화는 그 보호를 없앤다. 메타데이터 추론은 사생활을 침해할 수 있다.
- "Transformer-based Model for Multi-tab Website Fingerprinting Attack" (2023) — DOI: 10.1145/3576915.3623107 — 익명 통신 체계 위에서도 암호화 연결의 메타데이터를 분석해 방문 웹사이트를 식별할 수 있다. 다중 탭 공격 모형 제안.
- "Alpenhorn: bootstrapping secure communication without leaking metadata" (2016) — DOI: 10.5555/3026877.3026921 — 메타데이터(누가 누구와 연결했나)를 숨기며 암호화 연결을 시작하는 시스템. 시제품: 서버 3대, 사용자 1,000만 명, 평균 연결 지연 150초.
- "Karaoke: distributed private messaging immune to passive traffic analysis" (2018) — DOI: 10.5555/3291168.3291221 — 메타데이터 비밀 통신. 앞선 시스템은 잡음 메시지를 계속 더해야 해 부담이 컸고, 이를 줄여 200만 명에서 지연 6.8초.
- "Towards secure integration of cryptographic software" (2015) — DOI: 10.1145/2814228.2814229 — 암호는 증명 가능하게 정보를 지킬 수 있지만 큰 유출 상당수가 잘못된 사용에서 나온다. 개발자 다수는 암호 전문가가 아니다.
- "CryptoGuard" (2019) — DOI: 10.1145/3319535.3345659 — 드러난 비밀·예측 가능한 난수·취약한 인증서 검증 같은 암호 API 오용이 소프트웨어 보안을 위협한다. 오탐을 줄인 탐지 도구.
- "An empirical study of cryptographic misuse in android applications" (2013) — DOI: 10.1145/2508859.2516693 — 암호 API를 쓰는 구글 플레이 앱 11,748개 중 10,327개(88%)가 실수를 적어도 하나.
- "Java Cryptography Uses in the Wild" (2020) — DOI: 10.1145/3382494.3422166 — 암호 API의 85%가 오용되지만 모든 오용이 심각한 결과를 낳지는 않는다. 개발자를 무작정 탓하면 잘못된 결론에 이를 수 있다.
- "Source Attribution of Cryptographic API Misuse in Android Applications" (2018) — DOI: 10.1145/3196494.3196538 — 13만 2천 개 앱 분석. 위반 앱의 90%에서 오용이 제3자 라이브러리에서 비롯.
- "Self-Encrypting Deception: Weaknesses in the Encryption of Solid State Drives" (2019) — DOI: 10.1109/sp.2019.00088 — 세 제조사의 2014~2018년 SSD 하드웨어 암호화에서 비밀 없이 데이터를 전부 복구할 수 있는 약점. 운영체제 암호화가 하드웨어 암호화에만 맡김. 시장 약 60%. 하드웨어 암호화에만 기대지 말고 추가 조치를.
- "Evaluating the privacy properties of telephone metadata." (2016) — PMID 27185922 — 크라우드소싱으로 모은 전화 메타데이터는 촘촘히 연결돼 있고, 손쉽게 재식별되며, 민감한 추론에 쓰일 수 있다.
- "Weak Keys Remain Widespread in Network Devices" (2016) — DOI: 10.1145/2987443.2987486 — 2012년 두 연구팀이 인터넷 HTTPS 호스트의 0.5%에서 RSA 개인키를 계산해 냈고, 원인을 네트워크 기기의 광범위한 난수 생성 실패로 추적. 수십 제조사 통보, 일부 보안 권고, 리눅스 커널 부팅 시 엔트로피 결함 패치. 결론은 제목 그대로 「약한 키가 네트워크 기기에 여전히 널리 남아 있다」(초록은 배경 세 문장뿐).
- "Cryptographically Secure Pseudo-Random Number Generator IP-Core Based on SHA2 Algorithm" (2020) — DOI: 10.3390/s20071869 — 난수는 암호 열쇠 생성에 쓰이며, 키 생성 과정의 약점은 가장 강한 암호도 뚫을 정보를 흘릴 수 있다. 하드웨어 생성기 설계.