SSH를 이해하게 된 날의 대화
부절(符節)로 이해한 날
SSH · VPN · HTTPS · SSL — 어느 날 오후의 대화가 전부 연결된 순간 회고 SSH 보안
솔직히 말하면, 나는 SSH를 오래 써왔지만 제대로 이해한 적이 없었다.
서버에 접속할 때 ssh -i xxxxxxxx.pem ubuntu@서버주소 를 치고,
GitHub에 Deploy Key를 등록하고, 잘 됐으면 넘어가고 — 그게 전부였다.
무언가 물어보면 “비대칭 암호화 기반의 보안 프로토콜”이라는 말을 앵무새처럼 읊을 수 있었지만
정작 왜 키가 두 개인지는 한 번도 제대로 생각해본 적이 없었다.
그러다 어느 날 오후, AI와 나눈 대화가 예상치 못하게 깨달음을 얻는 계기가 되었다.
첫 번째 물음 — 프라이빗 키는 언제 쓰는 거야?
시작은 SSH 관련 설명 글 하나를 읽다가 생긴 의문이었다. 비대칭 암호화에서 퍼블릭 키와 프라이빗 키를 각자 가지고 서로 교환한다는 설명이었는데 — 그럼 프라이빗 키는 도대체 어디서 쓰이는 건지가 영 헷갈렸다.
그 설명을 듣고 나서 뭔가 아련하게 떠오르는 게 있었다.
그 순간 — “계약서를 찢어 나눠가진 것 같잖아”
옛날 사극에서 봤던 장면이었다. 계약을 맺을 때 문서에 도장을 찍고 반을 찢어 각자 보관했다가, 나중에 맞춰보고 진짜임을 확인하는 장면. 그게 퍼블릭 키와 프라이빗 키의 관계와 너무 닮아 보였다.
부절(符節). 그 단어를 듣는 순간 뭔가 딱 맞아 떨어지는 느낌이 있었다. 추상적으로만 떠돌던 개념이 갑자기 손에 잡히는 물건처럼 느껴졌달까.
신릉군의 도둑질 — SSH 키를 절대 빼앗기면 안 되는 이유
부절 이야기를 하다 보니 자연스럽게 역사 이야기로 흘러갔다. 그 중 기원전 257년에 있었던 한 사건이 특히 인상적이었다.
전국시대, 조나라가 진나라 대군에 포위돼 멸망 직전이었다. 위나라 공자 신릉군(信陵君)은 조나라를 구하고 싶었지만 위나라 왕은 출병을 거부했다. 신릉군은 결국 왕의 총애를 받는 여희(如姬)를 설득해 왕의 침실에 보관된 호부(虎符)를 몰래 훔쳐냈다. 도둑질한 호부를 들고 장수 앞에 나타나자 — 군대가 즉시 움직였다. 호부가 맞았으니까.
이 이야기를 듣는 순간 소름이 돋았다.
신릉군이 호부를 훔쳐 군대를 움직인 것처럼 —
누군가 나의 Private Key를 탈취한다면, 서버는 그 사람을 나로 믿어버린다.
2천 년 전 이야기가 오늘 내 xxxxxxxxx.pem 파일 이야기였다.
서버가 퀴즈를 낸다 — Challenge-Response의 정체
그런데 여기서 또 궁금증이 생겼다. 부절은 두 조각을 물리적으로 갖다 대면 맞는지 바로 보인다. SSH에서는 대체 어떻게 “맞춰보는” 걸까? 설마 서버가 내 Private Key를 직접 들여다보는 건 아닐 텐데.
그제서야 완전히 이해됐다. 서버는 Private Key를 보는 게 아니라, Private Key로만 만들 수 있는 서명을 받아 검증하는 것이다. 황제가 호부를 직접 들고 오지 않아도, “두 조각이 맞았다”는 결과만으로 진위를 판단하는 것처럼.
연쇄 반응 — VPN도, HTTPS도, SSL도 전부 부절이었다
SSH를 부절로 이해하고 나니 신기한 일이 일어났다. 대화가 이어질수록 완전히 다른 개념처럼 보였던 것들이 전부 같은 원리로 보이기 시작한 것이다.
인터넷이라는 뻥 뚫린 광장에 출입통제문 하나를 세우는 것.
.ovpn 파일 안에 인증서(부절)가 들어있고,
커넥트 버튼을 누르는 순간 그 부절을 자동으로 제시해 터널이 열린다.
처음 보는 가게 주인이 정부 발급 사업자등록증을 보여주는 것. CA(인증기관)가 “이 사이트 진짜 맞음”을 공증한 인증서가 바로 자물쇠 🔒 표시다. 우리는 OS 설치 때부터 그 정부(CA)를 이미 신뢰하고 있었다.
CA가 도장을 찍어준 공증된 부절. 🔒 있으면 “공증된 부절 확인됨”, ⚠️ 있으면 “공증 없음 — 경계 요망”. 단, 가짜 사이트도 SSL을 받을 수 있으니 도메인 주소도 반드시 확인.
결국 이렇게 쌓인 구조였다:
광장(인터넷)
↓
출입통제문(VPN) ← .ovpn 부절
↓
건물 내부(내부망)
↓
각 방문(SSH) ← .pem 부절
↓
방 안의 금고(HTTPS) ← SSL 인증서 부절
물리적 일치 vs 수학적 일치
SSH와 부절이 개념적으로 같다고 했지만 — 딱 한 가지 결정적으로 다른 점이 있다.
→ 검증하려면 직접 만나야 한다
SSH 키 = 수학적 서명을 계산해서 검증
→ 지구 반대편 서버와도 0.1초 만에 검증 끝
호부는 황제와 장군이 같은 자리에 있어야 맞춰볼 수 있었다. 신릉군이 구태여 호부를 훔쳐야 했던 이유도 그 때문이다. 2천 년 만에 생긴 가장 큰 업그레이드는 아이러니하게도 “안 만나도 된다”는 것이었다.
그래서 결국 — 인터넷 전체가 부절 위에 서 있다
대화가 끝날 무렵 이런 생각이 들었다.
기원전 11세기 주나라의 장인이 청동패를 반으로 가르며 고민했던 문제 — “어떻게 하면 상대가 진짜 그 사람임을 증명할 수 있을까?”
그리고 1977년 MIT의 수학자 셋이 RSA 알고리즘을 발명하며 풀었던 문제.
그리고 1995년 SSH 프로토콜이 만들어진 이유.
그리고 지금 내가 ssh -i xxxxxxxxx.pem ubuntu@서버주소를 치는 이유.
전부 같은 질문에 대한 같은 답이었다. 나만 가진 것으로 나임을 증명한다.
형태는 청동에서 숫자로 바뀌었을 뿐 — 철학은 하나
SSH 키를 처음 생성하며 “왜 두 개가 나오지?” 하고 고개를 갸웃거렸던 그 순간. 그것은 사실 기원전 11세기 주나라의 장인이 청동패를 가르며 품었던 고민과 정확히 같은 질문이었다.
— 어느 날 오후, AI와의 대화 후 정리한 메모