Bir metni şifrelemek için ssh-rsa ortak anahtarını nasıl kullanılır?


55

Öyleyse, senaryo şudur: Ben Bob olduğum için, Alice için bir mesaj şifrelemek istiyorum. Sahip olduğum tek ortak anahtar onun ssh-rsagibi id_rsa.pub:

SSH-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyb + qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq / 1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZQ0x9TCKHdCANYIOeaniuFzR57POgE3vxk / r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4 / + i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby / KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL + MhWEr01WIIw == sikachu@Sikachus-Notebook.local

Yani, bu ortak anahtarı kullanarak bir dizgiyi şifrelemenin bir yolu var, böylece mesajın şifresini çözmek için özel anahtarını id_rsa(kaynak ssh-keygenkodundan üretilir ) kullanabilir mi?

( .pemAnahtar çifti dosyasını kullanıyorsanız hemen mümkün olduğunu biliyorum . Bunu nasıl openssldestekleyen bir biçime dönüştürebileceğimi gösterebilirseniz , bu da harika olurdu!)

Teşekkürler!


5
Sen ve Alice gerçekten araştırmak gerekir gpg ... gnupg.org ; D
tink

4
Hahaha, gerçekten! Ancak, buradaki senaryo ssh-rsazaten genel anahtarlarına erişime sahip olduğum ve başka bir karmaşıklık katmanı eklemek istemiyorum (alıcıdan
gpg'yi

Yanıtlar:


71

Ssh ortak anahtarınızı PEM formatına dönüştürmek mümkündür ('openssl rsautl' bunu okuyabilir):

Örnek:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

'MyMessage.txt' olduğunu farz etmek, açık anahtar şifreli olması gereken mesajınızdır.

Ardından mesajınızı openssl rsautl ve dönüştürülen PEM ortak anahtarınızla normalde yapacağınız şekilde şifreleyin:

openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt

Sonuç, 'myEncryptedMessage.txt' içindeki şifreli mesajınızdır.

İşinizi Alice'in özel anahtarıyla şifresini çözmek için sınamak için:

openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt

5
Bunu, kullanıcıların genel anahtarını GitHub'dan çeken bir komut dosyasına sardım. github.com/twe4ked/catacomb
twe4ked

Bu benim için çalışmıyor. Benim ssh-keygenbir yok -mseçeneği. Değiştirme (I. Onun sürümü için ssh-keygen sormak anlamaya olamaz) -mile -tişlerin, ama sonra openssl"Public Key yükleyemedi" Beni söyler. Bakınız stackoverflow.com/questions/18285294/… .
Jason Gross,

1
Jason'ın MaxOS Mavericks'teki sorunu da aynı. Keygen etkin anahtar üretimi için -m ile -m değiştirildi.
Robert Christian,

8
Bunun sadece dosya yeterince küçükse işe yaradığını unutmayın. örneğin 200 bayt. Bkz stackoverflow.com/questions/7143514/...
h__

1
@Hyh ne yazıyorsa, bu yalnızca girdi dosyası küçükse çalışır (satır 254 bayt civarındaysa, aksi takdirde "rsa yordamları verir: RSA_padding_add_SSLv23: anahtar boyutu için çok büyük veri: /SourceCache/OpenSSL098/OpenSSL098-52.20. 2 / src / crypto / rsa / rsa_ssl.c: 73 "hatası.
Devy

1

Bir deneyin ssha-tonoz o "kasanın görünümü içeriğini" şifresini ve ssh-rsa özel anahtarı "Bir kubbe oluşturacak" şifrelemek için ssh-rsa genel anahtarları kullanır


-3

Neden bunu kendi şifrelemeni yuvarlamanı gerektirmeyen süper açık bir şekilde yapmıyorsun.

Alice, hesap alice için yalnızca genel anahtar kimlik doğrulamasına izin verecek şekilde ayarlanan alice@bobserver.com adresine yönlendirilir. Ssh'ın özellikleri, yalnızca alice'nin otantikleşebilmesini sağlar. Orta saldırıda bir adam bile başarısız olur (ssh1'i devre dışı bırakıp doğru ayarları ispatladığınızı varsayarsak), DH kullanarak yapılan ilk iletişim hem alice hem de bob tarafından bilinen bir değer yaratır, ancak ortadaki herhangi bir adam için değil ve bu kimlik doğrulamak için kullanılabilir. hiçbir cevap veya MITM saldırısı communicatino içeriğini göremez.

Öyleyse Alice'i kutunun içine sok ve dosyayı indir.


9
Openssl kullanmak kendi şifrenizi nasıl kullanıyor?
cmc

Örnek olarak, 1024 karakterli bir dizgiyi şifrelemek için RSA kullanmak, mesaj boyutundan dolayı başarısız olur. Bu sorunun üstesinden gelmek için uygulayıcı, özellikle mesajlar tekrarlanırsa, güvencesiz bir durumdadır. Tekrarlanması muhtemel olmayan yeni bir simetrik şifre anahtarı ve ilklendirme vektörünü şifrelemek için RSA'yı kullanmak daha güvenlidir, bu nedenle gönderilen hiç mesaj için benzersiz şifre metni oluşturun ve simetrik şifre hızını elde edin ve şifre ve düz metin miktarını azaltın RSA anahtarına saldırmak için. Umarım anlamlı olur. :)
Sam

Bu yöntem Bob'un Alice'e güvenmesini ya da bobserver.com'u kilitlemesini gerektirir, böylece Alice'in kötü niyetli bir şey yapamaması gerekir.
mwfearnley

Bu, sizin alice'nin, altta yatan matematiğin kendinizin yuvarlanması anlamında değil deşifre etmesi için hatırı sayılır miktarda olağandışı işlem yapmak zorunda kalması anlamında kendi yolunuza gitmesidir. Bu, bir API veya teorik bakış açısı yerine komut satırı araçları açısından istendiği gibi, bireyin ssh'nin üstüne yeni bir protokolü geri almamakla ilgili bazı somut bilgileri aktarmak istediğini varsayıyordu. Böyle pratik olarak sftp çok daha kolay görünüyordu ve evet ya sunucuya bakmayı, Alice'e güvenmeyi ya da daha sonra sunucuyu silmeyi gerektiriyor.
Peter Gerdes

Bana göre, yukarıdaki ifadede, bu alışılmadık mesajın şifresini tam olarak nasıl çözebileceğini ve ona Charlie'nin MITM mesajının güvenli bir şekilde şifresini çözen bir komutlar dizisi vermesini açıklayan bir e-postayı ele geçiren birine karşı savunmasız olduğu görülüyor (openssl komutları sihir gibidir) çoğu, aşina olduğu bir şeydir) sunucu fikri, bunların çoğunun aşina olduğu standart komutlar lehine tüm bunları engellerken ve eğer bob, bilgisayardan çalıştırıyorsa, üzerinde şifreleyeceği bir şekilde ona güveniyordur. Açıkçası, en iyi cevap tehdit modeline bağlıdır, ancak q bağlamından bu muhtemelen onlara daha iyi hizmet edecektir.
Peter Gerdes
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.