it-swarm-tr.com

CA imzalı bir ortak anahtarı nasıl oluştururum?

Başka birinin gizli verileri daha sonra özel anahtarımın şifresini çözebileceğim ortak anahtarımı şifrelemesine ihtiyacım var. OpenSSL ile bir RSA özel/ortak anahtar çifti ürettim ve onlara ortak anahtar verdim ve her şeyin çalışmasını sağladım.

Daha yakın zamanlarda, birisi kötü adamların ortak anahtarımı kabul edip kendi ortak anahtarlarını diğer tarafa geçireceği olası bir ortadaki adam saldırısına maruz kaldığımızı belirtti. Diğer taraf daha sonra gizli verileri gizlice şifreleyecek, şifresini çözecek olan MITM'ye aktaracak, daha akıllı olmadan olmadan bana vermeden önce ortak anahtarımla yeniden şifreleyecekti. Önerilen çözüm, ortak anahtarımın, diğer tarafın geçmeden önce güvendiği bir CA tarafından imzalanmasıdır.

Bir deneme olarak, kendi CA'mla imzalayabildiğim bir CSR oluşturdum, ancak ortaya çıkan sertifika da (şifrelenmiş) özel anahtarı içeriyor. Gizli anahtarımı şifreli olsun ya da olmasın başkasına vermemeyi tercih ederim.

Açık anahtarımı imzalatmanın bir yolu var mı?

9
user1683793

Açık anahtarı imzalamak etkili bir sertifikadır. Benimle güvenli bir şekilde iletişim kurabilmeleri için diğerlerine dağıtabileceğim bir ortak anahtar sertifikası üretmek için attığım adımlar şunlardır:

Kurmak

  1. Özel Anahtarları oluşturun:

    openssl genrsa -out private.pem 2048

  2. Ortak anahtarları oluşturun:

    openssl rsa -in private.pem -outform PEM -pubout -out public.pem

  3. CSR (Sertifika İmzalama İsteği) oluşturma

    openssl req -new -key private.pem -out certificate.csr

  4. Kendinden imzalı bir sertifika oluşturun (bu sertifikayı paylaşabilirsiniz)

    openssl x509 -req -gün 365 -in certificate.csr -signkey private.pem -out certificate.crt

Şifreleme

openssl rsautl -encrypt -inkey private.pem -keyform PEM -in verisi> şifreli_veriler

Şifresini Çözme

  1. Ortak Anahtarı Sertifikalardan Çıkarın

    openssl x509 -pubkey -noout -in sertifika.crt> certpubkey.pem

  2. Verilerin şifresini çözme

    openssl rsautl -decrypt -inkey certpubkey.pem -keyform PEM -pubin -in şifrelenmiş_veriler> veri

Anahtarınızın bir CA tarafından imzalanmasını istiyorsanız, CSR dosyanızı (ve biraz nakit) seçtiğiniz CA'nıza göndermeniz gerekir, kendinden imzalı sertifika I yerine kullanabileceğiniz bir sertifikaya sahip olursunuz. yukarıdaki adımlarda belirtilmiştir.

10
Whome

Sürece dahil olan üç varlık olmalıdır:

  1. Gönderen - Siz
  2. Alıcı - Kullanıcı
  3. Sertifika Yetkilisi - Güvenilir Üçüncü Taraf (Veya bazı durumlarda siz)

İşleri güvende tutan süreç "Gönderen", bir çift anahtar (genel ve özel) oluşturur. Daha iyi bir görsel için bunlara anahtar ve kilit demeyi seviyorum. Anahtar (özel), Gönderenin sahipliğini asla terk etmemelidir, bu yüzden buna özel anahtar denir.

Gönderici daha sonra ortak anahtar (kilit) ile Sertifika Yetkilisine (Güvenilen Üçüncü Taraf) iletilen bir Sertifika İmzalama İsteği (CSR) oluşturur, Sertifika Yetkilisi ortak anahtarı (kilit) Sertifika Yetkilileri özel anahtarıyla imzalar.

Sertifika Yetkilisi şimdi, Sertifika Yetkilileri özel anahtarı tarafından imzalanan "Gönderenler" genel anahtarını şimdi sertifika olan "Gönderen" e geri gönderir.

Alıcı sertifikayı alır (web tarayıcısı üzerinden söyleyelim) ve hem "Gönderen" hem de "Alıcı" nın güvenilir üçüncü taraf olduğu için sahip olduğu Sertifika Yetkilileri ortak anahtarıyla geçerli olduğunu doğrular. Doğrulandıktan sonra sertifikadaki genel anahtara "Gönderenin" genel anahtarı değiştirilmeden güvenilir olabilir *.

"Alıcı" nın "Gönderen" e veri göndermesi gerekiyorsa, verileri "Gönderen" e aktarılan siber metne şifrelemek için güvenilir sertifikadaki ortak anahtarı kullanırlar. Sadece "Gönderenin" özel anahtarı "Gönderenin" genel anahtarıyla şifrelenen şifrelemenin şifresini çözebildiğinden, ortadaki herkesin temelde işe yaramaz bozuk metni vardır.

Belirli durumlarda "Gönderen", kendi KSS'lerini farklı bir anahtar kümesiyle imzalayarak veya aynı anahtar kümesiyle kendi kendine imzalayarak kendi Sertifika Yetkilisini oluşturabilir. Bu durumda, "Gönderenin" açık anahtarının her iki tarafça güvenli bir kanal aracılığıyla bilinmesi gerekir. Yazılımda, teslim edilebilir belgeye güvenilir üçüncü taraf olarak kullanılabilecek bir sertifika ekleyebilirsiniz.

* güvenilir, yalnızca Sertifika Yetkilisi bir CRL (Sertifika İptal Listesi) bulundurursa ve tüm taraflar listeyi izleyerek verilen sertifikanın güvenliğinin ihlal edilmediğinden emin olursa geçerlidir. Sertifika yetkilisinin zarar gördüğü ve özel anahtarın sızdırıldığı durum söz konusudur ve bu durum söz konusu olduğunda, uzlaşmacı ajan "Gönderen" i taklit eden güvenilir bir sertifika oluşturmak için özel anahtarı kullanabilir, bu durumda bir MITM mümkündür ve MITM "Gönderen" şifresini çözer, saklar, saklar, "Gönderen" gibi görünen geçerli bir sertifika ile şifrelenir, sonra bunu "Alıcı" ya iletir.

2

Şifrelenmiş özel anahtarı, oluşturduğunuz CA sertifikasının kopyasından çıkarın (başkalarına verirken). Başka bir ortak anahtar içeren bir sertifikayı imzalamak için kullanmazsanız, özel anahtarın orada olması gerekmez.

Ortak anahtarınız üzerinden gönderirken, bunun yerine ilişkili CA özel anahtarı kullanılarak imzalanmış bir sertifikanın tamamını (özel anahtar hariç) gönderin. İçindeki ortak anahtarın geçerliliğini kontrol etmek için, sertifikanın karmasını şifreli karmaya (CA'nın özel anahtarı kullanılarak şifrelenmiş) karşı kontrol etmeniz gerekir. Bu, CA'nın ortak anahtarı kullanılarak şifresi çözülür. Şifre çözme başarılı olursa ve karma, sertifikanın karma değeriyle eşleşiyorsa, sertifikanın içindeki bilgilere güvenilebilir.

Sadece şifrelemeden daha fazlası da vardır, örneğin bir saldırganın önceden kaydedilmiş şifrelenmiş verileri gönderdiği bir tekrar saldırısı. TLS, ortalama bir insanın düşündüğünden çok daha fazlasını kapsar ve benzer bir sistemin uygulanması kesinlikle önerilmez. Özel olması amaçlanan her şey için mümkün olduğunda TLS kullanın.

0
Jonathan Gray