22.4.1 공식 APT 바이너리 저장소 연쇄 추가 및 GPG 암호화 키 무결성 검증 절차

22.4.1 공식 APT 바이너리 저장소 연쇄 추가 및 GPG 암호화 키 무결성 검증 절차

ROS2 프레임워크를 Ubuntu 시스템(버전 22.04 LTS, 24.04 LTS 등)에 설치하는 첫 번째 공학적 단계는 우분투의 기본 패키징 생태계(APT)에 ROS2 공식 바이너리 소프트웨어 저장소(Repository)를 안전하고 신뢰성 있게 편입시키는 것이다. 이 절차는 단순히 애플리케이션 다운로드 경로를 제공하는 것을 넘어서, 수천 개의 패키지가 융합되는 로보틱스 시스템에 악성 코드가 삽입되거나 변조된 공유 객체가 유입되는 것을 방지하기 위한 보안 아키텍처의 필수적인 시작점이다.

1. Ubuntu 환경의 다중 계층 저장소 컴포넌트 활성화

우분투 운영체제는 패키지의 관리 주체와 라이선스 정책에 따라 소프트웨어 저장소를 Main, Restricted, Universe, Multiverse의 다중 계층 컴포넌트로 분류한다. ROS2 미들웨어 스택 및 이를 구성하는 다양한 서드파티 오픈소스 종속성(서브 모듈 관리, 선형 대수 라이브러리 등)은 기본적으로 커뮤니티에서 유지 및 보수하는 오픈소스 소프트웨어의 범주인 Universe 저장소에 의존성을 갖는다.

따라서 apt-add-repository universe 명령어를 통해 해당 저장소 컴포넌트를 명시적으로 활성화해야 한다. 이는 커널 환경의 패키지 관리자가 libc나 기본 빌드 툴체인 이외에도 ROS2 환경 최적화에 필요한 확장된 데비안(.deb) 패키지 트리를 검색(Discovery)할 수 있도록 허용하는 논리적 연결 고리를 제공한다.

2. GPG(GNU Privacy Guard) 암호화 키 무결성 검증 구조

ROS2 개발 재단(OSRF/Open Robotics)에서 배포하는 모든 바이너리 패키지는 배포 서버에서 컴파일이 완료된 직후 암호화된 디지털 서명이 부여된다. 이 서명은 APT가 네트워크 상에서 패키지를 수신할 때 데이터 변조 및 패킷 위장(Spoofing) 공격을 원천 차단하기 위한 무결성 검증(Integrity Verification) 용도로 사용된다.

개발자는 curl 유틸리티를 이용하여 ROS2 공식 공개 GPG 키(Public Key)를 시스템의 커널 통제 하에 있는 신뢰할 수 있는 키링 디렉토리(/usr/share/keyrings/)에 다운로드하여 저장한다. 이 과정은 비대칭 암호화(Asymmetric Encryption) 아키텍처에 기반한다. APT 체스트(APT Chest)는 이후 패키지를 다운로드할 때마다 패키지에 내장된 해시 서명을 앞서 등록한 ROS2 공개 GPG 키를 사용해 복호화하고 원본 해시와 대조한다. 서명이 일치하지 않거나 키 체인에 등록되지 않은 저장소의 소프트웨어는 로컬 시스템의 커널 런타임 공간 진입을 거부당하게 되어 높은 수준의 바이너리 공급망 보안(Secure Software Supply Chain)을 달성한다.

3. sources.list.d 기반 배포판 소스 목록 연쇄 추가 메커니즘

GPG 키를 통한 보안 신뢰 네트워크가 확보된 이후, ROS2 공식 저장소의 URL(Uniform Resource Locator)을 시스템의 APT 소스 목록에 명시적으로 추가한다. 이때 우분투의 메인 /etc/apt/sources.list 파일을 직접 수정하는 대신, 패키지 간 구성 충돌을 방지하는 모듈화 패턴에 따라 /etc/apt/sources.list.d/ 디렉토리에 ros2.list라는 개별적인 확장 설정 파일을 생성한다.

이 파일 내부에는 현재 사용 중인 호스트 시스템의 아키텍처(예: amd64, arm64), 배포판 코드명(Codename, 예: jammy, noble), 그리고 앞서 등록한 GPG 키링의 절대 경로가 다음과 같은 구문으로 연쇄적으로 기술된다.

deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main

이러한 메타데이터 기반의 레지스트리 선언 기법은 향후 운영체제 커널의 마이너 업데이트나 RMW(ROS Middleware) 패치의 연쇄적인 무인 자동화 배포 시 apt update 명령어 호출 동기화를 통해 항상 최신 상태의 패키지 인덱스를 유지하도록 보장하는 운영 체제의 강건성을 제공한다.