it-swarm-tr.com

Simetrik, Asimetrik, Karma, İleti Kimlik Doğrulama Kodu şifreleri için gerçekçi ve en güvenli kripto para nedir?

2011 için bu iki yönlü soruyu güncellemek istiyorum:

  1. Hangi kriptoloji düşük güçlü cihazlar (cep telefonu gibi) için en uygun ve yine de etkilidir?

  2. Bir .NET geliştiricisi için en güvenli olan kriptoloji hangisidir?

Kasım ayında '08 Rasmus Faber yanıtladı this bu cevabı olan Stack Stack Overflow sorusu:

  • Simetrik şifre: AES-256

  • Asimetrik şifre: RSA 4096 bit anahtarıyla (bunun .NET'te maksimum olduğuna inanıyorum) veya ECDSA 571 bit anahtarıyla (ancak yalnızca .NET 3.5'te desteklenir)

  • Karma: SHA-512

  • Mesaj Kimlik Doğrulama Kodu: SHA-512 ile HMAC

Bununla birlikte, bunlar çoğu uygulama için aşırı doludur ve AES-128, 2048 bit anahtarlı RSA, SHA-256 ve SHA-256 ile HMAC kullanarak iyi yapmalısınız.

Bu öneriler bugün hala geçerli mi?

24

Alıntı yaptığınız öneriler biraz fazla. Dikkate alınması gereken bir nokta, belirli bir seviyenin ötesinde (örn. Anahtar boyutunda veya hash fonksiyon çıktı boyutunda), tüm fonksiyonların "öngörülebilir teknoloji ile kırılmaz" olması ve bunları karşılaştırmak için biraz hassas olmasıdır. SHA-512'nin SHA-256'dan "daha sağlam" olduğunu belirtmek, SHA-256'nın kırılabileceğini hayal ettiğiniz anlamına gelir; bu, şimdilik ve önümüzdeki 40 yıl için söyleyebildiğimiz kadarıyla doğru değildir (40 yıldan fazla) hangi teknolojiye sahip olabileceğimizi düşünmeye çalışmak risklidir; 40 yıl önce kimse interneti bugün olduğu gibi hayal etmiyordu, ancak çoğu insan 2010'a kadar hepimizin uçan araba kullanacağını varsayıyordu).

AES-128 zaten yeterince güvenli ve daha ucuzdur (AES-256 14 mermi kullanırken AES-128 10 mermi kullanır).

Şu anda en büyük kırık RSA anahtarı 768 bitlik bir modüldür ve biraz çaba gerektirdi (dört yıl ve gerçekten büyük beyinler). 1024 bit anahtarlar, daha büyük anahtarlar teşvik edilmesine rağmen, kısa süreli güvenlik için kullanılabilir kabul edilir. 2048 bit anahtarlar uygundur. Bir anahtarın iki kez daha büyük kullanılması, imzalama veya şifre çözme için 8 kat daha fazla çalışma anlamına gelir, bu nedenle aşırıya kaçmak istemezsiniz. RSA anahtar uzunluğunun güvenlikle nasıl ilişkili olabileceğine dair bir anket için bu site adresine bakın.

256 bit eğri üzerindeki ECDSA zaten "kırılmaz" bir güvenlik seviyesine ulaşır (yani 128 bit anahtarlı AES ile kabaca aynı seviyedir veya çarpışmalara karşı SHA-256). Asal alanlarda eliptik eğriler ve ikili alanlarda eğriler olduğunu unutmayın; hangi tür en verimli olan ilgili donanıma bağlıdır (benzer boyuttaki eğriler için, bir bilgisayar asal bir alandaki eğrileri tercih edecektir, ancak özel alanların ikili alanlarla oluşturulması daha kolay olacaktır; CLMUL daha yeni Intel ve AMD işlemcilerle ilgili talimatlar bunu değiştirebilir).

SHA-512, 64 bit işlemler kullanır. Bu bir PC'de hızlı, akıllı kartta o kadar hızlı değil. SHA-256 genellikle küçük donanımlarda (ev yönlendiricileri veya akıllı telefonlar gibi 32 bit mimariler dahil) daha iyi bir anlaşmadır.

Şu anda, ucuz RFID sistemleri yukarıdakilerden herhangi birini kullanamayacak kadar düşük güce sahiptir (başka bir deyişle, olabildiğince ucuz olmayan RFID sistemleri). RFID sistemleri hala genellikle şüpheli güvenlik özel algoritmaları kullanır. Öte yandan, cep telefonları AES veya RSA ile uygun şifreleme yapmak için yeterli CPU gücüne sahiptir (evet, hatta akıllı olmayan ucuz telefonlar).

38
Thomas Pornin

Alıntılanan cevap benim en güvenli kripto .NET yanıtımdır.

önerilerim (hem yüksek hem de düşük güçlü cihazlar için):

  • Simetrik şifre: AES-128

  • Asimetrik şifre: 2048 bit anahtarlı RSA veya 256 bit anahtarlı ECDSA/ECDH

  • Karma: SHA-256

  • Mesaj Kimlik Doğrulama Kodu: SHA-256 ile HMAC

  • Akış şifresi: TO modunda AES-128

11
Rasmus Faber

Güvenlik açısından, bu öneriler hala geçerli ve yapacağım gibi.

Asimetrik şifreler için endişe duyduğunuz üç şey vardır: şifreleme, anahtar değişimi ve imzalar. RSA hem şifreleme hem de imza şeması olabilirken, ECDSA özellikle bir imzadır. Bununla birlikte, şifreleme ve anahtar değişiminin eliptik eğri versiyonları da vardır (yine de kamusal alanda ne olduğundan emin değilsiniz). Bununla birlikte, parametre boyutları üçü için de aynıdır.

Diğer tek mağara SHA-256/512'nin yakında değiştirileceği, ancak bu durumda "yakında" 2012 olacağıdır.

Düşük güçlü ile ilgili olarak, gerçekten ne kadar düşük güçlü olduğuna bağlıdır. Cep telefonu ile bir akıllı telefon demek istiyorsanız, bunların hepsi uygundur. Akıllı kart, RFID, sensör ağı vb. İçin farklı bir hikaye. Ayrıca, düşük güçlü algoritmaların çoğu standart bir kütüphanede olmayacaktır. Ancak sizi "aşırı atılmama" son cümlesindeki parametre boyutlarına doğru yönlendiririm.

6
PulpSpy

2030 yılı boyunca güvenlik için, NIST'teki bilgili kişiler en az SHA-224, RSA veya DSA için 2048 bit, 224 bit EDCSA ve AES-128 veya 3 tuşlu üçlü DES kullanılmasını önerir.

Çalışmalarına göre, 2010 yılı sonu itibariyle ABD hükümeti şu algoritmaları kullanımdan kaldırıyor: SHA-1, 1024 bit RSA veya DSA, 160 bit ECDSA (eliptik eğriler), 80/112 bit 2TDEA (iki anahtar üçlü DES )

Daha fazla bilgi için, bu gönderiye ve referans aldığı NIST belgelerine bakın: http://securitymusings.com/article/1587/algorithm-and-key-length-deprecation

6
nealmcb

Kriptografik Doğru Cevaplar 2009 yılında Colin Percival tarafından IMHO hala güncel ve soruyu ve daha fazlasını kapsıyor.

5
Bruno Rohée

Simetrik şifreler için, AES-256 için önemli programdaki olası zayıflıklar nedeniyle AES-256 yerine AES-128 kullanmak daha iyi olabilir: http://www.schneier.com/blog/archives/2009/ 07/another_new_aes.html

2
Justin Clarke

Yaptığımız şey birkaç şifreleme ve karma yöntem seçmek ve tüm çıktıları ortak bir hex formatına dönüştürmektir. En hassas verilerimiz SHA-256 ve DES-3'ü kullanırken, kolayca tahmin edilebilen daha az hassas veriler MD5 ve RC4'ü kullanıyor ve ayrıca bazı şeyler için düz XOR dönüşüm) kullanıyoruz. Her simetrik şifrenin kendi şifresi vardır ve tüm şifrelenmiş veriler bir kontrol toplamı ile anahtarlanır.Her şey için bir şifreleme kullanmak tehlikelidir.

0
Dave