Làm thế nào, nếu tất cả, các khóa SSH khác với các khóa bất đối xứng được sử dụng cho các mục đích khác?


13

Làm thế nào, nếu tất cả, các khóa SSH khác với các khóa bất đối xứng được sử dụng cho các mục đích khác, ví dụ như ký email?

Tôi được nhắc hỏi điều này, một phần, bởi vì trên OS X, có sẵn các ứng dụng để quản lý các khóa SSH (ssh-agent, SSHKeychain, v.v.) cũng như các ứng dụng được thiết kế để quản lý các khóa GPG (GPG Keychain Access, v.v.), và dường như ne'er twain gặp nhau. Tuy nhiên, tôi không tin rằng đây là sự cố dành riêng cho OS X.

Là sự phân tách mối quan tâm này bởi vì các khóa có các loại khá khác nhau, hoặc vì chúng được lưu trữ ở những nơi khác nhau, hoặc vì một số lý do khác hoặc sự kết hợp của các lý do, ví dụ như lý do lịch sử?

Câu trả lời:


14
  • Các khóa SSH chỉ là các cặp khóa bất đối xứng RSA, DSA hoặc ECDSA. Một cặp khóa như vậy được tạo bởi OpenSSH có thể đã được OpenSSL và hầu hết các chương trình khác sử dụng.

    (Đầu .pubra tệp theo ssh-keygenđịnh dạng dành riêng cho OpenSSH, nhưng điều đó không liên quan vì tệp "riêng tư" đã chứa cả khóa riêng và khóa chung.)

    Phần mềm SSH khác có thể có các định dạng lưu trữ riêng của họ, chẳng hạn như RFC 4716 hoặc PuTTY của PPK , nhưng họ lưu trữ các RSA / thông tin tương tự DSA / ECDSA.

  • X.509 (được sử dụng bởi SSL, S / MIME) phức tạp hơn một chút: khóa "riêng tư" vẫn giống nhau, nhưng thay vì tệp khóa công khai trần, bạn có "chứng chỉ" - cấu trúc ASN.1 chứa khóa công khai, chủ đề và tên nhà phát hành, ngày hiệu lực. Trong chứng chỉ X.509 v3, các tiện ích mở rộng như "sử dụng khóa" và "tên chủ đề thay thế" sẽ xuất hiện. Toàn bộ chứng chỉ được ký bởi khóa của nhà phát hành (hoặc tự ký nếu không có nhà phát hành riêng).

    Bạn có thể dễ dàng sử dụng tệp "khóa riêng" X.509 cho SSH - OpenSSH thậm chí sử dụng cùng định dạng.

    Bạn có thể tạo chứng chỉ X.509 từ một cặp khóa đơn giản và sau đó tự ký hoặc bạn có thể tạo "yêu cầu chứng chỉ" và gửi nó để được ký bởi CA (cơ quan chứng nhận).

    Để hiển thị thông tin trong chứng chỉ X.509, hãy sử dụng:

    certtool -i < foo.pem
    certtool -i --inder < foo.crt
    
    openssl x509 -noout -text < foo.pem
    openssl x509 -noout -text -inform der < foo.crt
    

    ( certtoollà một phần của GnuTLS.)

  • Các khóa OpenPGP (được sử dụng bởi GPG) là phức tạp nhất. Những gì bạn gọi là "khóa PGP" hoặc "khóa PGP" là một cấu trúc phức tạp được gọi là "chứng chỉ OpenPGP", chứa:

    • một "khóa chính" - một cặp khóa bất đối xứng, thường được sử dụng để ký
    • một hoặc nhiều "ID người dùng" - nhãn văn bản, thường ở dạng "Tên <email @ địa chỉ>"
      • ít nhất một trong số chúng được đánh dấu là "ID người dùng chính"
      • đối với mỗi ID người dùng, "chữ ký tự" - chữ ký bằng khóa chính của riêng bạn
      • đối với mỗi ID người dùng, không có hoặc nhiều "chữ ký" của người dùng khác
      • các gói tự ký cũng chứa các thuật toán ưa thích của bạn (SHA-1, AES, v.v.)
    • một hoặc nhiều "khóa con" - cặp khóa bổ sung, đầu tiên thường là để mã hóa
      • đối với mỗi khoá con, chữ ký của khóa chính
    • không hoặc nhiều "ID ảnh" - Tệp đính kèm JPEG hoặc PNG chứa khuôn mặt của bạn
      • đã ký giống như ID người dùng
    • 0 hoặc nhiều chứng chỉ X.509

    Tất cả các khóa đều có ngày hết hạn và bit sử dụng: dữ liệu ký, khóa xác nhận (ký), mã hóa, xác thực dịch vụ. Khóa chính theo mặc định có các bit "ký" và "xác nhận" và khóa con đầu tiên là "mã hóa". Nếu bạn thêm khóa con "xác thực", bạn có thể sử dụng nó thông qua gpg-agentxác thực SSH.

    Để xem chứng chỉ của bạn chứa gì:

    gpg --export joe@example.com | gpg -vv
    
    gpg --export joe@example.com | certtool --pgp-certificate-info
    

    ( certtoollà một phần của GnuTLS.)


Chứng chỉ X.509 và các khóa riêng được liên kết của chúng có nhiều định dạng:

  • DER là mã hóa nhị phân của cấu trúc ASN.1 của chứng chỉ. Các tệp như vậy thường có .crthoặc .cerphần mở rộng tên tệp ( .derít phổ biến hơn nhưng không nhìn thấy).

  • Các tệp định dạng "PEM" chứa cùng một dữ liệu được mã hóa DER, nhưng được mã hóa bổ sung bằng Base64 và giữa các tiêu đề "BEGIN NÀY" và "END THAT". Một phần mở rộng tên tệp phổ biến là .pem, mặc dù cả hai .crt.cerđôi khi cũng được sử dụng ở đây (nhưng không bao giờ .der).

  • Đối với các khóa riêng thuộc chứng chỉ, định dạng "PEM" thường được sử dụng - Base64 được bao quanh bởi các tiêu đề "BEGIN PRIVATE KEY" (khóa trong cấu trúc PKCS # 7) hoặc "BEGIN RSA (hoặc DSA) PRIVATE KEY" (khóa trần, OpenSSL định dạng). Đôi khi khóa nằm trong một .keytệp riêng biệt , đôi khi nó đi kèm với chứng chỉ.

  • PKCS # 12PFX cũ hơn một chút là các thùng chứa được mã hóa lưu trữ cả chứng chỉ và khóa riêng (thường là chứng chỉ của nhà phát hành). Định dạng này được sử dụng bởi hầu hết các phần mềm khi xuất hoặc "sao lưu" chứng chỉ bằng khóa riêng.

Một tình huống ít gây nhầm lẫn hơn là trong OpenPGP: tất cả dữ liệu tuân theo cùng định dạng nhị phân và được tùy chọn "bọc thép" (được mã hóa bằng Radix64 và giữa các tiêu đề giống như PEM).


2

Được lưu trữ ở những nơi khác nhau và ở các định dạng khác nhau (các định dạng được sử dụng bởi PGP, GnuPG sshvà một số định dạng X.509 khác nhau, trong số các định dạng khác, khá khác nhau). Có thể chuyển mã giữa họ trong chừng mực nào bằng cách trộn và phù hợp với các tùy chọn quyền ssh-keygen, pgp, gpg/ gpg2, openssl, vv .; nhưng nói chung nó không đáng để nỗ lực. Ngoài ra, các định dạng khóa khác nhau hỗ trợ lượng thông tin khác nhau, vớisshmang ít thông tin nhất và các định dạng X.509 PEM và DER mang nhiều nhất. Ngoài ra, OSX Keychain chỉ đơn giản là lưu trữ khóa / giá trị được mã hóa, do đó, mỗi ứng dụng thường cần một cơ chế khác nhau để chuyển đổi giữa định dạng siêu dữ liệu + khóa gốc của chương trình và thứ gì đó có thể được lưu trữ trong Keychain. (Những lo ngại tương tự áp dụng cho ví KDE và móc khóa Gnome.)


Điều quan trọng cần lưu ý là tiêu chuẩn mã hóa cơ bản cũng khác nhau. gpg chủ yếu sử dụng DSA, trong khi SSH chủ yếu sử dụng RSA. Có một số lượng hạn chế các tiêu chuẩn bất đối xứng tiêu chuẩn và hầu hết các ứng dụng hỗ trợ nhiều tiêu chuẩn, nhưng các tiêu chuẩn 'bình thường' cho các ứng dụng khác nhau thì khác nhau.
jcrawfordor
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.