TPM (Güvenilir Platform Modülü) Hakkında Bilmeniz Gerekenler

Bu yazıda, TPM modülü nedir, Windows, Linux ve macOS bilgisayarlarda TPM modülü kullanımı ile ilgili detayları anlatmaya çalışacağız, ki “Trusted Computing” geçişine adapte olabilelim.

TPM geçmişi hakkında kısaca

TPM çipleri, bilgisayar anakartlarına çok uzun zaman önce yerleştirildi. Fakat bugüne kadar hiç popülerlik kazanamadı çünkü bu modülleri destekleyecek yazılım eksikliği mevcuttu. Geçtiğimiz bir kaç yılda, bu durum değişmeye başladı, genellikle Windows ve Linux gibi işletim sistemlerinin, bu modüllere doğrudan destek vermesi sayesinde. Bundan da öte, TPM çiplerinin tasarımları FIPS standartlarına kavuştu., ki bu durum işletim sistemi geliştiricilerinin daha rahat yol alabilmesini sağladı.

Neden ihtiyacımız var?

Basitçe, bilgisayarlar güvenlik ön planda olacak şekilde tasarlanmadığı için, yıllar geçtikçe, mühendisler yapılan bu hatanın farkına varmaya başladılar. Bu sorunu çözmek için çalışan mühendisler, Trusted Computing Group vakfını kurarak, TPM tasarımlarını yapmaya başladılar.
TPM

TPM Nedir?

Bir TPM (Güvenilir Platform Modülü) güvenli bir kripto-işlemci bileşeni olarak, donanımın güvenliğini gömülü kriptografik anahtarlarla sağlar.
Genellikle 28 pin çiptir (ki bu çip özelleştirilmiş bir çip olabileceği gibi, ARM çekirdeği tabanlı bir çözüm de olabilir) ve bir miktar geçici olmayan belleğe sahiptir (toplam miktar genellikle model/üretici bağımlı olarak değişkenlik gösterebilir).

TPM modülleri değiştirilebilir midir?

Tüm ayrık TPM modülleri değiştirilebilirdir. Buna rağmen, üreticiler çipleri anakarta ya da bir mikro-baskı devre kartına gömebilmektedirler (genellikle 11 pin oırt ya da 17 pin port) ya da özelleştirilmiş bir baskı devre kartı boyutlarında olabilir (bu durum, anakartınıza uygun TPM kartı/TPM genişletme kartını seçmenizi gerektirmektedir).

Raspberry Pi gibi çip üzerinde sistemler için TPM mikro-kartlar üreten firmalar vardır. Bunun yanında Raspberry Pi 4 ARM destekli Trusted Zone ile gelmektedir. Aynı zamanda Pi 3B+ kısmen de olsa, ARM Trusted Zone desteği sağlamaktadır.

Genel olarak TPM çipler, veri işleme konusunda kayda değer hıza sahip değildir (bazı TPM modüllerinde, bazı işlemleri tamamlamak, bir kaç saniye sürebilmektedir), bu yüzden TPM modüllerini kriptografik hesaplama işlemleri için kullanmayı düşünüyorsanız, tekrar düşünün..

Platform Configuration Registers (PCR)

TPM tarafından önerilen asıl özellik PCRlerdir (platform configuration registers). PCR ler: “kirptolojik olarak yazılımların durumunu ölçmek, platform üzerinde çalışan yazılımı ve konfigürasyonu saklamak için” kullanılır. Başka bir değişle, PCR ler , platform üzerinde çalışan yazılımları doğrulamak için kullanılabilir anahtarlar saklarlar. Buna rağmen, TPM bu operasyonu tek başına yapabilecek yetenekte değildir, bu yüzden ön yükleyici (boot-loader), kernel, TPM yi kullanarak bu işlemleri gerçekleştirir.

Linux ve windows gibi modern işletim sistemleri bunu işlemleri kendileri yapabilecek yetenektedir, bu yüzden sadece TPM yi bios ayarlarından aktif hale getirmek kadar basit bir konfigürasyonla devreye alınabilir.

Diğer yandan, PCR ler , aynı zamanda intelin Trusted Execution Technology denilen, Güvenilir çalıştırma teknolojisi ile de kullanılır.

Ölçülebilir Önyükleme (measured boot)

Windows/Linux gibi işletim sistemleri, TPM modülünü boot sırasında kullanırken, bu boot sürecine “ölçülebilir önyükleme (measured boot)” adı verilir. Boot sırasında, işletim sistemi, boot işlemi için gerekli olan her bileşenin ayrı ayrı birer kriptografik özetini(hash) çıkartarak, bunları TPM modülüne gönderir. Boot bileşenlerinden herhangi birisine yapılacak olan herhangi bir müdahale, özet değerlerini değiştirecektir. TPM ile bu özet değerleri farklılık gösterecektir. Buna Measured Boot (ölçülebilir boot) adı verilir.

TPM Türleri

Genel olarak beş çeşit TPM vardır. Bunlar;

  1. Discrete TPM (dTPM) fiziksel bir çip ya da gömülü bir bileşen olarak anakart üzerinde ya da mikro-pcb üzerinde yer alırlar
  2. Integrated TPM Entegre görüntü kartları gibi, başka bir çipe entegre edilmiş TPM çipleridir.
  3. Software TPM bir nevi yazılım emülatörü olarak değerlendirilebilir. Herhangi bir yazılımın çalışması gibi çalışır.
  4. Virtual TPM (vTPM) genellekli bir sanallaştırma platformu ile kullanılır. Bir çeşit yazılımsal TPM dir, ve sanal makinanın izole bir ortamda çalışmasını sağlar
  5. Firmware TPM (aynı zamanda fTPM olarak da geçer, işlemci üzerinde ekstra bir micro-code olarak bulunur) dicrete TPM e benzer fonksiyonlar sağlar, fakat CPU tarafından çalıştırılır. Intel ‘in geliştirdiği Trusted Execution Environment bu kapsamdadır. Firmware TPM aynı zamanda Intel’in PTT (Platform Trust Technology) ya da ARM tarafından geliştirilen TrustZone olarak da bilinir.

Not: Firmware TPM ve TPM’in Firmware’i farklı şeylerdir.

Apple Mac kullanıcıları için Ek Not: Apple geçtiğimiz senelerde T1 ve T2 güvenlik çiplerini geliştirdi. Bu çip, TPM olmamasına rağmen, TPM fonksiyonlarını “Entegre edilmiş TPM” yaklaşımıyla sağlamaktadır. Apple Tn çipleri, tipik bir TPM çipinden çok ileridir. Aynı zamanda SMC (System Management Controller) görevini yaparken, macOS için parmak izi, Touch id gibi kimlik bilgilerini şifrelenmiş olarak sağlar, T1/T2 çipleri üzerlerinde ayrı bir gömülü işletim sistemi çalıştırılar (eOS, daha basite indirgenerek watchOS olarak da kullanılmıştır). Bu sayede işletim sisteminden tamamen bağımsız hale gelmiştir. Özelliklerinin başında, FaceTime doğrulamaları için, renk düzeltme yeteneklerini sağlaması, aynı zamanda bir görüntü sinyal işleme görevi sunmaktadır. T2 ayrıca ses sinyal işleme yeteneklerine ve SSD kontrolcüsüne sahiptir. Anlaşılacağı üzere, Tn çiplerinin tasarımı TPM den çok daha ötededir.

TPM Standartı

TPM bir standart haline gelmiştir, ve gün geçtikçe gelişmektedir. Orjinal spesifikasyonlar TPM 1.2 ve TPM 2.0 olarak yayınlanmıştır.

1.2 ve 2.0 arasında en büyük fark, TPM 1.2 sadece SHA-1 ve RSA-2048 desteklemek üzere tasarlanmıştır. TPM 2.0 ise bu yetenekleri genişleterek cipher suite ‘den ötesi olmak için tasarlanmıştır. TPM2.0 hangi cipher suiteleri desteklediğini belirtmez, bunun için TPM2.0 üreticisine başvurmak gerekmektedir. TPM 2.0 aynı zamanda kamu standartlarını da desteklemektedir.

TPM Kullanım yaygınlığı

Windows 10 ‘un tanıtımıyla birlikte, pekçok donanım sağlayıcı ürünlerine TPM 2.0 entegresini gerçekleştirdi. Yani Modern laptop ve bilgisayarların pek çoğu TPM 2.0 ile gelmektedir.

Windows 10 kullanıcıları TPM 2.0 ile sorun yaşamazken, Linux kullanıcıları bu kadar şanslı değil, ve bazen halen sorunlar yaşayabilmektedirler. Maalesef Linux topluluk destekli bir işletim sistemi olduğu için, bu tür teknolojilerin adapte edilmesinde halen biraz geride kalabilmektedir, zira donanımlar TPM 2.0 ile gelmekteyken, pek çok linux aracı, halen sadece TPM 1.2 desteklemektedir.

Linux ile TPM 1.2 konfigürasyonu

Öncelikle herhangi bir işletim sisteminde TPM ile uğraşabilmeniz için, TPM özelliğinin biostan aktive edilmiş olması gerekmekte. Bu adımı zaten yaptığınızı kabul ediyorum.

Not: Eğer TPM kapalı haldeyse, Linux kernel boot sırasında “a tpm error (7) occurred attempting to read a pcr value” şeklinde bir hata mesajı verecektir. Bunu düzeltmek için biostan TPM i aktif hale getirmeniz yeterli olacaktır.

Bu adımları tamamlayıp, giriş konsoluna düştüğünüzü varsayarsak, root ile giriş yaptığınızda TPM i incelemk için aşağıdaki komutları verebilirsiniz.

st of all verify that your kernel can see the TPM module correctly by checking your /var/log/message like this:

# cat /var/log/messages | grep -i tpm

TPM modülünün sürüm bilgilerini ve tarihini vermesi gerekmekte:

Mar 17 20:37:15 vmm kernel: tpm_tis 00:05: 1.2 TPM (device-id 0xD, rev-id 18)

Eğer herhangi bir cevap alamadıysanız, şu komutu deneyin;

# dmesg | grep -i tpm 

daha sonra tcsd servisi çalışıyor mu kontrol edin:

# systemctl status tcsd

eğer bu servis yoksa, aşağıdaki komutlarla kurabilirsiniz

Debian, Kali, Ubuntu ve Pardusta ;

# apt install trousers

Eğer servis yüklü fakat çalışmıyorsa;

# systemctl start tcsd

Eğer servisin modüle erişiminde bir hata ile karşılaşırsanız;

Tspi_Context_Connect failed: 0x00003011 – layer=tsp, code=0011 (17), Communication failure”.  benzer bi mesaj olacaktır. Bu sorunla karşılaşmamak için tcsd servisini başlatmalısınız.

Servisi her açılışta otomatik başlatmak için ise:

# systemctl enable tcsd

Bu noktadan sonra, TPM araçlarını yükleyebilirsiniz;

Debian, Kali, Ubuntu ve Pardusta ;

# apt install tpm-tools -y

Ve son olarak, artık TPM modülünü doğrudan sorgulayabilirsiniz;

# tpm_version

Eğer herşey yoludna ise, aşağıdakine benzer bir mesaj alacaksınız

TPM 1.2 Version Info:

Chip Version: 1.2.3.19

Spec Level: 2

Errata Revision: 2

TPM Vendor ID: <VENDORID>

Vendor Specific data: AAAAAAAAAAA BB

TPM Version: CCCCCCCC

Manufacturer Info: DDDDDDDD

Linux ile TPM 2.0 Konfigürasyonu

Öncelikle kernelde TPM modülünün düzgün bir şekilde yüklendiğinden emin olalım.

# dmesg | grep -i tpm

Eğer TPM yok ya da düzgün bir şekilde yüklenmediyse şuna benzer bir mesaj alacaksınız;

ima: No TPM chip found, activating TPM-bypass!

Eğer bu mesajı aldıysanız, öncelikle TPM modülünüzün aktif olduğundan (ve hatta olduğundan) emin olmanız gerekmekte.

Eğer herşey yolunda ise TPM modülünün bilgillerine erişeceksiniz;

Mar 17 20:37:15 vmm kernel: tpm_tis 00:05: 2.0 TPM (device-id 0xD, rev-id xy)

bir başka yolu da /dev/tpmN cihazını kontrol etmektir:

# ls /dev/tpm0

ve bir başka yolda, sisteme yüklenen anahtarların kontrol edilmesi olabilir;

# cat /proc/keys

Yine de son iki metod, TPM 2.0 kontrol etmek için ilk metod kadar güvenilir değildir.

Eğer linuıx kernel sürümünüz 5.6 ve üzeri ise, aynı zamanda ;

# cat /sys/class/tpm/tpm*/tpm_version_major

komutuyla TPM 2.0 ı kontrol edebilirsiniz.

TPM 2.0 modülünü kontrol etmek için gerekli servisler

Öncelikle, tpm2-abrmd servisi kurulumu kontrol edelim;

# systemctl status tpm2-abrmd

Eğer servisi bulamıyorsanız şu komutla kurabilirsiniz;

Debian, Kali, Ubuntu ve Pardusta:

# apt install tpm2-abrmd

Eğer tpm2-abrmd kuruluysa, aşağıdaki komut ile çalıştıralım:

# systemctl start tpm2-abrmd

eğer hata mesajı vermeden çalışırsa, otomatik çalışma için servisi aktif hale getirelim;

# systemctl enable tpm2-abrmd

Bu noktadan sonra tpm2 araçlarını aşağıdaki komutla kurabilirsiniz:

Debian, Kali, Ubuntu ve Pardusta;

# apt install tpm2-tools

Kurulum tamamlandıktan sonra, artık TPM modülünüzün kontrolünü ele geçirebilirsiniz:)

Not: Microsoft, Windows 11 ile beraber, TPM modülünü opsiyon olmaktan çıkartıp, zorunlu hale getirmiştir.

 

 

 

Kaynaklar:

Linux Foundation presentation: TCG TPM2 Software Stack & Embedded Linux

Linux TPM driver kaynak kod repo > github.com

, , , , , , ,

Comments are closed.

Powered by WordPress. Designed by WooThemes

en_USEnglish