Özel gereksinimleriniz olmadıkça, yalnızca malloc
kullanmak akılcı yaklaşımdır. Vasıflı ve benzer kullanım hatalarını yakalayabilme avantajına sahiptir, ki bu da varlığından endişe duyduğunuz kırılganlıkların ana yollarından biridir. OpenSSL fiyasko bize gösterdi, fantezi ve botching bir şeyler yapmaya çalışırken büyük bir risktir.
Daha fazla zorlayıcı gereksinimleriniz varsa, kullanım durumunuza çok bağlı. Anahtarlarınızın geçici olduğunu veya diskte saklamaktan kaçınmanın çok fazla mantıklı olmadığını farz edeceğim. diske geçiş yapma
: İşte benim tavsiye özellikle riskler için azaltıcı etkenleri sistem fiziksel saldırılarına karşı güvenliği gerektiriyorsa, hiç takas olmamalıdır. Bireysel olarak mlock
ile belirli verileri korumaya çalışmak bir şakadır. Sadece takas özelliğini kapatın ve yeterli bellek yükleyin ve bu bir sorun değil. mlock
, bir güvenlik özelliği değil, gerçek zamanlı bir zamanlama özelliği olarak düşünülmelidir.
Heartbleed benzeri konular, orta savunma: daha sonra ilk ve son sayfaya ancak tüm yapmak mprotect
kullanın, ihtiyaçtan fazla ilk mmap
2 sayfaları, PROT_NONE
tüm: her iki tarafta bekçi sayfaları ile mmap
aracılığıyla bellek ayrılırken PROT_READ|PROT_WRITE
. İşiniz bittiğinde en kısa sürede munmap
ile serbest bırakın.
Heartble gibi sorunlar, güçlü savunma: Tüm kriptografiyi yapmak için bir alt işlem gerçekleştirin.
Bu arada, 256 bit anahtarların herhangi bir güvenlik sunması durumunda hangi şifreyi kullanıyorsunuz? –
@R .. Modern simetrik şifreler (AES gibi)? 4096-bit gibi büyük boyutlar RSA gibi asimetrik algoritmalar içindir. –
OP, "özel anahtarlar" dedi, bu yüzden genel anahtar şifrelemeyi kabul ettim, ancak belki de niyet yalnızca "gizli tutulması gereken anahtarlar" idi. –