SSH şifrelemesi nasıl çalışır?


34

İstemci ana bilgisayarda 2 anahtar (özel ve genel) oluşturma ve genel anahtarı sunucu ana bilgisayara kopyalama hakkında okudum.

Anladığım kadarıyla (yanılıyorsam düzelt): Sunucu verileri genel anahtarla şifreliyor ve istemciye gönderiyor, istemci özel anahtarla şifresini çözüyor.

Fakat sunucuya göndermek için istemcideki verileri şifrelemem gerekirse, bu nasıl olur?

Genel anahtar, istemcideki verileri şifreler mi? Ancak, yalnızca ortak anahtara sahipse, sunucu nasıl şifresini çözebilir?

SSH şifrelemesi nasıl çalışır?

Yanıtlar:


35

TCP bağlantısını kurduktan sonra ilk olarak, her iki sistem de DH anahtar değişimi , ECDH veya GSSAPI gibi protokolleri kullanarak bir oturum anahtarı üzerinde hemfikirdir . Bu anahtar simetrik ve geçicidir - her iki taraf da AES veya RC4 gibi algoritmaları kullanarak verileri şifrelemek ve şifresini çözmek için aynı anahtarı kullanır .

İstemci keypair hiçbir zaman verileri şifrelemek için kullanılmaz, yalnızca kimlik doğrulama için kullanılır - "publickey", müşterinin özel anahtar sahipliğinin kanıtı ile birlikte kendi genel anahtarını sunduğu çeşitli yöntemlerden biridir. Benzer şekilde, sunucu tuş takımı yalnızca DH veya ECDH anahtar değişimi sırasında sunucunun kimliğini doğrulamak için kullanılır; hiçbir veri kullanılarak şifrelenmez.

SSH2 protokolü , aşağıdakiler dahil olmak üzere birkaç RFC'de belgelenmiştir :

  • RFC 4253 - Güvenli Kabuk (SSH) Taşıma Katmanı Protokolü
  • RFC 4419 - Diffie-Hellman Grup Değişimi
  • RFC 4432 - RSA Anahtar Değişimi
  • RFC 4462 - GSSAPI Kimlik Doğrulama ve Anahtar Değişimi

13

Anlamanız gerektiğini düşündüğüm ilk şey, SSH ve SSL gibi birçok şifreleme protokolünün kimlik doğrulama amacıyla PKI kullanmasına rağmen, bu sistemlerin hiçbiri aslında yükü aktarmak için PKI kullanmayacak.

PKI, gerçek veri yükü verilerini iletmek için kullanılamayacak kadar yoğun CPU'dur. Olan şey, PKI'nın, simetrik bir şifreleme protokolü ile kullanılmak üzere rastgele oluşturulmuş bir anahtarı müzakere etmek için kullanılmasıdır. Kullanılacak protokol de müzakere edilir ve iki sistemin hemfikir olabileceği en güçlü protokol olmalıdır. Böylece ilk el sıkışma ve müzakere yapıldıktan sonra, hemen hemen her şey sadece standart simetrik şifreleme.


2
Daha fazla okumak için, bu temel olarak RFC4253 , sayfa 15'te açıklanmaktadır .
Ocak'ta slhck

12

İşte bazı pratik örnekler, Anahtar A'nın bir sır olarak saklandığını ve özel anahtar için olduğunu ve B Anahtarının halka açık bir yerde yayınlandığını ve bunun için de genel anahtar olduğunu kabul edin.

Bu nedenle, herkese bir mesaj göndermek istiyorsanız ve sizden geldiğini ve iletilirken değiştirilmediğini doğrulamalarını istiyorsanız, mesajınızı gönderir ve A Anahtarında şifrelenmiş mesajın bir karmasını içerirsiniz. Anahtar B'nin hash şifresini çözebilir, onu aldıkları mesajla karşılaştırabilir ve mesajın sizden geldiğini doğrulayabilirsiniz (yalnızca A Anahtarına sahip bir kişinin başarılı bir şekilde şifreyi çözen şifreli yükü oluşturmuş olması nedeniyle) ve A anahtarına sahip olan sadece siz olabilirler. Buna İmza denir .

Şimdi birisinin size gizli bir mesaj göndermek istediğini ancak kim olduklarını açıklamak istemediğini söyleyelim. Mesajlarını simetrik bir anahtarla şifreleyebilirler (Zoredache'ın simetrikten bahsettiği gibi yapmak daha ucuzdur) o zaman bu anahtarı alıp B Anahtarını kullanarak şifreleyip size gönderebilir. Çünkü yalnızca Anahtar A, Anahtar B ile şifrelenmiş bir şeyin şifresini çözebilir, başka hiçbir kişi size gönderilen mesajda ne olduğunu göremez. Bu, normal şifrelemenin nasıl çalıştığını ve SSH'nin veri alışverişini nasıl gerçekleştirdiğidir.


3

İşte özel-kamu anahtar şifreleme nasıl çalıştığını arkasında matematik nispeten cana açıklamasıdır.

BBC'den daha basit bir açıklama burada .


BBC'ye bu süreci ve tarihin bazılarını açıklayan yeni bir bağlantı ekledim.
Chogg

1

Sen yaz

"Genel anahtar, istemcideki verileri şifreliyor mu? Ancak, yalnızca genel anahtarı varsa, sunucu nasıl şifresini çözebilir?"

Bu konuda fazla bir şey bilmiyorum ama bence oldukça net bir şekilde cevap verebilirim.

A B'ye mesaj göndermek istiyorsa, A B'nin genel anahtarını kullanır. B, bundan sonra şifresini çözebilir.

Eğer A, mesajı şifrelemek için kendi açık anahtarını kullandıysa, gerçekten, B şifresini çözemezdi.

Bu burada açıklanmıştır

http://www.comodo.com/resources/small-business/digital-certificates2.php

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.