Làm cách nào để sử dụng khóa công khai ssh-rsa để mã hóa văn bản?


55

Vì vậy, kịch bản là: Cho tôi là Bob, tôi muốn mã hóa một số tin nhắn cho Alice. Khóa công khai duy nhất tôi có là ssh-rsaid_rsa.pub của cô ấy như thế này:

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

Vì vậy, có cách nào để mã hóa một chuỗi bằng khóa công khai này để cô ấy có thể sử dụng khóa riêng của mình từ id_rsa(được tạo từ ssh-keygen) để giải mã tin nhắn không?

(Tôi biết rằng có thể ngay lập tức nếu bạn đang sử dụng .pemtệp cặp khóa. Nếu bạn có thể chỉ cho tôi cách chuyển đổi định dạng này sang định dạng opensslhỗ trợ, điều đó cũng rất tuyệt!)

Cảm ơn!


5
Bạn và alice nên thực sự điều tra gpg ... gnupg.org ; D
tink

4
Hahaha, thực sự! Tuy nhiên, kịch bản mà tôi có ở đây là tôi đã có quyền truy cập vào ssh-rsakhóa công khai của họ và tôi không muốn thêm một lớp phức tạp khác (như, yêu cầu người nhận đi cài đặt gpg, v.v.)
sikachu

Câu trả lời:


71

Có thể chuyển đổi khóa công khai ssh của bạn sang định dạng PEM (có thể đọc 'openssl rsautl'):

Thí dụ:

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

Giả sử 'myMessage.txt' là tin nhắn của bạn cần được mã hóa khóa công khai.

Sau đó, chỉ cần mã hóa tin nhắn của bạn bằng openssl rsautl và khóa công khai PEM đã chuyển đổi của bạn như bạn thường làm:

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

Kết quả là tin nhắn được mã hóa của bạn trong 'myEncryptedMessage.txt'

Để kiểm tra công việc của bạn để giải mã bằng khóa riêng của Alice:

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

5
Tôi đã gói nó trong một tập lệnh kéo khóa công khai của người dùng từ GitHub. github.com/twe4ked/catacomb
twe4ked

Điều này không làm việc cho tôi. Tôi ssh-keygenkhông có -mlựa chọn. (Tôi không thể tìm ra cách yêu cầu ssh-keygen cho phiên bản của nó.) Thay thế -mbằng -tcác tác phẩm, nhưng sau đó opensslcho tôi biết "không thể tải Khóa công khai". Xem stackoverflow.com/questions/18285294/ .
Jason Gross

1
Vấn đề tương tự như Jason có trên MaxOS Mavericks. Đã thay thế -m bằng -t để tạo khóa được kích hoạt keygen.
Robert Christian

8
Lưu ý rằng điều này chỉ hoạt động nếu tệp đủ nhỏ. ví dụ 200 byte. Xem stackoverflow.com/questions/7143514/
hy

1
Báo lại những gì @hyh đã nói, điều này chỉ hoạt động nếu tệp đầu vào nhỏ (dòng nằm ở khoảng 254 byte, nếu không, nó sẽ cung cấp "thường trình rsa: RSA_padding_add_SSLv23: dữ liệu quá lớn đối với kích thước khóa: /SourceCache/OpenSSL098/OpenSSL098 2 / src / crypto / rsa / rsa_ssl.c: 73 "lỗi.
Devy

1

Hãy thử ssh-vault, nó sử dụng các khóa công khai ssh-rsa để mã hóa "tạo vault" và khóa riêng ssh-rsa để giải mã "xem nội dung của vault"


-3

Tại sao không làm điều này theo cách siêu rõ ràng mà không yêu cầu cuộn tiền điện tử của riêng bạn.

Alice sftps đến alice@bobserver.com được thiết lập để chỉ cho phép xác thực khóa công khai cho alice tài khoản. Các thuộc tính của ssh độc đáo đảm bảo rằng chỉ có alice mới có thể tự động. Ngay cả một người đàn ông trong cuộc tấn công trung gian cũng thất bại kể từ khi (giả sử bạn vô hiệu hóa ssh1 và khăng khăng cài đặt đúng), giao tiếp ban đầu sử dụng DH tạo ra một giá trị được biết đến cả alice và bob nhưng không phải với bất kỳ người đàn ông nào ở giữa và điều này có thể được sử dụng để xác thực rằng không có trả lời hoặc cuộc tấn công MITM có thể thấy nội dung của giao tiếp.

Vì vậy, có alice sftp vào hộp của bạn và tải tập tin.


9
Làm thế nào là sử dụng openssl lăn tiền điện tử của riêng bạn?
cmc

Ví dụ, sử dụng RSA để mã hóa chuỗi 1024 ký tự sẽ không thành công do kích thước thư. Để khắc phục vấn đề này, người thực hiện đang ở trong một tình huống bấp bênh, đặc biệt là nếu các thông điệp được lặp đi lặp lại. An toàn hơn khi sử dụng RSA để mã hóa khóa mã hóa đối xứng mới và vectơ khởi tạo không thể lặp lại, do đó, hãy tạo văn bản mã hóa duy nhất cho từng tin nhắn được gửi và đạt tốc độ mã hóa đối xứng và giảm số lượng mật mã và văn bản thuần túy để tấn công khóa RSA với. Hy vọng rằng có ý nghĩa. :)
Sam

Phương pháp này yêu cầu Bob tin tưởng Alice hoặc khóa bobserver.com để Alice không thể làm bất cứ điều gì độc hại.
mwfearnley

Theo cách hiểu của riêng bạn, theo nghĩa là alice phải thực hiện một số lượng đáng kể các hoạt động bất thường để giải mã không theo nghĩa toán học cơ bản đang tự mình thực hiện. Vì điều này đã được hỏi về các tiện ích dòng lệnh thay vì API hoặc quan điểm lý thuyết giả định rằng cá nhân thực sự muốn chuyển một số thông tin cụ thể không cõng một giao thức mới trên ssh. Vì thực tế sftp có vẻ dễ dàng hơn nhiều và vâng, nó đòi hỏi phải nhìn xuống máy chủ, tin tưởng Alice hoặc xóa sạch máy chủ sau đó.
Peter Gerdes

Dường như với tôi rằng ở phần trên thực sự dễ bị ai đó chặn email mà bạn giải thích để hiểu chính xác làm thế nào cô ấy có thể giải mã tin nhắn bất thường này và đưa cho cô ấy một chuỗi lệnh thay vì giải mã an toàn tin nhắn MITM của Charlie (các lệnh openssl giống như ma thuật phù hợp với hầu hết) trong khi ý tưởng máy chủ tránh được tất cả những điều này có lợi cho các lệnh tiêu chuẩn mà nhiều người quen thuộc và nếu bob chạy nó từ máy tính, anh ta sẽ mã hóa dù sao anh ta cũng tin tưởng nó. Rõ ràng câu trả lời tốt nhất phụ thuộc vào mô hình mối đe dọa nhưng từ bối cảnh q, điều này có khả năng sẽ phục vụ họ tốt hơn.
Peter Gerdes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.