SPACE LOGBOOK

OCEAN LOGBOOK

Secure Shell의 이해…

2026.06.23

Secure Shell의 이해…

2026.06.23

SSH란 무엇인가

Secure Shell · 암호화된 원격 접속의 원리를 부절(符節)로 이해하다 네트워크 보안 암호화

원격 서버에 접속할 때 우리는 흔히 SSH를 사용한다. Secure Shell, 즉 “안전한 껍데기”라는 뜻인데 — 이 간단해 보이는 도구 안에는 수학적으로 정교한 암호화 체계가 숨어 있다. 이 글은 그 원리를 부절(符節)이라는 고전적 개념에 빗대어 직관적으로 풀어낸다.


암호화의 두 가지 방식

대칭 암호화 — 같은 열쇠

가장 단순한 방식이다. 잠글 때 쓴 열쇠와 열 때 쓴 열쇠가 동일하다. 금고 열쇠를 둘이 나눠 갖는 셈인데, 문제는 처음 그 열쇠를 어떻게 안전하게 전달하느냐다. 전달 과정에서 해커에게 탈취되면 모든 암호화가 무너진다.

👤 송신자 👤 수신자 🔑 열쇠 X 데이터 전송 🔑 열쇠 X ⚠ 같은 열쇠를 어떻게 안전하게 전달하지?

비대칭 암호화 — 다른 열쇠

비대칭(Asymmetric)이라는 이름은 여기서 나온다. 암호화하는 키와 복호화하는 키가 서로 다르다. 잠그는 자물쇠(Public Key)와 여는 열쇠(Private Key)가 별개인 방식이다.

핵심 원칙  →  받는 사람의 Public Key로 암호화  /  받는 사람이 자신의 Private Key로 복호화
👤 송신자 🔒 수신자 Public Key (암호화) 전송 🗝️ 수신자 Private Key (복호화) 👤 수신자 ✓ Public Key는 탈취돼도 OK — Private Key 없이는 열 수 없음 ✓ 잠그는 자물쇠(Public)와 여는 열쇠(Private)는 처음부터 다른 것

부절(符節) — 수천 년 전의 암호화

“계약서를 도장 찍고 반을 찢어 나눠가진 후, 나중에 만나서 맞춰보고 딱 들어맞으면 — 아, 맞구나.”

부절(符節)은 고대 동아시아에서 사용하던 신분증이자 계약 증표다. 나무패·옥·금속 등에 글자나 문양을 새기고 정확히 반으로 갈라 각자 한 쪽씩 보관했다가, 나중에 맞춰봄으로써 신원과 계약을 확인했다. 단순하지만 위조가 사실상 불가능했다 — 천연 소재의 결과 문양이 완벽히 일치해야 하기 때문이다.

부절의 역사 — 그리고 한 편의 도둑 이야기

부절의 기록은 주(周)나라(기원전 11세기경)부터 등장한다. 처음에는 대나무나 나무를 반으로 쪼개 사용했지만(木符), 이후 옥·청동·금으로도 제작됐다. 군사 지휘권 위임, 외교 사신 신원 확인, 창고 수령 권한 증명까지 — 고대의 “공인인증서”였다.

그 중 가장 유명한 것이 호부(虎符)다. 호랑이 모양 청동패를 반으로 나눠 황제가 한 쪽, 장군이 한 쪽을 가졌다. 전쟁을 일으키려면 이 두 조각이 반드시 맞아야 했다. 한 쪽만으론 군대를 단 한 명도 움직일 수 없었다.

“황제의 명령이오!” 아무리 외쳐도, 호부가 맞지 않으면 아무도 움직이지 않았다.

그런데 기원전 257년, 재미있는 사건이 하나 터진다. 조나라가 진나라 대군에 포위돼 풍전등화가 됐고, 위나라 공자 신릉군(信陵君)은 조나라를 구하고 싶었다. 문제는 위나라 왕이 출병을 거부했다는 것.

고민 끝에 신릉군은 왕의 총애를 받는 여희(如姬)를 설득, 왕의 침실에 보관된 호부를 몰래 훔쳐낸다. 도둑질한 호부를 들고 장수 앞에 나타나자 — 군대가 즉시 움직였다. 호부가 맞았으니까. 군대 입장에선 왕의 명령과 구별이 불가능했다.

이 일화에서 “병부를 훔쳐 군대를 움직였다(竊符救趙-병부절구)”는 고사성어가 탄생했다. 그리고 이 이야기는 부절 시스템의 강점과 약점을 동시에 보여준다 — 물리적 실물이 곧 권한이기에, 실물을 빼앗기면 권한도 빼앗긴다. 현대의 SSH Private Key를 절대 유출하면 안 되는 이유가 바로 여기서 나온다. 우리나라에서도 조선시대 암행어사의 마패(馬牌)가 같은 원리를 이었다.

[ 원본 부절 — 처음에는 하나의 패 ] 符 節 ✂ 절단 반으로 갈라 각자 보관 符 節 ← 맞춤 → 🔐 Private Key 내가 보관 — 절대 공개 금지 🔓 Public Key 상대에게 줌 — 자유롭게 공개 맞춰보면 딱 들어맞음 → Public Key + Private Key = 수학적 부절 한 쌍
부절 디지털 서명 (비대칭 암호화)
찢기 전 원본 패턴 키 쌍 생성 시 수학적 기반
내가 보관하는 반쪽 Private Key (절대 공개 금지)
상대에게 주는 반쪽 Public Key (자유롭게 공개)
맞춰보기 서명 검증
딱 들어맞음 인증 성공
반쪽만 봐서는 원본 복원 불가 Public Key로 Private Key 역추론 불가

왜 처음부터 키가 두 개인가

SSH를 처음 접하면 자연스럽게 드는 의문이 있다.

“왜 키를 만들 때 처음부터 두 개가 나오지? 하나씩 따로 만들면 안 되나?”

이 의문이 풀리는 순간이 바로 부절을 떠올렸을 때다.

부절을 만드는 방식

먼저 하나의 완전한 패를 만든다 → 그 패를 갈라 두 조각으로 나눈다.

두 조각을 따로 만들면 절대 맞지 않는다. 갈라지기 전 하나의 원본에서 비롯됐을 때만 비로소 딱 들어맞는다.

SSH 키 생성도 정확히 이와 같다. ssh-keygen 명령을 실행하는 순간, 컴퓨터는 RSA·ECDSA 같은 수학적 알고리즘으로 두 개의 키를 한 쌍으로 동시에 만들어낸다. 따로 만든 후 연결하는 것이 아니다 — 처음부터 서로만 통하도록 수학적으로 묶인 관계로 탄생하는 것이다.

수학 알고리즘 RSA / ECDSA / Ed25519 동시 생성 🔐 Private Key 🔓 Public Key ← 수학적으로 묶인 한 쌍 →

그리고 이 두 키 사이에는 중요한 단방향 관계가 있다.

방향 가능 여부 이유
Private Key → Public Key 유도 ✓ 가능 수학적으로 도출할 수 있음
Public Key → Private Key 역추론 ✗ 불가 천문학적 계산 시간 필요 (현실적으로 불가능)
핵심: Public Key(공개 반쪽)를 아무리 분석해도 Private Key(비밀 반쪽)는 알아낼 수 없다. 부절에서 한 반쪽만 봐서는 나머지의 정확한 결을 복원할 수 없는 것과 같다.

SSH 키 쌍의 구조

SSH 연결을 처음 설정할 때, 클라이언트와 서버는 각각 독립적으로 키 쌍을 생성한다. 한 쌍은 서로 교환하지 않는다 — 오직 Public Key만 상대에게 전달한다.

클라이언트 (내 PC) 🔓 Public 상대에게 줌 🔐 Private 절대 보관 예) id_rsa / id_rsa.pub 또는 saesoltax.pem 서버 (AWS Lightsail 등) 🔓 Public 상대에게 줌 🔐 Private 절대 보관 ~/.ssh/authorized_keys (클라이언트 Public Key 등록) ↔ Public Key만 서로 교환 (Private Key는 절대 이동 안 함)

SSH 접속 전체 흐름

실제 SSH 접속은 아래 4단계로 이루어진다. 비대칭 키는 주로 신원 확인에 집중되고, 실제 데이터 전송은 그보다 빠른 대칭키(세션키)가 담당한다.

클라이언트 서버 ① DH 키 교환 공유 대칭키(세션키) 협상 ① DH 키 교환 응답 → 양쪽 모두 세션키 보유 ② 서버 신원 증명 서버 Private Key로 서명 후 전송 → Host Key ② 서버 검증 서버 Public Key로 서명 확인 “이 서버 진짜 맞아?” ③ 클라이언트 신원 증명 내 Private Key로 서명 후 전송 ← saesoltax.pem 이 여기! ③ 클라이언트 검증 등록된 Public Key로 서명 확인 “이 사람 진짜 맞아?” → 접속 허용 ④ 대칭키(세션키)로 본격 데이터 통신 비대칭키보다 빠른 대칭 암호화 사용 — 이후 모든 전송이 이 키로 암호화됨

잠깐 — “맞춰본다”는 게 구체적으로 어떻게 일어나나?

여기서 자연스럽게 드는 의문이 있다. 부절은 두 조각을 물리적으로 갖다 대면 맞는지 바로 보인다. 그런데 SSH에서는 대체 어떻게 “맞춰보는” 걸까? 설마 서버가 내 Private Key를 직접 들여다보는 건 아닐 텐데.

정답은 간단하다. 서버가 퀴즈를 낸다. 보안 용어로는 챌린지-리스폰스(Challenge-Response)라고 하는데, 마치 경비원이 “암호 대봐”라고 하는 것과 비슷하다.

1
서버가 임의의 암호문을 만들어 던진다
“이걸 암호화해서 보내봐: x7k2m9q...“
→ 매번 다른 문자열 (재사용·도청 방지)
2
클라이언트가 Private Key로 서명해 돌려보낸다
“내 Private Key로 사인했어: ∂ƒ©˙∆≈ç...“
→ Private Key 없이는 이 서명을 절대 만들 수 없음
3
서버가 저장된 Public Key로 검증한다
“내가 가진 Public Key로 맞춰보니 딱 맞네 → 입장!”
→ Private Key는 단 한 번도 서버로 전송되지 않음
핵심은 이것: 서버는 Private Key를 직접 보는 게 아니다. Private Key로만 만들 수 있는 서명을 받아 검증할 뿐이다. 황제가 호부를 가진 장군을 직접 만나지 않아도, “두 조각이 맞았다”는 결과만으로 진위를 판단하는 것과 똑같다.

그래서 이런 비유도 성립한다. 신릉군이 호부를 훔쳐 군대를 움직였듯 — 누군가 나의 Private Key를 탈취한다면, 서버는 그 사람을 나로 믿어버린다. .pem 파일을 목숨처럼 지켜야 하는 이유가 바로 이것이다.


핵심 정리

1
비대칭(Asymmetric)의 의미 — 암호화 키 ≠ 복호화 키. Public Key로 잠그면 오직 Private Key로만 열 수 있다.
2
부절과 같은 원리 — Public Key와 Private Key는 처음 만들 때부터 수학적으로 묶인 한 쌍. 한 쪽만 봐서는 나머지를 복원할 수 없다.
3
Private Key의 역할 — “내가 나임을 증명”하는 도장. 서명을 생성하거나, 나에게 온 암호화 데이터를 복호화하는 데 사용.
4
SSH의 영리한 설계 — 비대칭키는 신원 확인에 집중, 실제 데이터는 더 빠른 대칭키(세션키)로 암호화. 보안과 속도를 동시에.
결론: SSH의 .pem 키 파일은 바로 나의 Private Key — 부절에서 내가 간직하는 반쪽이다. 서버에 등록된 Public Key와 수학적으로 딱 들어맞을 때만 문이 열린다.

고대 부절에서 현대 SSH로

어쩌면 현대의 SSH 키는 고대의 부절을 수학 언어로 번역한 것일지도 모른다.

수천 년 전 선조들이 맞닥뜨린 문제는 단순했다.

“어떻게 하면 상대가 진짜 그 사람임을 증명할 수 있을까?”

그들이 찾아낸 해답이 부절이었다. 하나의 원본에서 쪼개진 것이니 위조는 불가능하고, 맞춰보는 것만으로 신원이 확인된다. 군사 명령의 정당성, 외교 사신의 신원, 상업 계약의 이행 — 이 모두를 부절 하나로 해결했다.

2천 년이 지난 지금, 같은 문제가 디지털 세계에서 반복된다.

“저 서버가 진짜 내가 접속해야 할 서버인가? 저 클라이언트가 진짜 허가된 사용자인가?”

현대의 해답도 본질은 같다. 수학적 알고리즘으로 만든 한 쌍의 키 — 위조가 천문학적으로 불가능하고, 검증은 즉각적이다. 다만 딱 한 가지, 결정적으로 다른 점이 있다.

물리적 일치 vs 수학적 일치

🪧 부절 (호부)💻 SSH 키
맞춰보는 방식 두 조각을 물리적으로 갖다 댄다 수학적 서명을 계산해 검증한다
위조가 어려운 이유 천연 소재의 결을 재현할 수 없음 소인수분해를 역산할 수 없음
탈취당하면 실물이 곧 권한 — 끝 Private Key가 곧 권한 — 끝
원격 검증 불가능 (직접 만나야 함) 가능 (인터넷 너머로도)

호부는 장군이 황제를 직접 만나야 검증이 됐다. SSH는 지구 반대편 서버와도 0.1초 만에 검증이 끝난다. 2천 년 만에 생긴 가장 큰 업그레이드는 아이러니하게도 “안 만나도 된다”는 것이다.

매체가 나무패에서 숫자로 바뀌었을 뿐, “나만 가진 것”으로 “나임을 증명한다”는 철학은 그대로다.

SSH 키를 처음 생성하며 “왜 두 개가 나오지?” 하고 고개를 갸웃거렸던 그 순간 — 그것은 사실 기원전 11세기 주나라의 장인이 청동패를 가르며 품었던 고민과 정확히 같은 질문이었다.

🪧  ↔  💻
부절 (符節)
기원전 11세기 주(周)나라~
나무결이 맞아야 증명된다
천연 소재 → 위조 불가
≡
SSH 비대칭 키
1995년~현재
수학이 맞아야 증명된다
소인수분해 → 역산 불가
인류는 수천 년째 같은 방법으로 신뢰를 증명하고 있다
형태는 달라도, 철학은 하나 — 나만 가진 것으로 나임을 증명한다

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 기록은 여기까지지만,
생각은 아직 이동 중이다