Secure Boot라는 게 있다. 컴퓨터가 켜질 때 처음으로 하는 일은 단순히 운영체제를 불러오는 게 아니…
Secure Boot라는 게 있다. 컴퓨터가 켜질 때 처음으로 하는 일은 단순히 운영체제를 불러오는 게 아니라, “이 코드가 믿을 만한가?”를 확인하는 절차다. 펌웨어(UEFI) 안에는 미리 등록된 공개키들이 있고, 그중 하나가 바로 마이크로소프트(MS)의 키다. 흥미로운 점은, 이 시스템이 거창해 보여도 사실 핵심은 문자열처럼 보이는 암호키 쌍 하나다. MS는 비밀키(private key)를 철저히 보호하고, PC 제조사는 대응되는 공개키(public key)를 펌웨어에 넣어둔다. 운영체제 부트로더는 MS의 비밀키로 서명돼 있고, 펌웨어는 공개키로 이를 검증한다. 그래서 매번 MS에 “확인”을 묻는 게 아니라, 암호학적 연산으로만 진위가 확인된다. 여기서 재미있는 부분이 있다. 그럼 윈도가 아닌 다른 커널을 쓰는 OS들은 어떻게 부팅이 가능한 걸까. 리눅스 진영은 자신들의 부트로더(shim)를 MS에 제출해 서명을 받았다. 그 결과 Secure Boot가 켜진 PC에서도 윈도만이 아니라, MS가 서명해준 shim을 거쳐 리눅스 커널도 부팅할 수 있다. 즉, MS의 보증을 등에 업은 덕분에 전 세계 PC들이 리눅스를 받아들이는 것이다. 처음 컴퓨터 UEFI와 대화하는 shim이 신뢰를 얻었기에 shim이 다음 순서인 GRUB의 신분도 보증해줄 수 있다. 다음은 커널, 모듈 이런 차례로 보증이 이어진다. 만약 이 MS의 비밀키가 외부에 유출된다면? 공격자가 마음대로 악성 부트로더에 서명을 붙일 수 있고, 전 세계 PC들이 그걸 정상 코드로 받아들인다. 즉, Secure Boot의 보루가 무너지고, 운영체제가 시작되기 전에 이미 감염되는 전 지구적 부트킷 공격이 가능해진다. 대응 방법은 폐기와 교체다. MS는 곧바로 해당 키나 서명값을 DBX(차단 리스트)에 넣고, 새 키로 전환한다. 사용자 PC는 업데이트를 받아 더는 옛 키로 서명된 부트로더를 실행하지 않는다. 문제는 오래된 PC일수록 업데이트가 안 되거나 제조사 지원이 끊겼을 수 있다는 것. 결국 일부 기기는 Secure Boot를 꺼야만 쓸 수 있게 된다. Secure Boot는 완벽하지 않다. 암호키도 한 쌍 뿐이고, 세상 모두가 MS에 서류 제출해서 허가받으면 끝난다는 점에서 생각하기에 따라 허술하게 느껴질 수도 있다. 모두가 실시간으로 연결된 전자세계와 사람이 움직여야 일이 되는 현실세계를 연결하는 곳에는 이런 솔루션들이 흔하다.



















