본문 바로가기
99. In Progress/Written but not Smitten

ROS 패킷분석 (DDS/RTPS 기반 트래픽, 암호화 전후 + 3웨이 핸드셰이크) - 미완성

by Never Settle Down 2025. 1. 9.
반응형

 

Sabrina Carpenter - bet u wanna

 

You been wasting time
On the other side
If your satisfied
Touché
But the lights are off
Your so-called friends are gone
Oh, I know what you're 'bout to say

 

 

랩실 과제 기록한다.

 

발표 마치고 공개처리하였다.

 

브금은 걍 암거나 골랐다.

 

 

구성:

Type 2 Hypervisor + macOS + Wireshark (on host)

 

L1-L2 패킷 흐름

 

자르기 귀찮다.

알아서 보면된다.

(진짜 개양아치..ㅋㅋ)

 

 

 

 

암호화 적용 이전 트래픽 흐름

 

중복되는 패킷은 무시했다.

 

IGMP로 '나 여깄소' 멀티캐스트 패킷을 보내다가

상대방의 멀티캐스트 패킷을 받으면 '어 발견' 하고

핸드셰이크가 시작된다.

 

암호화는 없으니

그냥 파라메타 정도만 주고받는다.

 

이 과정중에 하트비트가 오간다.

왜? IDK.

 

https://lab-notes.tistory.com/entry/DDS-RTPS의-동작behavior

 

DDS RTPS의 동작(behavior)

이전 글에서 DDS RTPS의 구조와 메세지에 대해서 알아보았다. 이번 시간에는 behavior specification을 통해 DDS RTPS의 동작(Writer와 Reader 사이에 메세지가 어떠한 sequence로 교환되는지)에 대해 알아보도록

lab-notes.tistory.com

https://www.omg.org/spec/DDSI-RTPS/2.5/PDF

(상기 블로그에 링크된 문서, 프로토콜에 대해 매우 상세히 기술해두었다)

 

 

디폴트 세팅에서 메세징하면

(예제 돌리면)

Best effort, i.e. stateless 로 동작하는 것으로 보인다.

 

Chatter (메세징)에 대한 Ack이 없음.

 

 

 

암호화 적용 이후 3 웨이 프로틴셰이크 흐름

 

 

멀티캐스트로 상대방을 서로 확인한 뒤

암호화를 적용하기 위해 데이터와 챌린지를 보낸다.

 

패킷 1번 (Listener -> Sender)

퍼미션.p7s 파일 (CA 인증서, 파라메터, 본인 공개키 포함), 챌런지 1 (난수 하나 던져줌, 니 개인키로 복호화해서 줘봐), 키 교환용 데이터 (디피헬만 퍼블릭 키 - 상대방의 공개키와 본인의 개인키로 이산대수 문제 (DLP)를 풀면 둘이 똑같은 세션키를 계산해낼 수 있음)

패킷 2번 (Sender -> Listener)

본인의 퍼미션 파일, 수신한 챌린지1 & 디피핼만1 (상대방것) 재전송 (검증용?), 본인의 챌런지2 & 디피핼만2, 시그니쳐1 (본인이 서명한 데이터, 상대방이 준 평문 넌스(난수)를 본인 개인키로 암호화한 값)전송

 

패킷 2번과 1번 사이의 타임갭은 4.7ms이다.

아마

- NIC에 캐싱된 패킷이 OS, ROS로 전달되고,

- 본인이 집어던질 static 파일 (퍼미션.p7s 등)을 RAM에서 가져오고

- 같이 집어던질 넌스 생성, 시그니쳐 생성하고

- 운영체제에 '이것좀 보내주셈'하고 전달하고

- 운영체제가 '음 이샛기 권한 있군' 검증하고

- 패킷 전달하고 (아마 PCH에서 DMA로 가져와서 NIC에게 던져주...지 않을까? CPU가 직접 NIC이랑 통신하진 않을듯)

- 해당 패킷이 이더넷을 통하여 라우터를 찍든, 아님 macOS의 내부 가상 라우터를 찍든....)

이 정도의 과정이 있으니 저렇게 오래 걸린 것이지 않을까 싶다.

 

참고로, 나는 macOS (Apple Silicone)에

 

 

페킷 3번 (Listener -> Sender)

 

 

 

 

 

반응형

Comment(s)