it-swarm-tr.com

Neden şifreleme için imzalamak için kullandıkları asimetrik anahtarı kullanmamalıyım?

RSA ve PGP ile ilgili bir soruya answer sorusunda PulpSpy şunları kaydetti:

GPG kullanarak bir RSA anahtar çifti oluşturmak mümkündür (hem şifreleme hem de imzalama için - her ikisi için de aynı anahtarı kullanmamalısınız).

Bunun arkasındaki sebep nedir?

Belki de ortak anahtar şifreleme anlayışım kusurludur, ancak operasyonların buna benzer bir şey yaptığını düşündüm:

  • Bob Alice'e bir mesaj şifrelemek istediğinde, şifreleme için Alice'in ortak anahtarını kullanır. Alice daha sonra mesajın şifresini çözmek için özel anahtarını kullanır.
  • Alice, Bob'a dijital olarak bir mesaj imzalamak istediğinde, imzalamak için özel anahtarını kullanır. Bob daha sonra imzayı doğrulamak için Alice'in ortak anahtarını kullanır.

Şifreleme ve imzalama için farklı anahtarlar kullanmak neden önemlidir? Bu aynı zamanda, iletişim kurmak istediğiniz herkese iki ortak anahtar dağıtmanız gerektiği anlamına gelmez mi? Bunun bir miktar karışıklığa ve anahtarların yanlış kullanımına yol açabileceğini düşünüyorum.

100
Iszi

Yönetim yaklaşımları ve zaman çerçeveleri, imzalama ve şifreleme anahtarlarının kullanımı için farklıdır.

Reddetmemek için, başkasının imzalama anahtarınızı kontrol etmesini asla istemezsiniz çünkü onlar sizi taklit edebilirler. Ancak işyeriniz şifreleme anahtarınızı almak isteyebilir, böylece ihtiyacı olan diğer kişiler şifrelediğiniz bilgilere erişebilir.

Ayrıca, bir imzalama anahtarının uzun süre geçerli olmasını isteyebilirsiniz, böylece dünyadaki insanlar geçmişten gelen imzaları kontrol edebilir, ancak bir şifreleme anahtarıyla, genellikle daha erken devredebilir ve eskilerini eskisi gibi iptal edebilirsiniz. birçok güçlük.

69
nealmcb

Hem imzalama hem de şifreleme için aynı anahtar çiftini kullanmak potansiyel olarak güvensiz şeklindedir. Bunu yapmak, kullandığınız genel anahtar şemasına bağlı olarak saldırıları etkinleştirebilir. Bu tür bir kullanım sistemin tasarlandığı gibi değildir, bu nedenle sistemi tasarlanmadığı bir şekilde kullanmak "garantiyi geçersiz kılar".

Yapma. Sorun istiyor.

34
D.W.

Şifreleme ve imzalama için aynı anahtarı kullanmamamızın bazı nedenleri vardır.

  1. Şifrelenmiş veriler için gizli anahtarımızı yedeklememiz gerekiyor. Daha sonra bazı eski şifreli mesajların şifresini çözmek istiyoruz, ancak imzalamak için gizli anahtarımızı yedeklememiz gerekmiyor. Saldırgan anahtarı bulursa, CA'mızdan onu iptal etmesini ve yedeklemeye gerek kalmadan imzalamak için yeni gizli anahtar almasını söyleyebiliriz.

  2. Daha da önemlisi: Şifreleme ve imzalama için aynı anahtarı kullanırsak, saldırgan şifreli mesajımızın şifresini çözmek için bunu kullanabilir. Yaptığı şey buydu:

    Saldırgan rasgele bir sayı r seçmelidir;

    rGDC(N, r) = 1 olmalı,
    Ve N özel ve genel anahtar oluşturmak için kullanılan sayıdır (N = pq)

    Ardından saldırgan yeni bir mesaj seçer (m′) Ve bunu gönderene imzalamak için gönderir:

    m′ = m^e.r^e (burada (e,n) Ortak anahtardır)

    Gönderen m′ İmzaladığında

    m′^d ≡ (m^e.r^e)^d ≡ m.r (mod N)

    Artık saldırganın r (gizli mesaj) alabilmesi için m ile "bölmesi" yeterlidir.

12
Am1rr3zA

İmzalama ve şifreleme için ayrı anahtarlar kullanma nedenleri:

  1. Kuruluşta yararlı olan, kuruluşun bir çalışanı/kullanıcısı artık kullanılabilir olmadığında verilerin şifresini çözmek için şifreleme anahtarının yedeklenmesi veya emanet içinde tutulması gerektiğidir. Şifreleme anahtarının aksine, imzalama anahtarı hiçbir zaman çalışan/kullanıcı dışındaki kişiler tarafından kullanılmamalı ve emanet altında tutulmamalıdır.
  2. Bir şifreleme anahtarını imzalamak için farklı zaman aşımı sürelerine izin verir.
  3. Altta yatan matematiğin şifreleme ve imzalama için aynı olduğu göz önüne alındığında, eğer bir saldırgan bir anahtar sahibini aynı anahtarı kullanarak biçimlendirilmemiş bir şifreli mesajı imzalamaya ikna edebilir/kandırabilirse, saldırgan orijinali alır.

Referanslar

  1. https://www.entrust.com/what-is-pki/

  2. https://www.gnupg.org/gph/en/manual/c235.html

  3. http://www.di-mgt.com.au/rsa_alg.html

7
moo

Bana göre, temel nedenler, kriptografik güvenlikten ziyade, anahtar yönetimiyle ilgilidir.

Asimetrik kripto için, özellikle bir ortak anahtarın geçerli olmasını istediğiniz süre, o anahtarın kullanım amacına bağlı olabilir. Örneğin, bir bileşenin kendini diğer bileşenlere doğrulaması gereken bir sistem düşünün. Bunun yanında, bu bileşenin bazı veriler üzerinde düzenli olarak bir imza oluşturması gerekir. Teoride, her iki amaç için tek bir özel anahtar kullanılabilir. Ancak, güvenlik nedenleriyle PKI Sertifika Yetkilisinin, tek bir sertifikaya dayalı olarak başarılı kimlik doğrulamanın gerçekleşebileceği süreyi iki yılla sınırlamak istediğini varsayalım. Aynı zamanda, veri saklama yasaları, verilerin beş yıl boyunca saklanmasını ve söz konusu veriler üzerindeki imzanın tüm dönem boyunca doğrulanabilir olmasını gerektirebilir. Bu sorunu çözmenin tek (sağlam) yolu, bileşene iki özel anahtar vermektir: biri kimlik doğrulama, diğeri imzalama için. İlk anahtarın sertifikasının süresi iki yıl sonra dolar, imzalama sertifikasının süresi beş yıl sonra dolar.

Simetrik kriptografiye benzer nedenler uygulanabilir: farklı anahtarlar için farklı amaçlar kullanırsanız, anahtar yönetimi ile ilgili tüm sorulara karar verebilirsiniz (örn. Ana anahtar devir sıklığı, anahtarları yedekleme süresi, vb.) tek bir amaç için. Birden çok amaç için tek bir (ana) anahtar kullanırsanız, çakışan gereksinimlerle karşılaşabilirsiniz.

5
David Bakker

RSA şifrelemesi, bir çift işlev olan bir Trapdoor işlevine dayanır. Onlara D ve E diyeceğim. Fonksiyonlar, D(E(x)) = x ve E(D(x)) = x (herhangi bir x için) olacak şekilde tasarlanmıştır. Başka bir deyişle, D ve E tersidir. Bir Trapdoor işlevi yapan şey, ortak bir anahtarınız varsa, yalnızca E (pratik olarak konuşabilir) hesaplayabilmenizdir. Özel bir anahtarınız varsa, D ve E öğelerini hesaplayabilirsiniz.

Şifrelemenin çalışma şekli bu açıklamadan oldukça açıktır. Bob Alice'e şifreli bir mesaj göndermek istiyorsa, ciphertext := E(plaintext) hesaplar. Sonra Bob Alice'e ciphertext gönderir. Alice D(ciphertext) 'i, yani D(E(plaintext))' i, sadece plaintext 'yi hesaplar.

Şimdi imzalamanın nasıl işlediğinden bahsedelim. Alice message imzalamak istiyorsa, signature := D(message) hesaplar. Daha sonra Bob'a message ve signature gönderir. Bob daha sonra validation := E(signature) değerini hesaplar. signatureD(message) olduğundan, validation = E(D(message)) = message'dir.

Başka bir deyişle: bir mesajı imzalamak için, şifresini çözüyormuş gibi davranırsınız ve bu sizin imzanızdır. İmzanızı doğrulamak için, kullanıcılar imzayı şifreleyebilir ve orijinal mesajınızı geri aldıklarından emin olabilir.

Tekrar söyleyeceğim: imzalama şifre çözme işlemiyle aynı işlemdir.

Bu, imza ve şifreleme anahtarlarını ayırmakla ilgili temel kaygıdır. Birisi bir şeyi imzalamanızı sağlayabilirse, şifresini çözmenizi sağladılar.

Bir noter şirketiniz olduğunu varsayalım. Birisi size 10 dolar ve bir mesaj (örneğin, şarkı sözleri) verirse, o mesajı imzalar ve size geri gönderirsiniz. Birisi daha sonra şarkı sözlerinizi kopyalarsa, bu noter şarkılarını yazdığınızı göstermek için güvenilir noterden imza üretebilirsiniz.

Şimdi Havva'nın noter şirketinize şifrelenmiş bir mesaj aldığını varsayalım. Şifrelemeyi nasıl bozabilir? Aynı mesajı noter onaylamak için sana gönderir! Şimdi imza işlemini (hatırlayın, şifre çözme işlemiyle aynıdır) çalıştırırsınız ve sonucu ona geri gönderirsiniz. Şimdi şifresi çözülmüş mesajı var.

Uygulamada, protokollerin bu saldırıyı daha da zorlaştıran adımları vardır. Örneğin, PGP (yani protokolü kastediyorum; gpg burada en yaygın uygulamadır) orijinal mesajı imzalamaz; mesajın bir karmasını imzalar. Ancak güvenlik kanıtları basit durumlarda en iyisidir. RSA'nın güvenliği ile ilgili kanıtınızın sağlama işlevine bağlı olmasını istemezsiniz. (Örneğin, birçok kişi MD5'i uzun süre tercih edilen karma olarak kullandı, ancak bugün MD5'in oldukça kırılmış olduğu düşünülüyor.) Yalnız, RSA'nın güvenliği, şifreleme için kullanılan bir anahtarla rastgele mesajlar imzalamayacağınız fikrine bağlıdır. Bu gereksinimi yerinde tutmak, PGP'nin güvenliğini sağlamanın en iyi yoludur. (Hatırladığım gibi, bu Bruce Scheier'in kitabında asimetrik şifreleme hakkında en sık tekrarlanan uyarım Uygulamalı Şifreleme .)

Şimdi, sorduğunuz başka bir sorudan bahsedelim: "Bu, iletişim kurmak istediğiniz herkese iki ortak anahtar dağıtmanız gerektiği anlamına gelmez mi?"

"Anahtar", kullanıcılar için bir şey ve kripto uygulamaları için farklı bir şey anlamına gelir. Birçok RSA ortak anahtarı içermesine rağmen, yalnızca bir kullanıcı düzeyinde "anahtar" iletmeniz gerekir.

PGP'nin bir alt anahtar kavramı vardır. Ana anahtarım yalnızca imzalama anahtarıdır. Ayrı bir şifreleme alt anahtarım var. Bu alt anahtar ana anahtarım tarafından imzalandı. PGP anahtarımı anahtar sunucularından içe aktarırsanız veya web sitemden indirirseniz, ana anahtarımı ve tüm alt anahtarlarımı alırsınız. Yalnızca ana anahtarımı imzalamış olsanız bile, ana anahtarım şifreleme alt anahtarımı imzaladı, bu yüzden bunun da bana ait olduğunu biliyorsunuz. Bu, PGP anahtarımı indirerek (birçok RSA genel anahtarını kapsar), artık hem imzalarımı doğrulamak hem de mesajları bana şifrelemek için ihtiyacınız olan her şeye sahip olduğunuz anlamına gelir.

Alt anahtarlarla, anahtar yönetimi kriptografik bir bakış açısından daha karmaşıktır (ilerlemek için ekstra bir anahtar doğrulama adımı vardır), ancak pratik bir bakış açısından değil (PGP anahtarım, ana anahtarımı ve tüm alt anahtarlarımı içerir). Ekstra karmaşıklık uygulamada gizlidir ve kullanıcıya maruz kalmaz.

2
Piquan