Bu seçeneklerin hiçbiri diğerlerinden daha iyi veya daha kötü değildir, çünkü hepsi çok güvensizdir. Seçenek 4 ile gidiyorum.
SRAM, anahtarları saklamak için en güvenli yerdir, ancak bunları asla dış dünyadan enjekte etmemelisiniz. Önyükleme sırasında DAİMA işlemci içinde oluşturulmaları gerekir. Başka bir şey yapmak anında gerisini geçersiz kılar - otomatik olarak güvensizdir.
Anahtarları kalıcı bellekte saklamayın, bu konuda haklısınız. EEPROM'u veya flash belleği okumayı korumanız önemli değildir. Bu kod okuma koruma sigortası kolayca tersine çevrilebilir. Bir saldırganın sadece dekapajı gerekir (içindeki silikon kalıbı açığa çıkarmak için siyah epoksi ambalajını çıkarın veya kimyasal olarak aşındırın). Bu noktada, kalıbın uçucu olmayan bellek hücreleri olan kısmını kaplayabilirler (bu bölümler çok düzenlidir ve bireysel bellek hücreleri görülmek için çok küçük olsa da, daha büyük yapı olabilir) ve küçük bir şey UV'ye opak bu bölüm üzerinde maskelenir. Daha sonra saldırgan çip üzerinde 5-10 dakika boyunca bir UV ışığı parlatabilir ve CRP sigortası da dahil olmak üzere tüm sigortaları sıfırlayabilir. OTP belleği artık herhangi bir standart programcı tarafından okunabilir.
Ya da, iyi finanse edilirlerse (örneğin, bu anahtarların birine 1000 dolardan fazla değerinde olması), sadece birkaç elektron mikroskop tipi ile bellek hücrelerini doğrudan okuyabilirler.
Güvende olmak için anahtarlar gizlenmemeli, silinmelidir.
- Hayır, yukarıdaki aynı nedenlerden dolayı.
Şimdi, seçenek 4'e geçin:
- Sadece şifreleme kullanın. Anahtar dağıtımı çözülmüş bir sorundur. Bu yüzden hazır olan çözümü kullanın. Çip, yeterli miktarda entropi kaynağı sağlamak için RNG'sini kullanmalı ve çeşitli diğer hususlar göz önünde bulundurulmalıdır ve önyükleme yükleyicisi, genel amaçlı olması gereken gerekli gizli anahtarları üreten programa doğrudan önyükleme yapmalıdır. kaydeder ve silinene kadar kalacakları doğrudan SRAM'a taşınır.
Ancak bir sorun var, bu CPU dışında hiçbir şeyin gizli anahtarın ne olduğu hakkında hiçbir fikri yok. Sorun değil: açık anahtarlı şifreleme kullanın. OTP belleğinde sakladığınız şey genel anahtarınızdır. Bu anahtar herkes tarafından okunabilir, yığın değişimine gönderebilir, bir petrol tankerinin yanına 5 ayak yüksekliğinde boyayabilirsiniz, önemli değil. Açık anahtarlı şifreleme ile ilgili en güzel şey asimetrik olmasıdır. Bir şeyi şifrelemenin anahtarı şifresini çözemez, bu özel anahtar gerektirir. Tersine, ortak anahtar tarafından şifrelenen bir şeyin şifresini çözme anahtarı, bir şeyi şifrelemek için kullanılamaz. Böylece, CPU gizli anahtarlar üretir, gizli anahtarları ŞİFRELEME için depolanmış genel anahtarınızı kullanır ve USB veya RS232 veya istediğiniz her şeyi gönderir. Gizli anahtarı okumak için özel anahtarınız gerekir, saklanması, gönderilmesi veya çip ile hiç ilgilenmesi gerekmeyen. Gizli anahtarınız özel anahtarınızla (başka bir yerde, yonga dışında) şifresi çözüldükten sonra, hazırsınız. Ortak anahtar dışında herhangi bir şey saklamak zorunda kalmadan, tamamen çip içinde ÜRETİLEN güvenli bir şekilde iletilmiş gizli bir anahtarınız var - daha önce belirtildiği gibi, okunması hiç korunmaya gerek yok.
Bu sürece resmi olarak anahtar müzakere denir ve her şey bunu kullanır. Bugün birkaç kez kullandın. Bununla başa çıkmak için birçok kaynak ve kütüphane mevcuttur. Lütfen, anahtarları hiçbir zaman 'enjekte etmeyin'.
Bahsedilmesi gereken son bir şey: Tüm bunlar tartışmalı çünkü AES anahtarı, güç kaynağına oturan ve mevcut çekmedeki küçük değişiklikleri ve CPU'daki uçların neden olduğu değişiklikler arasındaki zamanlamayı ölçen yan kanal saldırıları kullanılarak kolayca kurtarılabilir. kayıt olarak. Bu, AES'in (veya kullanılabilecek çok küçük olası şifreleme algoritmalarından herhangi birinin) nasıl çalıştığı bilgisiyle birleştiğinde, anahtarın kurtarılması nispeten kolay ve ucuzdur. Anahtarın okunmasına izin vermez, ancak anahtar alanını 255 olası anahtar gibi gülünç derecede küçük bir şeye daraltabilir. Çip ayrıca yukarı yönlü olduğu için onu algılayamaz.
Bu , 'güvenli' kripto işlemcilerde AES-256 şifreli önyükleme yükleyicilerini yendi ve o kadar da zor değil. Bildiğim kadarıyla, bu saldırı için gerçek bir donanım karşı önlemi yok. Ancak, şifreleme algoritmalarının kendisidir ve bitleri çevirmek için CPU'ya nasıl ihtiyaç duydukları, bu da bu güvenlik açığına neden olmaktadır. Yan kanal dirençli veya yan kanal geçirmez algoritmaların geliştirilmesi gerektiğini (ve umarım) şüpheleniyorum.
Şu anda olduğu gibi, bir anahtarın gömülü bir cihazda güvenli bir şekilde nasıl saklanacağına (veya sadece geçici bir anahtar kullanacağına) ilişkin gerçek cevap: yapamazsınız.
Ancak en azından seçenek 4'teki anahtar anlaşmasını kullanarak her seferinde yeni bir anahtar oluşturursanız, bir yan kanal saldırısı yalnızca kullanımda olan bir kanalın anahtarını tehlikeye atabilir ve yalnızca verileri şifrelerken gücü izlemek için zamanları varsa . Dahili olarak oluşturulan yeni anahtarlarla sık sık görüşürseniz, bu yararlı miktarlarda güvenlik sağlayabilir.
Anahtarlar oluşturun ve bunları mümkün olduğunca kısa bir süre için saklayın.