Problem açıklaması
Birkaç varsayımda bulunalım. Yazılım, işlevsel bileşenlere ayrılmıştır. Lisanslar, bu yazılım paketindeki işlevsel bileşenler içindir. Lisanslar zamana, sürüme veya bir dizi kullanıma dayalı olabilir, yani işlevselliği belirli bir zamana kadar kullanabilir, satın aldığınız sürümün işlevselliğini veya bazı küçük türevlerini kullanabilirsiniz veya kullanabilirsiniz. defalarca. Çözmeniz gereken iki ana senaryo var; bir saldırganın lisansa erişiminin olmadığı ve nerede olduğu.
Lisanssız saldırgan
İlk senaryo, saldırganın ürününüz için geçerli bir lisansa erişiminin olmadığı durumdur. Bu problemin çözülmesi kolaydır. Yazılımınızın işlevsel lisanslanabilir parçalarının her birine ayrı bir şifreleme anahtarı atamanız yeterlidir. Her bir işlevsel parçayı, o parça için tasarlanmış şifreleme anahtarıyla şifreleyin. Artık onlara anahtarı göndermediğiniz için, lisanslamadıkları işlevlerin şifresini çözme endişesi olmadan yazılımınızı dağıtabilirsiniz.
Lisansa erişimi olan saldırgan
Çözülmesi çok daha zor olan ikinci senaryo, saldırganın yazılımınız için geçerli bir lisansa sahip olması, ancak lisans verdiği işlevleri yeniden dağıtmak veya lisans süresini akıllıca uzatmak istemesidir.
Artık güvenilir bir zaman kaynağına ihtiyacınız var, bu sorunu şu şekilde çözebilirsiniz:
- bir dongle'a bir genel anahtar yerleştirerek ve dongle'ı iletilmesi gereken rastgele bir meydan okuma sorunuyla çözebilirsiniz bir zaman sunucusuna. Zaman sunucusu, geçerli saati ve meydan okumayı imzalayarak ve istemciye geri göndererek yanıt verir; ardından bunu anahtara gönderir ve anahtara gönderir ve ardından dahili saati günceller ve kilidi açar.
- dahili saati, bilgisayara takıldığı zaman. USB bağlantı noktası, takılıyken dongle'ınıza her zaman güç sağlar.
- dahili saati, bağlı olduğu makinede yüklü sürücülerden gönderilen zaman damgalarına göre güncelleme. Yalnızca zaman damgalarının zamanında ilerlemesine izin verin. Yalnızca zaman kaynağı, imzalı bir zaman damgası sağlayan bir uzak güvenilir zaman sunucusuysa, zamanda geriye doğru harekete izin verin.
Lisansınız, gerçekte bir saldırıya uğrayan ve erişim izni olmayan sürümlere dayanıyorsa, bir lisans çünkü işlevsel birim için anahtar türetme işleviniz hem işlevsel birimin tanımlayıcısını hem de sürümünü girdi olarak alıyor.
Anahtar dağıtımı
Bu nedenle, her bir işlevsel birim için ayrı anahtarlara sahip olduğunuzda, lisanslarınız temelde simetrik anahtarların dongle'a gönderilebilmesi için dağıtılması meselesi haline gelir. Bu genellikle dongle'a gizli bir simetrik anahtar yerleştirerek, lisans şifre çözme anahtarlarını paylaşılan gizli anahtarla şifreleyerek ve ardından şifreli anahtar güncelleme dosyalarını imzalayarak yapılır. İmzalanan güncelleme dosyaları daha sonra güncellemedeki imzayı doğrulayan, paylaşılan simetrik anahtarla yeni anahtarların şifresini çözen ve daha sonra kullanmak üzere saklayan dongle'a iletilir.
Anahtar saklama
Lisans şifre çözme anahtarlarını, sona erme zaman damgalarını vb. saklamak için tüm donanım anahtarlarının güvenli depolamaya erişimi olmalıdır. Genel olarak bu, harici flash belleğe veya EEPROM'a uygulanmaz. Eğer öyleyse, ASIC veya FPGA'ya dahili bir anahtarla şifrelenmeli ve değiştirilemeyecek şekilde imzalanmalıdır.
Düz metin deliği
Kullanıcı, işlevsel bileşeninizin lisansını aldıktan sonra, gizli anahtarınızı çıkaramasa bile, bu işlevsel bileşenin şifresini çözmek için dongle'ınızı kullanabilir. Bu, tüm düz metninizi çıkarması ve şifre çözme çağrısını çıkarılan düz metne doğrudan bir çağrı ile değiştirmesi sorununa yol açar. Bazı dongle'lar, dongle'a bir işlemci yerleştirerek bu sorunu çözer. İşlevsel bileşen daha sonra, bileşenin şifresini çözen ve dahili olarak çalıştıran dongle'a şifreli olarak gönderilir. Bu, dongle'ın esasen bir kara kutu haline geldiği ve donanım kilidine gönderilen işlevsel bileşenlerin, özelliklerini keşfetmek için ayrı ayrı araştırılması gerektiği anlamına gelir.
Oracles
Pek çok dongle, şifreleme ve şifre çözme oracle'larıdır ve bu da Chosen-ciphertext saldırılarıyla, örneğin son padding oracle saldırıları gibi olası sorunlara yol açar.
Yan kanal saldırıları
Oracle sorunlarının yanı sıra şu ana kadar iyi bilinen tüm yan kanal saldırılarıyla ilgili birçok endişeniz var. Ayrıca, potansiyel ancak keşfedilmemiş yan kanallarla da ilgilenmeniz gerekir.
Dekapsülasyon
Dünyada uzmanlaşan çok sayıda şirket olduğunu unutmayın. güvenli çipleri ayırmada ve denetlemede. En iyi bilinen şirketlerden bazıları, muhtemelen artık IOActive ve chipworks bünyesinde yer alan flylogic şirketinden Chris Tarnovsky'dir. Bu tür bir saldırı pahalıdır ancak hedefinizin değerine bağlı olarak gerçek bir tehdit olabilir. Bugün dongle'lardan birkaçı, muhtemelen hiçbirinin bu tür yüksek bütçeli saldırganlara dayanamaması beni şaşırtabilir.
Çalışıyorlar mı
Güçlü şifrelemeye dayalı bir dongle verildiğinde, şifreleme anahtarlarını zamana bağlı olarak sona erdiremeyeceğiniz için zaman temelli değildir ve zaman mutlak değildir, herhangi bir yan kanal saldırısından arındırılmıştır ve çip üzerindeki kodu çalıştırır, evet bu bir kara kutuyu araştırmaya eşdeğer kodun keşfedilmesini sağlayacaktır. Bu dongle'larda meydana gelen kesintilerin çoğu, uygulayıcının genel olarak tersine mühendislik ve bilgisayar güvenliğine aşina olmaması nedeniyle donanım lisanslama sisteminin lisans sahiplerinin uygulama zayıflıklarına dayanmaktadır.
Ayrıca, mantığın çoğunluğunun internete bakan bir sunucuda uygulandığı yazılımların bile, kara kutuyu araştırarak ve istemci kodu beklentilerine göre sunucu tarafı kodunu çıkararak kırıldığını fark edin. Daima uygulamanızın bozulmasına hazırlanın ve gerçekleştiğinde bununla nasıl başa çıkılacağına dair bir plan geliştirin.