- Windows Bütünlüğü ve güvenliği sağlamak için, özellikle çekirdek modu sürücüleri olmak üzere çoğu 64 bit sürücü için geçerli dijital imzalar gereklidir.
- İmza, SignTool veya Visual Studio gibi araçlar ve güvenilir kuruluşlar tarafından verilen sertifikalar kullanılarak hem ikili dosyalara hem de kataloglara uygulanabilir.
- Kendi imzasıyla onaylanmış sertifikalar, geliştirme ve test süreçlerini kolaylaştırır. sürücüler imzalanmamış , Windows 78.1 ve 10 x64 sürümleri desteklenmektedir, ancak bunlar halka açık dağıtım için ticari imzanın yerini almaz.
- Windows sürümleri arasındaki uyumluluk, uygun karma algoritmalarının (örneğin SHA2) kullanılmasına ve Microsoft ile WHQL yönergelerine uyulmasına bağlıdır.
Windows'ta bir sürücüyü imzalamak ilk bakışta yalnızca ileri düzey geliştiricilerin yapabileceği bir şey gibi görünebilir, ancak eğer siz de bu konuda deneyimliyseniz... cihazlar, özel sürücüler veya test ortamlarıEr ya da geç, bu gereksinimle karşılaşacaksınız. Modern sistemlerde, özellikle 64 bit sistemlerde, Windows artık çekirdeğe sızmaya çalışan herhangi bir ikili dosyaya güvenmiyor: geçerli dijital imzalar, SHA2 gibi modern algoritmalar ve çoğu durumda Microsoft aracılığıyla sertifikasyon istiyor.
Aşağıdaki satırlarda, bir denetleyiciye imza atmanın tam olarak ne anlama geldiğini ve aralarındaki farkları sakin bir şekilde inceleyeceğiz. çekirdek modu ve kullanıcı moduBu durum 64 bit Windows 7, 8, 8.1 ve 10'u nasıl etkiliyor, SignTool veya Visual Studio gibi araçların rolü ne ve hem geliştirme ortamları (test veya kendinden imzalı sertifikalar) hem de güvenilir bir otorite tarafından verilen sertifikalarla halka açık sürümler için hangi seçeneklere sahipsiniz?
Windows'ta sürücü imzalama nedir ve neden zorunludur?
Windows'ta sürücü oturum açma işlemi, bir kimlik doğrulama yönteminin ilişkilendirilmesini içerir. sürücü paketine dijital imza (ikili dosyalar, INF dosyaları, katalog vb.) dosyaların oluşturulduktan sonra hiç kimse tarafından değiştirilmediğini ve gerçekten belirtilen yayıncıdan (yazılım sağlayıcısı veya üreticisi) geldiğini garanti etmek amacıyla kullanılırlar. donanım).
Pratikte, bir Windows cihazının kurulumu sırasında bu dijital imzalar şu amaçlarla kullanılır: paketin bütünlüğünü doğrulayın ve yayıncının kimliği. Eğer bir şey eşleşmezse (bozuk imza, güvenilmeyen sertifika, yanlış karma değeri vb.), sistem uyarılar gösterecek, kurulumu engelleyecek veya sürücüyü yüklemeyi reddedecektir.
Windows Vista 64-bit'ten itibaren, özellikle Windows 7, 8, 8.1 ve 10 x64'te, çekirdek modu güvenlik politikası açıktır: çekirdekte çalışacak herhangi bir sürücü... Usulüne uygun olarak imzalanmalıdır.Aksi takdirde, sürücü yüklenmeyecek, cihaz çalışmaz hale gelebilir ve geçersiz ikili dosyaların yüklenmesi zorlanırsa mavi ekran hataları bile oluşabilir.
Sürücünüzü Microsoft ile sertifikalandırmaya karar verdiğinizde, onu Windows Donanım Kalite Laboratuvarları (WHQL) doğrulama sürecine gönderebilirsiniz. Sürücü paketi sertifikasyon testlerini geçerse, Microsoft sertifikasını verir. resmi WHQL imzasıBu, yalnızca güveni ve uyumluluğu artırmakla kalmaz, aynı zamanda sürücüyü dağıtmanıza da olanak tanır. Windows Update ve Microsoft tarafından desteklenen diğer dağıtım kanalları.
Windows 10 sürüm 1507'den itibaren Microsoft Donanım Geliştirme Merkezi aracılığıyla imzalanan tüm sürücülerin şu şekilde imzalandığını akılda tutmak önemlidir: SHA2 bir karma algoritması olarakSHA1 bu senaryolar için artık geçerliliğini yitirmiştir ve eski sertifikaların karıştırılması, özellikle yeni sistemlerde sorunlara yol açabilir.

Çekirdek modunda ve kullanıcı modunda sürücü imzalama arasındaki farklar
Windows'ta çalışan sürücüler... çekirdek modu ve kullanıcı moduİmzalama politikası her iki ortamda da tam olarak aynı olmasa da, işletim sisteminin her yeni sürümüyle birlikte daha da katılaşma eğilimindedir.
Çekirdek modu sürücüleri, sistem çekirdeğinde çalıştıkları ve belleğe ve donanıma ayrıcalıklı erişime sahip oldukları için en hassas olanlardır. Windows Vista ve sonraki sürümlerin 64 bit versiyonlarında, bu sürücüler İmzalanmaları gerekmektedir. Ücretlendirilebilmesi için. Bu kısıtlama, sistem istikrarı ve korunmasıyla doğrudan ilgilidir. kötü amaçlı yazılım düşük seviyede enjekte etmeye çalıştığı anlamına gelir.
Öte yandan, kullanıcı modunda çalışan sürücüler (örneğin, birçok yazıcı sürücüsü ve ek bileşenler) başlangıçta bu kadar katı bir yükümlülüğe tabi değildi. Aslında, Windows'un eski sürümlerinde durum böyle değildi. Bu mutlak bir gereklilik değildi. Bu sürücülerin imzalanması gerekmektedir. Ancak Microsoft, güvenlik nedenleriyle her zaman imzalanmalarını önermiştir ve Windows 8'den beri belirli kullanıcı sürücüsü türleri için imzalamanın gerekli olduğu senaryolar mevcuttur.
Tipik bir örnek: x64 bir bilgisayara yüklenen bir yazıcı sürücüsü, kurulum işlemi sırasında genellikle kullanıcıdan onay isteyen bir iletişim kutusu görüntüler. Pratikte, bu paket Usulüne uygun şekilde imzalanmalıdır. Böylece kurulum, herhangi bir tıkanıklık veya kritik güvenlik uyarısı olmadan devam edebilir.
Genel fikir şu ki, kullanıcı modunda bu gereklilik evrensel olmasa da, Microsoft bunu giderek daha fazla teşvik ediyor. Sürücüyle ilgili tüm yazılımların imzalanması gerekmektedir.Bunları imzalamak, kimin oluşturduğunun güvenilir bir şekilde doğrulanmasını, kurcalama girişimlerinin tespit edilmesini ve meşru denetleyiciler gibi görünen kötü amaçlı bileşenlerin sızma riskinin azaltılmasını sağlar.
Windows'un farklı sürümlerindeki imza gereksinimleri ve SHA algoritmaları
En sorunlu yönlerden biri, Windows sürümleri ile aşağıdaki gibi karma algoritmaları arasındaki uyumluluktur: SHA1 ve SHA2Birçok geliştirici, bir sistemde çalışan ancak diğerinde çalışmayan sürücülerle karşılaşır ve bunun büyük bir kısmı imzalama politikalarındaki değişikliklerden kaynaklanır.
64 bit Windows 7 veya 8 gibi eski sistemlerde, Microsoft'un önceden uyardığı üzere, SHA1 tabanlı sertifikalar ve imzalarla çalışmak yaygındı. SHA1 güvenlik açısından yetersiz kaldı.Windows 8.1 ve 10'a doğru ilerleme kaydedilirken, SHA2 kod ve sürücü imzaları için standart haline geldi.
Pratikte, bazı üreticiler çekirdek modu ikili dosyalarını Microsoft dışındaki kuruluşlar tarafından verilen çift sertifika (SHA1 ve SHA2) yerleştirerek imzalamayı tercih ettiler. Bu çift imzalı ikili dosyalar, belirli durumlarda, Windows 10 öncesi sürümlerde yüklenemiyorlar.Hatta bazı Windows 10 sistemlerinde ciddi çökmelere veya mavi ekran hatalarına bile neden olabilirler.
Bu sorunları gidermek için Microsoft, KB 3081436 güncellemesi gibi belirli yamalar yayınladı. Etkilenen sistemlere bu güncellemeyi yüklemek, belirli SHA2 imzalı sürücülerle olan uyumsuzlukları düzeltir ve bir liste sağlar. referans SHA karma değerleri Bu destek makalesinin "Daha fazla bilgi - Dosya karma değeri bilgisi" bölümünde yer almaktadır.
Birden fazla Windows sürümünde çalışması gereken sürücüleri dağıtacaksanız, aşağıdaki hususları gözden geçirmeniz şarttır: Sürüm başına imza gereksinimleri Microsoft tarafından ayrıntılı olarak açıklanmıştır. Orada hangi algoritmaların geçerli olduğu, geriye dönük uyumluluğun nasıl ele alındığı ve hangi imza kombinasyonlarının (katalog, gömülü ikili dosya, çapraz sertifikalar vb.) resmi olarak kabul edildiği belirtilmiştir.
Kullanıcı modu sürücü imzalama: öneriler ve kaynaklar
Çekirdek genellikle en çok dikkat çeken bileşen olsa da, kullanıcı modu sürücü imzalama da dikkat çekmeyi hak ediyor. Microsoft bunu başından beri çok sıkı bir şekilde uygulamadı, ancak... Güvenliğin korunması için şiddetle tavsiye edilir. Sistemin kalitesini artırır ve son kullanıcıya güven verir.
Kullanıcı modu sürücüsünün imzası temelde çekirdek modundakiyle aynı işlevleri yerine getirir: denetleyici sağlayıcısını tanımlar (Üretici, ISV, vb.) ve paketin imzalandığından beri değiştirilmediğini doğrular. Örneğin, bir kullanıcı x64 bir bilgisayara kullanıcı modu sürücülerine sahip bir yazıcı yüklediğinde, kurulum sihirbazı yayıncının güvenilir olup olmadığını soran bir iletişim kutusu görüntüleyebilir. İmza geçerliyse ve sertifika tanınmış bir kuruluşa aitse, kurulum daha sorunsuz ve çok daha az uyarı ile gerçekleşir.
Microsoft, imzalama sürecine daha derinlemesine inen bir dizi belge ve eğitim sunmaktadır; bunların çoğu başlangıçta çekirdek modu için tasarlanmış olsa da kullanıcı modu için de geçerlidir. Ana makale şu şekildedir: sürücü imzası Çekirdek modu kod imzalama eğitiminin içindeki "Çekirdek modülüne sürüm imzası nasıl atılır" alt başlığı, Windows'ta kod imzalamanın genel mantığını anlamak için iyi bir başlangıç noktasıdır.
Ek olarak, Windows Sürücü Kiti (WDK) kurulumu, yardım dosyası olarak adlandırılan bir dosya içerir. selfsign_readme.htm, dizinde bulunur imzaBu belge, test sertifikalarının nasıl oluşturulacağını ve geliştirme sırasında nasıl kullanılacağını açıklamaktadır; bu, özellikle güvenilir bir kök otorite tarafından verilmiş bir sertifikanız henüz olmadığında oldukça faydalıdır.
Özetle, kullanıcı modu sürücüsü bazı senaryolarda teknik olarak imza olmadan çalışabilse de, güvenlik, marka imajı ve Windows kurulum sihirbazlarıyla uyumluluk nedeniyle zorunluymuş gibi ele alınmalıdır. Sürücüyü imzalamak en mantıklı şey..
SignTool kullanarak Windows 7 ve 8'de çekirdek modu sürücülerini imzalama
64 bit Windows 7 ve 8 ile çalışırken, çekirdek modu sürücülerini imzalamanın en yaygın yöntemlerinden biri komut satırı aracını kullanmaktır. komutlar SigntoolWindows SDK'sına dahil olan bu yardımcı program, hem dosyaları imzalamanıza hem de mevcut imzaları doğrulamanıza olanak tanır ve farklı senaryolara uygun çok çeşitli seçenekler sunar.
En önemli seçeneklerden bazıları SignTool'un özellikleri aşağıdaki gibidir:
- /ak: Ek bir sertifika belirtir; örneğin, sertifikanızı güvenilir bir kök yetkilisine bağlayan bir çapraz sertifika.
- /f: İmzalama sertifikasını içeren dosyayı belirtir (genellikle .pfx uzantılı).
- /p: .pfx dosyasında saklanan imzalama sertifikasıyla ilişkili parolayı sağlar.
- /fd: Dosya imzası oluşturulurken kullanılan karma algoritmasını tanımlar, örneğin, /fd sha256 SHA256'ya dayalı bir imza oluşturmak için (eğer bir şey belirtilmemişse, eski sürümlerde genellikle varsayılan değer SHA1'dir).
- /n «Sertifikanın genel adı»Bu özellik, ortak adına (CN) göre Windows sertifika deposundan belirli bir sertifikayı seçmenizi sağlar.
- /t: Microsoft Authenticode şemasıyla uyumlu bir zaman damgalama sunucusunu belirtir.
- / tr: RFC 3161 ile uyumlu, daha modern ve yeni uygulamalar için önerilen bir zaman damgası sunucusunu belirtir.
Sürücü projeniz üzerinde çalışırken, hangi dosyaların imzalanması gerektiğini bilmek önemlidir. Bir sürücünün Windows 7 veya 8'e doğru şekilde yüklenmesi için imzalanması gerekir. Projenin ilgili tüm ikili dosyaları (örneğin, .sys dosyaları) ve ayrıca paketteki dosya kümesini gruplandıran katalog dosyası (.cat).
İki ana seçeneğiniz var: Bu dosyaları SignTool'un bulunduğu bir çalışma dizinine kopyalayabilir veya doğrudan Bunları Windows SDK bin klasörüne taşıyın. ve oradan aracı çalıştırın. Önemli olan, hem ikili dosyaların hem de imzalama için kullanacağınız sertifikaların elinizde olmasıdır.
Tipik bir senaryo, örneğin uygun kod imzalama sertifikasını edinmeyi içerir. “Microsoft Çapraz Sertifikası” GlobalSign veya başka bir güvenilir otorite tarafından düzenlenmiş bir çapraz sertifika (CrossCert.crt) kullanabilirsiniz. Bu çapraz sertifikayı, ana kod imzalama sertifikanızla (örneğin, CodeSign.pfx) birlikte çalışma dizininize yerleştirin ve şuna benzer bir komut çalıştırın:
signtool sign /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys
Bu komut bir imza oluşturur. çapraz sertifikasyonu içerir ve GlobalSign'ın RFC 3161 sunucusundan bir zaman damgası alır. Zaman damgası çok önemlidir çünkü dosyanın, sertifikanın geçerli olduğu bir tarihte imzalandığını kanıtlar, sertifika daha sonra geçerliliğini yitirse bile.
Dosyayı imzaladıktan sonra, her şeyin doğru olup olmadığını doğrulamak gerekir. Bu genellikle şu gibi bir doğrulama komutu kullanılarak yapılır:
signtool verify -v -kp filename.sys
Seçimi -v Bu, sertifika zinciri ve seçenek hakkında ayrıntılı bilgi gösteren detaylı bir çıktı alınmasını zorunlu kılar. -kp Bu işlem, çekirdek modu sürücüsünün özel kod imzalama kriterlerine göre imzayı doğrular. Her şey yolunda giderse, imzanın ve sertifika zincirinin doğru olduğunu gösteren bir sonuç göreceksiniz.
Son olarak tavsiye edilir Aynı imzalama ve doğrulama işlemini .cat dosyasıyla tekrarlayın. Paket içeriğinin bir parçası olarak, hem ikili dosyalar hem de katalog düzgün bir şekilde imzalandıktan sonra, sürücü Windows 7 ve 8 x64'e güvenlik sorunları olmadan kurulabilir ve kurulum sihirbazı sırasında güvenilir yayıncı bilgileri ve standart sistem pencereleri görünmelidir.
Aracın tüm varyasyonlarını daha detaylı incelemek için Microsoft, kapsamlı bir SignTool komut referansının yanı sıra bir de Çekirdek modunda kod imzalama için özel eğitim ve Windows'taki çekirdek modüllerinin dijital imzalarına adanmış belgeler. Bu kaynaklar, özel durumları, gelişmiş parametreleri ve her sistem sürümünün özelliklerini açıklamaktadır.
Genel olarak bayt ve teknoloji dünyası hakkında tutkulu bir yazar. Bilgilerimi yazarak paylaşmayı seviyorum ve bu blogda da bunu yapacağım; size gadget'lar, yazılım, donanım, teknolojik trendler ve daha fazlasıyla ilgili en ilginç şeyleri göstereceğim. Amacım dijital dünyada basit ve eğlenceli bir şekilde gezinmenize yardımcı olmaktır.