Libreboot, GnuPG ile birlikte bilgisayarınızı daha güvenli hale getirebilir. Bunun için öncelikle bir bilgisayarın nasıl çalıştığını ve açılmak için içinden geçtiği süreçlerin anlaşılması gereklidir.
Libreboot, kendi dahilinde GRUB'ı çalıştırır. Bu bakımdan Libreboot kurulu bir cihazda kullanılabilecek biri depolama aygıtında, biri BIOS çipinde olmak üzere iki GRUB bulunur. Libreboot çalışma aşamasında BIOS çipinde bulunan GRUB'ı kullanarak sistemde bulunan GRUB'ı yükler.
GnuPG ile Libreboot'un GRUB'ın kurulumunu ve yüklenecek çekirdeklerin değiştirilmediğini doğrulaması için ayarlarda bir miktar değişiklik yapmak gerekmektedir.
GRUB, kriptografik olarak çekirdek ve ayar dosyalarını denetlemek için GnuPG kullanmaktadır. Şifreleme esnasında kullanılacak anahtarın kullanıcı tarafından üretilmesi gerekmektedir. Eğer halihazırda bir GnuPG anahtarınız yoksa, sadece bu amaçla kullanmak için veya genel olarak kullanılmak üzere bir GnuPG anahtarı üretebilirsiniz. Bunun için [GnuPG anahtar üretimi](/yazisma_guvenligi/gpg/gpg-anahtar-uretimi.md) rehberinden yararlanabilirsiniz.
Bu noktada, ihtiyaç ve beklentilerinize göre değerlendirmeniz gereken bir husus vardır. Eğer kişisel GnuPG anahtarınızı sürekli olarak kullanacaksanız, bu anahtarın bir noktada açığa çıkması veya kaybedilmesi tehlikesini de göze almanız gerekecektir. Aynı zamanda bu durum, siz farkında olmadan anahtarınız kullanılarak çekirdeklerin veya ayar dosyalarının sizin anahtarınızla imzalanabileceği anlamına da gelmektedir. Bu sebepten dolayı anahtarınızı bir [zarola](https://zarola.oyd.org.tr) ile korumanızı ve [kağıt bir yedeğini almanızı](../yazisma_guvenligi/gpg/paperbackup.md) şiddetle tavsiye ederiz.
Libreboot imajında değişiklikler yapabilmek ve bu değişiklikleri BIOS çipine yükleyebilmek için bazı yazılımlara ihtiyaç vardır. [Libreboot'un arşivinden](https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/) gerekli dosyaları indirebilir, indirilen dosyaların imzalarını GnuPG ile doğrulayabilirsiniz. İhtiyacınız olan `cbfstool` ve `flashrom` (dizinde flash adında) yazılımları indirdiğiniz arşivin dizininde bulunmaktadır.
Bu noktada iki seçenek bulunmaktadır. Şayet cihazınızda halihazırda Libreboot yüklüyse, cihazınızın ROM'undan doğrudan imajı çekebilir ve üzerinde değişiklik yapabilirsiniz.
* Eğer ROM imajını indirip değişikliklerinizi yapmak isterseniz, Libreboot imajını [buradan](https://www.mirrorservice.org/sites/libreboot.org/release/stable/20160907/rom/grub/) indirebilirsiniz.
ROM imajında yapılacak değişiklikler için `cbfstool` yazılımını kullanabilirsiniz. Bunun için çıkardığınız `libreboot.rom` dosyasını `cbfstool`'un bulunduğu dizine koyun.
Uçbirimde `cbfstool` dizininde iken `./cbfstool libreboot.rom print` komutu ile ROM imajında bulunan dosyaları listeleyebilirsiniz. İmaj içinde `grub.cfg` ve `grubtest.cfg` adlı iki GRUB ayar dosyası görülecektir. `grub.cfg`, Libreboot'un temel kullandığı yapılandırma dosyasıdır. Öncelikle `grubtest.cfg` dosyasını düzenleyerek bir deneme yapılandırması oluşturun. Böylece, yapılandırmadan memnun olduktan sonra `grub.cfg` dosyası ile test dosyasını değiştirip cihazınızı güvenli şekilde hazır hale getirebilirsiniz.
Bir saldırganın GnuPG doğrulamasını aşmak için yapması gereken tek şey, boot aşamasında GRUB'a doğrulama yapmamasını söylemektir. Bu bakımdan, Libreboot içinde çalışan GRUB'ın ayar değişiklikleri için parola talep etmesi güvenliğin anlamlı olabilmesi için şarttır.
Bunun için [Zarola](https://zarola.oyd.org.tr) yöntemini kullanmanızı şiddetle tavsiye ederiz. Çünkü bilgisayarınızın güvenliğinin ilk adımı bu parolanın güvenliğine bağlıdır.
Her açılışta GRUB'a parola girmemek için, standart yükleme seçeneğini parola gerektirmeyen bir şekilde ayarlamak yerinde olacaktır. GRUB, GnuPG ile kontrolleri yapacağı için bu işlem güvenlik açısından bir sorun teşkil etmeyecektir. Bunun için `--unrestricted` parametresini aşağıdaki gibi ekleyin.
Sabit diskinizde bulunan GRUB'ın GnuPG güvenliğini geçememesi için aşağıdaki gibi `unset superusers` satırının başına `#` koyarak devre dışı bırakılması gerekmektedir.
GRUB'ın kontrolleri yapacağı GnuPG anahtarınızın açık anahtarını (public key) uygun formatta kaydetmeniz gerekmektedir. Bunun için aşağıdaki komutu çalıştırın. Açık anahtarınız, `boot.key` ismiyle bulunduğunuz dizine kaydedilecektir. (_Birden fazla GnuPG anahtarınız varsa, `--export` parametresinden sonra anahtar ID'nizi ya da e-posta adresinizi girmeniz gerekmektedir._)
Libreboot GRUB'ın imzaları GnuPG anahtarınızla kontrol etmesi için aşağıdaki parametreyi `grubtest.cfg` yapılandırma dosyasında menü girdilerinden üste ekleyin.
Her işlem sonrasında imzalanan dosyanın adı ile bir .sig dosyası oluşacaktır. Boot dizini altındaki dosyaları imzalamak için root yetkisine ihtiyacınız vardır. GnuPG'yi root yetkisi ile çalıştırdığınızda, anahtarınız root kullanıcısının anahtarlığında olmadığından ilgili anahtarın bulunamadığına dair bir hata alabilirsiniz. Bunun için çalıştırdığınız GnuPG komutlarına `--homedir /home/kullaniciadi/.gnupg` parametresini ekleyerek GnuPG'nin anahtarınızın bulunduğu dizinde çalışmasını sağlayabilirsiniz.
ROM yazıldıktan sonra, bilgisayarınızı yeniden başlatıp yaptığınız değişikliklerin çalışıp çalışmadığını deneyebilirsiniz. Ekranınız açılır açılmaz birkaç kere boşluk tuşuna basıp, gelen GRUB ekranında `Load test configuration (grubtest.cfg) inside of CBFS` seçeneğini seçin. Gelen ekrandan bilgisayarınızı başlattığınızda sorunsuz şekilde çalışıyorsa her şey yolunda demektir.
Eğer imza sisteminin çalışıp çalışmadığını denemek isterseniz, kasıtlı olarak imzalı dosyalarını silip `grubtest.cfg` ile bilgisayarınızı başlatmaya çalışırsanız hata almanız lazımdır. Bu şekilde yapılandırmanızın doğru olduğunu ve imzaları denetlediğini görebilirsiniz.
Eğer `grubtest.cfg` yapılandırmasından memnun kaldıysanız, `grubtest.cfg` dosyasını `grub.cfg` olarak adlandırıp 7. adımdan itibaren işlemleri tekrarladığınızda, bilgisayarınız Libreboot ve GRUB'ın GnuPG denetimi altında açılacaktır.
Güncellemeler, kurulumunuza bağlı olarak kendiliğinden ve sessizce gerçekleşebilmektedir. Bu durum, güncellenen çekirdek ve GRUB yapılandırma dosyası imzalanmayacağı için, Libreboot'un bir sonraki açılışta cihazınızı çalıştırmayı reddetmesi ile sonuçlanabilir. Bu durumda Libreboot'u, parolasını girerek, imza kontrolü olmadan çalıştırabilirsiniz. Ancak gereksiz paniğe yol açmamak adına, işletim sisteminizin çekirdeğinizi her güncellediğinde imzalarını da yenilemesini sağlayabilirsiniz. Bunun için küçük bir betiğe ihtiyacınız vardır. Bu betiğin olduğu gibi çalışabilmesi için özel anahtarınızı (private key) root kullanıcısının anahtarlığına koyabilir (`gpg --import ile`) ya da betiğin içerisinde `gpg` ile başlayan tüm komutların sonuna `--homedir /home/kullaniciadiniz/.gnupg` parametresini ekleyebilirsiniz.
Bu aşamanın ardından, her çekirdek güncellemesinde ilgili betik çalışarak imzaların varlığını kontrol edecek, imza yoksa `/boot` dizinindeki her dosyayı imzalayacak ve ardından GRUB yapılandırmasını imzalayacaktır. Bu aşamada cihazınız sizden GnuPG anahtarınızın parolasını isteyecektir.