Bazı verileri şifrelemek ile bazı verileri imzalamak (RSA kullanarak) arasındaki fark nedir?
Şifreleme, mesajın gizliliğini ("bazı veriler") korurken, imzalama reddedilmemesini sağlar: yani yalnızca imzayı imzalayan kuruluş tarafından imzalanmış olabilir. İşlevsel farklılıklar da vardır; Okumaya devam etmek.
Sadece kamu-özel anahtarlarının rolünü tersine çeviriyor mu?
Kesinlikle hayır. İmzalama ve şifre çözme için aynı özel anahtarların (veya aynı şekilde, doğrulama ve şifreleme için aynı ortak anahtarların ) kullanımı, amaçlarını karıştırmamanız gerektiği için kaşlarını çatar. Bu çok matematiksel bir sorun değil (RSA hala güvenli olmalıdır), ancak anahtar yönetimiyle ilgili bir sorun , örneğin imzalama anahtarının daha kısa bir yaşam sürmesi ve kullanılmadan önce daha fazla koruma içermesi gerekir.
Aynı mesaj için, imzalamak için gönderenlerin özel anahtarını ve şifreleme için alıcıların güvenilen ortak anahtarını kullanmalısınız. Yaygın olarak sign-then-encrypt kullanılır, aksi takdirde bir düşman imzayı kendi yerine koyabilir. Benzer şekilde, şifresini çözmek için alıcının özel anahtarını ve doğrulama için gönderenin güvenilir genel anahtarını kullanmanız gerekir .
Ayrıca, imza oluşturmanın "özel anahtarla şifreleme" kullanmadığını anlamalısınız. Tüm RSA işlemleri modüler üslüğe dayanmasına rağmen, dolgu şeması imza üretimi için tamamen farklıdır. Ayrıca, ortak anahtar, RSA'nın tüm pratik kullanımlarında RSA özel anahtarından tamamen farklı özelliklere sahiptir.
Örneğin, ileti gönderen özel anahtarımı kullanmak istiyorum, böylece yalnızca gönderen olabilirim.
Bu, imzasız bir özelliktir ve imzalanarak elde edilebilir.
Açık anahtarımın mesajları okumak için kullanılmasını istiyorum ve onları kimin okuduğu umrumda değil.
Açık anahtar herkes tarafından bilinmelidir. Herkesin mesajları okumasını istiyorsanız, onları şifrelemezsiniz.
İmzalama genellikle mesajın içeriğini etkilemez. Mesaj, imzalardan ayrı kabul edilir. Resmi olarak bu tür imzalar, ekin mesaj olduğu "ekli imzalar" olarak bilinir. Mesajın imzasından daha önemli olduğu için biraz garip bir isim, ama evet. Yalnızca birkaç imza (kısmi) mesaj kurtarma sunar; artık çok fazla kullanılmamaktadır ve genellikle kullanımdan kaldırılmıştır.
CMS gibi imza protokollerinin hem iletiyi hem de imzayı içeren bir kapsayıcı biçimi dağıtabileceğini unutmayın . Bu durumda, ilk önce - hala şifrelenmemiş - mesajı, düz bir .zip arşivinden açmak gibi bir kaptan çıkarmanız gerekir. Bu nedenle mesaj görünümden gizlenmiş olabilir ve bu durumda doğrudan kullanılamaz.
Belirli bilgileri şifreleyip yazılımım için ürün anahtarı olarak kullanabilmek istiyorum. Bunları yaratabilecek tek kişi benim olmak isterim.
Şifreleme gizliliği sağlamak için kullanılır. Geçmişte RSA imza üretimi genellikle "özel anahtarla şifreleme" olarak düşünülüyordu. Bununla birlikte, işlemler yukarıda açıklandığı gibi oldukça farklıdır ve daha sonraki standartlar umutsuzca şifreleme ve imza üretmeyi dener ve ayırır.
Anahtarın imzasını çözmek / okumak için ortak anahtarımı yazılımıma dahil etmek istiyorum. Anahtardaki verileri kimin okuyabileceği umurumda değil, sadece onları üretebilen doğrulanabilir tek kişi olduğumu umursuyorum.
Evet, buna açık anahtara güven sağlama denir . Ancak, program kodunuzu korumak iletileri korumaktan çok farklıdır. Kod imzalama yapabilirsiniz, ancak imzayı kodunuzun dışında kontrol etmek için bir şeye ihtiyacınız vardır . Bunu sunan işletim sistemleri vardır.
Örneğin Microsoft Authenticode var. İStore ve Android uygulama mağazası gibi uygulama mağazaları kod imzalamayı kullanabilir veya kullanmayabilir, ancak uygulamanızın klonlanmadığına veya en azından mağaza içinde klonlanmadığına dair bir miktar güvence sunarlar. Sonuçta, kriptografi her zaman çözüm değildir.
Değişmiş / klonlanmış olmaktan kodunuzu tutulması hiç çok zor olduğunu ve bu şekilde gitmek eğer DRM topraklarında sağlam olurdu.
İmzalama bu senaryoda faydalı mı?
Evet kesinlikle. Açık anahtara güven varsa, iletilerin yalnızca sizin tarafınızdan imzalandığından emin olmanıza yardımcı olabilir. Uygulama kodunuzun / tümleşik genel anahtarınızın kimlik doğrulamasında yardımcı olabilirseniz, tamamen kodu çalıştırmayı beklediğiniz ortama bağlıdır.