궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

라이트닝 어니언 라우팅에서 각 노드가 아는 정보

BOLT4 Sphinx packet이 홉별 shared secret과 HMAC으로 next hop payload만 공개하는 범위와 traffic analysis 한계를 설명합니다.

난이도 중급주제 카테고리와 개념 밀도 기준검토 정보AI 보조 초안 · 출처 목록 제공 · 주장별 대조 진행 중
중계 지점을 지날 때마다 암호 봉투의 양파 껍질이 한 겹씩 벗겨지는 어니언 라우팅 그림
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

Sender는 전체 route를 알고 각 hop은 인접 peer와 자기 전달 지시만 봅니다.
Ephemeral key는 hop마다 blinding되어 같은 route packet 연결을 어렵게 합니다.
금액·시간·network metadata는 상관 분석 위험으로 남습니다.

BOLT4 payment onion은 sender가 전체 route의 node public keys로 hop별 shared secrets를 만들고 역순으로 payload layers와 HMACs를 구성합니다. 각 중간 node는 자기 layer를 복호화해 outgoing channel 또는 next node, 전달 amount, outgoing CLTV 같은 정보와 바로 이전·다음 peer를 알지만 다른 hops, 전체 route 길이와 자신의 정확한 위치는 packet 자체에서 알 수 없습니다. 다만 timing·amount·channel 관측을 결합한 traffic analysis까지 막는 완전 익명성은 아닙니다.

Sender가 Sphinx packet을 역순으로 만듭니다

Origin node는 n1부터 final node까지 public keys와 random 32-byte sessionkey를 사용해 ECDH shared secret을 계산합니다. 각 secret에서 rho·mu 등 용도별 keys를 만들고 last hop부터 payload를 넣어 layers를 감쌉니다. BOLT4 version 0 packet은 1366바이트 고정 크기입니다.

Associated data로 payment_hash를 HMAC에 결합해 onion을 다른 HTLC에 옮겨 붙이는 것을 막습니다. Hop payload 길이는 BigSize와 TLV로 표현되며 malformed encoding이나 unknown even type은 protocol 규칙대로 실패합니다. Parser가 길이를 신뢰해 buffer를 넘지 않게 해야 합니다.

Onion routing은 각 중간 노드에게 전체 지도를 주지 않고, 다음 교차로까지의 봉인된 지시만 한 겹씩 전달합니다.

JOBCOIN 해설

VISUAL GUIDE체인 사이의 검증 과정
출발 체인의 기록과 메시지 검증, 도착 체인의 기록을 연결한 개념도
그림과 함께 짚어볼 본문 내용

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.

  1. Sender가 Sphinx packet을 역순으로 만듭니다

    Origin node는 n1부터 final node까지 public keys와 random 32-byte sessionkey를 사용해 ECDH shared secret을 계산합니다.

  2. 각 hop은 무엇을 알고 무엇을 모르는지 구분합니다

    Node는 network connection으로 predecessor를 알고 decrypted payload에서 next hop과 outgoing amount·CLTV를 얻습니다.

  3. Ephemeral key blinding이 packet 연결을 줄입니다

    첫 hop은 sender의 long-term node key 대신 ephemeral public key를 봅니다.

AI로 제작한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.

각 hop은 무엇을 알고 무엇을 모르는지 구분합니다

Node는 network connection으로 predecessor를 알고 decrypted payload에서 next hop과 outgoing amount·CLTV를 얻습니다. Incoming HTLC amount·expiry와 비교해 fee·delta 조건을 검사합니다. Final hop은 자신이 recipient라는 payload와 payment secret·total amount 등을 확인할 수 있습니다.

BOLT4는 중간 node가 route의 다른 nodes, 전체 길이, 자기 위치를 packet에서 알 수 없다고 설명합니다. 그러나 직접 연결된 sender 또는 recipient를 인접 peer로 볼 수 있고 public channel graph·금액 차이를 이용한 추정도 가능합니다. ‘중간 노드는 아무 정보도 모른다’는 표현은 부정확합니다.

주체별 관찰 정보
주체 아는 정보 기본적으로 모르는 정보
Sender 전체 선택 route·amounts 실제 channel liquidity
중간 hop 이전·다음 peer·자기 payload 전체 길이·다른 hops
Final node 수신 payload·preimage 원 sender의 network identity
Network observer timing·connections·sizes 암호화 payload 내용
공모 hops 각자 관찰 합집합 비공모 구간의 확정 경로

Ephemeral key blinding이 packet 연결을 줄입니다

첫 hop은 sender의 long-term node key 대신 ephemeral public key를 봅니다. 각 hop 처리 뒤 ephemeral key는 shared secret에서 만든 blinding factor로 바뀌므로 next hop이 받은 packet과 이전 packet을 동일 key로 직접 연결하기 어렵습니다. Payload bytes도 stream cipher로 한 겹 벗기고 filler가 길이 단서를 줄입니다.

Integrity HMAC이 맞지 않으면 node는 packet을 forward하지 않습니다. 같은 onion을 재사용하거나 sessionkey randomness가 약하면 unlinkability가 깨질 수 있습니다. Payment retry는 새 route·sessionkey를 만들고 nonce·random source failure를 fatal하게 다룹니다.

  • Fresh sessionkey를 CSPRNG로 생성합니다.
  • Route 역순으로 shared secrets를 계산합니다.
  • Hop TLV와 next HMAC을 layer에 넣습니다.
  • Payment hash를 associated data로 결합합니다.
  • Retry마다 새 onion과 route privacy를 평가합니다.

오류도 역방향 암호화됩니다

Forwarding node가 실패하면 shared secret으로 failure message를 감싸 upstream에 보냅니다. 각 이전 hop이 layer를 추가하고 sender가 secrets로 차례로 복호화해 originating failure를 찾습니다. Sender는 failure code에 따라 channel update를 적용하거나 route를 재계산합니다.

Error timing과 반복 route probes는 node 위치를 추정하는 단서가 될 수 있습니다. BOLT4의 일정한 dummy decryption cycles 같은 대책이 timing 차이를 줄입니다. 구현이 상세 내부 오류를 plaintext log·API로 그대로 노출해 remote fingerprint를 만들지 않게 합니다.

Route blinding과 trampoline은 더 많은 routing 정보를 알게 될 수 있습니다

Sphinx payment onion만으로 recipient가 public invoice에 자신의 node id와 route hints를 공개하는 문제를 모두 해결하지는 않습니다. Route blinding은 recipient가 introduction point 이후 경로를 암호화해 sender에게도 숨기는 기법입니다. Feature support와 probing 방어 조건을 따로 확인합니다.

Trampoline routing은 경량 sender가 전체 pathfinding 일부를 trampoline node에 위임하는 제안·구현 계열입니다. 위임 node는 더 많은 routing 정보를 알게 될 수 있습니다. 기본 BOLT4의 ‘sender가 전체 route를 구성’하는 모델과 동일하게 설명하지 않고 사용 wallet·peer의 실제 feature를 확인합니다.

자주 묻는 질문

중간 노드는 sender와 recipient를 전혀 모르나요?

전체 경로는 모르지만 바로 이전·다음 peer를 알고, 첫·마지막 인접 node라면 역할을 추정할 수 있습니다.

모든 payment onion 크기는 같은가요?

BOLT4 version 0 routing packet은 고정 1366바이트이며 TLV payload와 filler로 구성됩니다.

Onion routing이면 timing 분석도 불가능한가요?

아닙니다. Timing·amount·channel metadata를 결합한 traffic analysis 위험이 남습니다.

더 깊이 읽기

본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.

참고한 원문 자료

자료 확인 기준일 2026.09.27
  1. BOLT 4: Onion Routing Protocolgithub.com
  2. BOLT 8: Encrypted and Authenticated Transportgithub.com
자료 대조 기록과 확인 범위
출처 수집
원문 링크 2개 제공
핵심 주장 대조
완료 근거가 아직 기록되지 않았습니다.
분야 전문가 검수
별도 완료 기록이 없습니다.

원문 링크와 자료 확인일은 글 전체의 주장 대조나 전문가 검수 완료를 뜻하지 않습니다. 별도 확인이 필요한 절차는 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

AI 활용 안내

이 글은 초안 구성과 자료 정리에 AI를 활용했습니다. 글에 표시된 출처와 기준일을 함께 확인해 주세요. 별도 검토 정보가 없다면 전문가 검수를 뜻하지 않습니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙 보기 →이 기사 정정 제보 →