2012-05-15 16 views
9

Birisi, fikrimi dinlendirebilir ve bu kurulumun bir dosyanın benden geldiğini doğrulayıp doğrulamayacağını görebilir. Bunun ne kadar güvenli olduğuna dair bir fikir harika ve olası bir saldırı vektörü olabilir.Güvenli DSA İmzası

  1. DSACryptoServiceProvider ile bir genel ve özel anahtar oluşturun.
  2. doğrulama karmasıdır (/ ele değiştirilebilir bunlar sayınız)
  3. bir güncelleme
  4. özel anahtar
  5. Gönder karma ve uygulamaya güncelleme kullanarak güncelleme dsa karma alın oluşturma uygulama kaynak olarak genel anahtarı ekle Genel anahtarı kullanarak düzeltin. Eğer doğrulanmış
  6. güncelleme bir exe ve ben birileri değiştirir ya da onunla tokmak eğer idam değil emin olmak istiyorum bu yüzden idam edilecek güncelleştirme

geçerlidir.

DÜZENLEME: Güncel anahtar 6, aslında bir karma oluşturmaz, yalnızca doğrular, güncelleyin. Sanırım bu kısım güvenlikle uğraşıyorum.

+2

Özel anahtarınız ile _hash_ yapmadığınız dışında, tam olarak doğru algoritma budur; Bir karma oluşturursunuz ve özel anahtarınız ile hash_'ı _encrypt. Alıcı, şifreyi çözmek ve doğrulamak için _public_ anahtarınızı kullanır. Ayrıca, özel anahtarınızın yalıtılmış bir ortamda (USB anahtarı veya ağ bağlantısı olmayan bir bilgisayar) bulunduğu varsayılmaktadır. :-) Özel anahtarınız gizli tutulmalıdır, ancak diğer tüm bileşenler (güncelleme, karma ve genel anahtarınız) güvende tutulmamalıdır. –

+0

Teşekkürler Adam, Sadece bir kaç puan eksik olduğunu düşünüyorum.Özel anahtar olmadan DSACryptoProvider hash elde nasıl? Ben hash = DSACryptoServiceProvider.fromxmlstring (privatekey) .signdata (fileToGetHashFrom) - İkinci nokta düşündüm. DSA ile verileri şifreleyebileceğimi düşünmedim, başka bir şey kullanmalı mıyım? Ayrıca normalde verileri bir ortak anahtarla şifrelemez ve özel bir anahtarla şifresini çözemezsiniz. Bu durumda anahtarım yanlış yol mu? Maalesef burada aptallaşıyor olsam da ;-) – Oli

+2

@Oli dijital imza oluşturma genellikle 2 adımlı bir süreç olarak tanımlanır. 1) imzalanacak verinin bir karma oluşturması, sonra 2) hash * 'ı kullanarak * Özel anahtar, açık anahtar kullanılarak doğrulanabildiği ve sahtekarlık yapılamayacağı şekilde. Oluşturma/doğrulama işleminin tek yönlü niteliği, yalnızca "tersine" genel ve özel anahtarları kullanarak şifreleme/şifre çözme ile benzerlikler taşır. “DSACryptoServiceProvider”, tüm ayrıntıları, yorumladığınız şekilde ele alacaktır, ama sanırım Adam'ın noktası, özel anahtarın, karma üretmek için kullanılmadığıdır. – shambulator

cevap

1

Yaklaşımınız güzel görünüyor. Kalan soru, uygulamanızın istemcide ne kadar güvenli olduğudur. Birisinin yürütülebilir dosya ile kurcalama şansı var mı? Belki de açık anahtarı uygulama kaynağında değiştirebilir misiniz?

Burada kuramsal bir yaklaşım var, ama adım 6'ya küçük bir değişiklik önermeyi tercih ediyorum: Kullanmak istediğiniz kesin açık anahtarı kesinleştirin. Bazı saldırganlar anahtarını uygulama kaynağında değiştirebilirse, başka bir özel anahtar için doğru karma bir değiştirilmiş paket gönderebilir. Bu, saldırganın zaten yazılımınızı değiştirdiğinden bu küçük bir sorun olabilir. Ancak, yalnızca uygulama kaynağının yerini alabilir ve başka bir şey yapamazsa, o zaman uygulamanızın kendi zararlı koduyla kendini güncellemesine izin verebilirdi.

İlgili konular