Secure Boot, bilgisayar açılırken yalnızca güvenilir anahtarlarla imzalanmış önyükleyicilerin çalışmasını sağlayan UEFI özelliğidir. Bu zincir, uygulama geliştiricilerin kullandığı Authenticode kod imzalama sertifikalarından farklıdır; karıştırılması sık yapılan bir hatadır.
Güven zinciri nasıl çalışır?
- PK (Platform Key): Platform sahibinin anahtarı; KEK'i yetkilendirir.
- KEK: db ve dbx veritabanlarını güncelleyebilen anahtarlar.
- db: Çalışmasına izin verilen imzalar ve sertifikalar.
- dbx: Yasaklı imzalar (iptal listesi).
Birçok Linux dağıtımı, Microsoft'un UEFI üçüncü taraf sürecinde imzalanmış küçük bir shim önyükleyicisi kullanır; shim de dağıtımın kendi anahtarıyla imzalı GRUB ve çekirdeği doğrular.
Kendi çekirdek modülünüzü imzalamak
DKMS modülü veya özel çekirdek kullanıyorsanız, kendi Machine Owner Key (MOK) anahtarınızı üretip makineye tanıtabilirsiniz:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.key -out MOK.crt \
-nodes -days 3650 -subj "/CN=Ornek Modul Imzalama/"
openssl x509 -in MOK.crt -outform DER -out MOK.der
sudo mokutil --import MOK.der
mokutil --sb-state
--import sonrasında bir parola belirlenir ve yeniden başlatmada mavi MOK yönetimi ekranında kayıt onaylanır. Çekirdek görüntüsünü imzalamak için sbsign --key MOK.key --cert MOK.crt --output vmlinuz.signed vmlinuz komutu kullanılabilir.
Ne zaman ticari sertifika?
- Windows uygulaması, sürücü dışı yürütülebilir dosya veya installer imzalamak için kod imzalama sertifikası gerekir.
- Secure Boot için önyükleyici imzası ise platformun güvendiği bir anahtardan (Microsoft süreci veya kendi db anahtarınız) gelmelidir; standart bir Authenticode sertifikası bunu tek başına sağlamaz.
Kendi anahtarınızı kullanıyorsanız özel anahtarı çevrimdışı ve güvenli saklayın; bu anahtar kurulu makinelerde önyükleme güvenini belirler. Özetle Secure Boot, donanım düzeyindeki ayrı bir güven zinciridir ve uygulama imzalamayla birbirini tamamlar.
Doğrulama ve sorun giderme
Sistemin Secure Boot durumunu mokutil --sb-state ile görebilirsiniz. İmzasız bir çekirdek modülü yüklendiğinde çekirdek günlüklerinde (dmesg) 'Loading of unsigned module is rejected' veya 'Required key not available' benzeri mesajlar görülebilir. Bu durumda modülü MOK anahtarıyla imzalayın ve anahtarın kayıtlı olduğunu doğrulayın. Anahtar üretim işlemlerini çevrimdışı bir makinede yapmak ve özel anahtarı orada saklamak güvenlidir.