AI · 2분 읽기

Secure Boot와 NVIDIA 드라이버

Secure Boot의 신뢰 체인과, 서명 없는 드라이버를 MOK 등록으로 해결한 과정

*Autocage AI Workstation 구축기 01* 에서 Secure Boot가 켜진 상태로 NVIDIA 드라이버를 설치하면서 MOK 등록이 필요했습니다. 이 글은 그 과정이 왜 필요했는지를 정리합니다.

Secure Boot가 하는 일

Secure Boot는 UEFI의 기능으로, 켜 두면 신뢰된 키로 서명된 코드만 실행합니다. 부팅 중에 악성 코드가 끼어들어 OS보다 먼저 실행되는 것을 막기 위한 장치입니다.

Secure Boot 신뢰 체인 UEFI 펌웨어, shim, GRUB, Linux 커널, 커널 모듈 순서로 앞 단계가 다음 단계의 서명을 검증한다. NVIDIA 드라이버 모듈은 사용자가 등록한 MOK 키로 서명해야 로드되고, 등록하지 않으면 로드가 거부된다. UEFI 펌웨어 신뢰된 키 DB 보유 Microsoft·제조사 키 검증 shim 첫 번째 부트로더 Microsoft 서명 검증 GRUB 부트로더 Ubuntu 서명 검증 Linux 커널 OS의 핵심 Ubuntu 서명 검증 커널 모듈 NVIDIA 드라이버 내 키(MOK)로 서명 각 단계는 앞 단계가 믿는 키로 서명을 확인한 뒤에만 다음 단계를 실행합니다. ✕ MOK 미등록 서명을 믿을 수 없어 로드 거부 → nvidia-smi 실패 ✓ MOK 등록 신뢰된 키로 서명 확인 → 로드 성공, GPU 사용 가능 MOK (Machine Owner Key) 사용자가 직접 신뢰 목록에 추가하는 키. Secure Boot를 끄지 않고도 내 드라이버를 씁니다. 서명의 원리 파일 해시 비밀키로 서명 검증하는 쪽은 공개키로 서명을 확인합니다. 파일이 바뀌면 해시가 달라져 검증에 실패합니다.
Secure Boot의 신뢰 체인: 펌웨어가 믿는 키에서 시작해 한 단계씩 서명을 검증합니다.

용어 정리

  • 부트로더: 펌웨어(UEFI) 다음으로 실행되어 OS 커널을 메모리에 올리는 작은 프로그램입니다. Ubuntu에서는 shim이 먼저 실행되고 GRUB이 뒤를 잇습니다.
  • 커널 모듈: 커널이 실행 중에 추가로 불러오는 코드입니다. NVIDIA 드라이버가 여기에 해당하고, 커널 안에서 최고 권한으로 동작합니다.
  • 서명: 개발자가 비밀키로 파일의 해시에 서명하면, 검증하는 쪽이 공개키로 “위조되지 않았고 신뢰된 곳에서 왔는지”를 확인합니다.
  • 신뢰된 키: 펌웨어에 미리 들어 있는 키 목록입니다(Microsoft, 제조사 등). shim이 Microsoft 서명을 받아서 이 체인에 들어갑니다.
  • MOK(Machine Owner Key): 사용자가 직접 신뢰 목록에 추가하는 키입니다.

왜 NVIDIA 드라이버가 문제였나

Ubuntu가 배포하는 부트로더와 커널은 이미 신뢰 체인 안에 있습니다. 하지만 드라이버를 설치하면서 만들어진 커널 모듈은 내 서버에서 내가 서명한 것이라 펌웨어가 알지 못하는 키로 서명됩니다. 이대로는 로드가 거부되어 nvidia-smi가 동작하지 않습니다.

그래서 설치 중 만들어진 공개키를 MOK로 등록했습니다. 재부팅 때 MOK Manager 화면에서 등록을 승인하면, Secure Boot를 끄지 않고도 내 키로 서명한 NVIDIA 모듈이 신뢰됩니다. 설치 절차는 *구축기 01의 3.2절* 에 있습니다.

댓글