it-swarm-vi.com

Bảo mật của khóa riêng được bảo vệ bằng mật khẩu

Nếu kẻ tấn công có được khóa riêng được tạo mà không có cụm mật khẩu, rõ ràng anh ta có quyền truy cập vào mọi thứ được bảo vệ bằng khóa đó. Các khóa riêng tư được thiết lập an toàn như thế nào với cụm mật khẩu? Nếu kẻ tấn công đánh cắp khóa được bảo vệ bằng mật khẩu, việc xâm phạm khóa đó khó đến mức nào? Nói cách khác, một khóa riêng có cụm mật khẩu tốt có an toàn ngay cả khi kẻ tấn công truy cập không?

45
jrdioko

Với OpenSSL, OpenSSH và GPG/PGP, thuật toán gói sẽ đủ mạnh để bạn không phải lo lắng về điều đó (và nếu bạn cần phải lo lắng về điều đó thì bạn sẽ gặp vấn đề lớn hơn và đây là vấn đề ít lo lắng nhất của bạn) .

Giống như bất kỳ mật khẩu hoặc cụm mật khẩu, nó phụ thuộc vào độ mạnh của cụm mật khẩu. Cụm mật khẩu 40 ký tự khó bắt buộc như khóa 256 bit (vì ASCII chỉ sử dụng 7 bit). Các quy tắc tương tự cho mật khẩu mạnh được áp dụng tại đây:

  • Ngẫu nhiên là tốt hơn
  • Càng dài càng mạnh
24
bahamat

Khi một khối dữ liệu được mã hóa nằm trong tay kẻ tấn công, nó sẽ không bao giờ được bảo mật mãi mãi - đó là câu hỏi về thời gian và phương tiện khả dụng trong bao lâu bẻ khóa nó.

Đây là những điều cần xem xét:

  • sức mạnh của thuật toán gói - Tôi sẵn sàng tin bahamat về OpenSSL, OpenSSH và GPG/PGP - đây là những thành phần được đánh giá khá tốt.

  • kích thước của không gian khóa - tức là - kích thước và độ phức tạp của mật khẩu - áp dụng chi phí điển hình cho việc đoán bạo lực. Lưu ý, một số dạng lưu trữ khóa giới hạn các loại ký tự có thể được sử dụng trong mật khẩu - ví dụ: JKS (the Java Key Store) đã loại bỏ khá nhiều ký tự đặc biệt, làm giảm tiềm năng kích thước của không gian khóa. Cũng nên cảnh giác với các hệ thống cắt kích thước khóa thành một số ký tự nhất định.

  • chi phí của nỗ lực nó đắt đến mức nào khi cố gắng mở khóa? Điều đó sẽ làm chậm nỗ lực vũ phu.

  • thuật toán nào? - phụ thuộc vào cách lưu trữ tệp bảo mật - rõ ràng thuật toán nào được sử dụng để mã hóa?

  • có văn bản mật mã có sẵn để so sánh với? làm thế nào kẻ tấn công biết mình thành công - cơ chế thử nghiệm của anh ta là gì? Một trong những yếu tố mạnh mẽ hơn trong việc chiếm giữ kho lưu trữ khóa là kẻ tấn công có thể kiểm tra các nỗ lực của mình mà không bị hệ thống lưu trữ khóa phát hiện thêm.

  • có bao nhiêu tài nguyên theo ý của kẻ tấn công? - nói chung phân tích mối đe dọa liên quan đến việc phân tích tài nguyên của kẻ tấn công là gì. Anh ấy có 1 máy tính không? Một ngân hàng của máy tính? Và toàn bộ mạng lưới virus của CPU bị đánh cắp theo ý của mình? Phụ thuộc vào việc bạn đang nói về kịch bản trẻ em 13 tuổi bên cạnh hay một quốc gia bất hảo.

  • mất bao lâu cho đến khi khóa được thay đổi? & dữ liệu phải được bảo vệ trong bao lâu? - nếu kẻ tấn công mất nhiều thời gian hơn để bẻ khóa lưu trữ mật khẩu so với tính hữu ích của dữ liệu bên trong cửa hàng, sau đó cửa hàng được coi là an toàn đủ

15
bethlakshmi

Theo Martin Kleppmann :

bảo vệ khóa riêng [mặc định OpenSSH] có hai điểm yếu:

  • Thuật toán digest được mã hóa cứng là MD5, có nghĩa là không thay đổi định dạng, không thể nâng cấp lên hàm băm khác (ví dụ: SHA-1). Đây có thể là một vấn đề nếu MD5 hóa ra không đủ tốt.
  • Hàm băm chỉ được áp dụng một lần --- không kéo dài. Đây là một vấn đề vì MD5 và AES đều nhanh chóng để tính toán, và do đó một cụm mật khẩu ngắn khá dễ bị phá vỡ bằng vũ lực.

Nếu khóa SSH riêng của bạn bị trao nhầm [và nếu nó được bảo vệ bằng cụm mật khẩu bằng cài đặt OpenSSH mặc định và nếu] cụm mật khẩu của bạn là một từ điển, thì có thể nó sẽ được giải mã trong vài giây. ... Nhưng có một tin tốt: bạn có thể nâng cấp lên định dạng khóa riêng an toàn hơn và mọi thứ vẫn tiếp tục hoạt động!

Sau đó, anh tiếp tục giải thích cách sử dụng "PKCS # 8" theo RFC 5208 để có được khóa riêng được mã hóa an toàn hơn:

$ mv test_rsa_key test_rsa_key.old
$ openssl pkcs8 -topk8 -v2 des3 \
    -in test_rsa_key.old -passin 'pass:super secret passphrase' \
    -out test_rsa_key -passout 'pass:super secret passphrase'
7
sampablokuper

Mã hóa khóa riêng OpenSSH có dễ bị tấn công không?

Việc bảo vệ khóa riêng bằng cụm mật khẩu cần được thực hiện cẩn thận, như thường xảy ra trong các vấn đề về tiền điện tử. Nói chung, cách tiếp cận là mã hóa khóa riêng bằng thuật toán đối xứng bằng cách sử dụng khóa xuất phát từ cụm mật khẩu thông qua chức năng phái sinh khóa. Một ví dụ kinh điển về chức năng phái sinh khóa phù hợp là PBKDF2 từ RFC 2898 - PKCS # 5: Đặc tả mật mã dựa trên mật khẩu Phiên bản 2. .

Theo Colin Percival's trình bày về tiền điện tử , "OpenSSH sử dụng MD5 làm hàm dẫn xuất chính cho cụm mật khẩu trên khóa fi les". Từ bối cảnh, có vẻ như anh ta nói rằng họ không sử dụng muối hoặc lặp đi lặp lại, điều đáng sợ là ngày nay vũ lực bắt buộc nhanh như thế nào. Có một vài định dạng khác nhau mà OpenSSH sử dụng để lưu trữ khóa riêng tư, vì vậy tôi muốn biết thêm một số chi tiết và chính xác phiên bản nào bị ảnh hưởng, nhưng nghe có vẻ khác xa so với PBKDF2 hoặc khác kỹ thuật lặp đi lặp lại, muối đã có từ năm 1978 .

Tôi thấy một tài liệu tham khảo cho rằng PGP và GPG sử dụng các kỹ thuật lặp/kéo dài khi bảo vệ khóa riêng được lưu trong tệp, nhưng một lần nữa không biết chi tiết.

4
nealmcb