ARM cihazında (Raspberry Pi) Linux çekirdeğini önyükleyebilen önyüklenebilir bir SD kart olan bazı işleri kopyalamaya karşı korumaya çalışıyorum. Bu yaklaşımı kullanıyorum:
- Yaklaşım şifreli bir kök dosya sistemini bağlamak için bir initrd kullanır.
- İnitrd, SD kartın CID'sine göre dosya sistemlerinin şifresini oluşturur. (bir karma işlevi kullanılır, henüz md5 veya sha1 üzerinde karar vermedi). Initrd, oluşturulan şifreyi kullanarak dosya sistemini bağlamaya çalışır.
- Şimdi en ilginç / şüpheli kısım: initrd'nin kendisi özel bir C fonksiyonu kullanılarak şifreleniyor, temel olarak her bayt özel yapılmış bir sözde rastgele jeneratör kullanılarak XOR'ed. Çekirdek, şifre çözücü olarak çalışan aynı şifreleme işlevine sahip olacak şekilde değiştirilmiştir.
- Sistemin kendisi çıkarılır, böylece klavye veya harici depolama kullanmanın bir yolu yoktur. Tek bir uygulama tam ekran çalışır.
Önyükleyici çekirdek ve initrd yükledikten sonra, çekirdek initrd şifresini çözer ve init betiğini yürütür, bu da parolayı oluşturur ve kök dosya sistemini bağlar.
Benim sorum: Bu kurulumu kırmak ne kadar kolay olurdu (kök dosya sisteminin şifresini çözmek ve herhangi bir SD karttan önyükleme yapmak)? En zayıf kısımlar nelerdir? Çekirdeği koda etmek ve bu özel şifreleme işlevlerini bulmak ne kadar kolay?
EDIT: İşte bazı düzeltmeler, böylece bariz şeylerle zaman kaybetmeyin:
- Kök aygıt LUKS (aes256) ile şifrelenecek ve anahtar SD kartın CID'si ve biraz tuz kullanılarak bazı HMAC işlevleri tarafından üretilecektir.
- Initramfs şifreleme için sözde rasgele algoritma aslında RC4 olacaktır, sadece anahtar bazı özel işlevler kullanılarak üretilecektir, çünkü anahtarı sadece bir bayt dizisinde saklarsam, onu geri almayı basitleştirir (evet, bu gizlilik yoluyla güvenliktir ama başka yolu yok gibi görünüyor).
- Bir SD kart emülatörü kullanılıyorsa, birisinin bu sistemin bir kopyasını başlatabileceğini anlıyorum, ancak bu benim için sorun değil, çünkü oldukça zor ve kimse bunu yapamaz.