Điểm:2

Thuật toán bất đối xứng tốt cho công cụ khóa Java kể từ năm 2021

lá cờ ke

Mặc dù tôi hy vọng sẽ nhận được sự ủng hộ cho thuật ngữ "tốt nhất", nhưng một số thuật toán được nhiều người coi là tốt hơn các thuật toán khác cho tất cả các mục đích cơ bản. Ví dụ, DES không còn được coi là an toàn.

Của tôi cụ thể vấn đề là tôi muốn sử dụng công cụ quan trọng để tạo kho khóa Java, chứa khóa bất đối xứng và không biết sử dụng thuật toán nào. Có một danh sách ở đây: https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher , nhưng nó không đưa ra khuyến nghị - và chứa DES đã nói ở trên, vì vậy chúng không tốt như nhau.

Trên hết, tôi đã thử một vài thứ mà tôi nhận được thông báo "KeyPairGenerator không khả dụng".

Lệnh tôi có để tạo khóa là:

keytool -genkey -keyalg RSA -máy chủ bí danh -keystore selfsigned.jks -validity 1000 -keysize 2048

Điều này có thể tốt, nhưng tôi thực sự không biết cách này hay cách khác.

kelalaka avatar
lá cờ in
Nó không rõ ràng những gì bạn muốn! bạn muốn đối xứng (liên kết) hay không đối xứng (thẻ)? Trên liên kết, AES với khóa 256 bit là lựa chọn rõ ràng.
dave_thompson_085 avatar
lá cờ cn
_Cipher_ bất đối xứng duy nhất được hỗ trợ bởi keystore và keytool, trong Java là RSA (ít nhất là cho đến PQC, và thậm chí có thể sau đó); có một số thuật toán _Signature_ và tôi sẽ cho bạn biết thuật toán 'tốt nhất' sau khi bạn cho chúng tôi biết màu quần áo đẹp nhất để mọi người mặc (tất cả mọi người, ở mọi nơi và mọi lúc, cho mọi mục đích), vì có những màu sắc xấu xí đã biết và do đó logic của bạn phải có chính xác một cái tốt nhất.
Điểm:2
lá cờ in

DES là mật mã đối xứng. Nói chung kho khóa Java chỉ được dùng/dùng được cho các cặp khóa bất đối xứng, và chính xác hơn nữa là các cặp khóa bất đối xứng có chứng chỉ đi kèm để nó trở nên hữu ích. Có, RSA vẫn được coi là một thuật toán tốt, mặc dù tôi khuyên dùng cặp khóa 3072 bit để bảo mật 128 bit.

Lưu ý rằng RSA không phải là bảo mật lượng tử, vì vậy đừng sử dụng nó để bảo mật lâu dài (ví dụ trên 10 năm). Xin lưu ý rằng theo mặc định, Java chỉ sử dụng một phương pháp khá tệ để lấy khóa từ mật khẩu và sau đó là 3DES để bảo vệ chính kho lưu trữ khóa, ngay cả khi kho lưu trữ khóa PKCS#12 được sử dụng. Vì vậy, hãy đảm bảo rằng bạn tự bảo vệ tệp và chọn một mật khẩu mạnh (nghĩa là mật khẩu được tạo bằng trình tạo mật khẩu, ví dụ: một trong cơ sở dữ liệu mật khẩu).

knaccc avatar
lá cờ es
Nhân tiện, nếu bạn muốn sử dụng PBEWithHmacSHA512AndAES_256 thay vì 3DES mặc định để bảo vệ các khóa được lưu trữ trong kho khóa PKCS#12, chúng phải được thêm theo chương trình thay vì sử dụng keytool trên dòng lệnh. Xem https://stackoverflow.com/a/47389384
dave_thompson_085 avatar
lá cờ cn
API kho khóa yêu cầu chứng chỉ cho tính không đối xứng như bạn nói và keytool tạo chứng chỉ tự ký và thuật toán không đối xứng duy nhất (hiện tại) có khả năng mã hóa và chữ ký trực tiếp là RSA; một số thuật toán chỉ chữ ký cũng được hỗ trợ. @knaccc: lỗi thời rồi; kể từ 8u301 (nếu bạn chỉ định loại cửa hàng, pkcs12 không phải là mặc định cho 8) 11.0.12 và 16 trở lên, mặc định cho pkcs12 thực sự là HmacSHA512-AES256; xem ghi chú phát hành. (Và vì điều này sử dụng PBES2 nên không thể đọc được do lỗi ở phiên bản 8 cũ hơn trở xuống và phiên bản 9 và 10 nhưng chúng đã 'chết'.)
knaccc avatar
lá cờ es
@dave_thompson_085 Cảm ơn, thật tuyệt! Tệp java.security rất thú vị. Có vẻ như mặc định trong JDK của tôi là keystore.pkcs12.keyProtectionAlgorithm = PBEWithHmacSHA256AndAES_256 với keystore.pkcs12.keyPbeIterationCount = 10000
Maarten Bodewes avatar
lá cờ in
Có, nhưng 10000 là khá ít và lưu ý rằng PKCS#12 thực sự yêu cầu nhiều lần chạy thuật toán này, dù sao thì lần trước tôi cũng đã xem xét nó. Có lẽ tốt nhất là tăng lên một triệu hoặc hơn nếu bạn không sử dụng mật khẩu được tạo.
kelalaka avatar
lá cờ in
Tôi đã lặp lại 383233 trên Luks và với 4 lõi, họ có thể kiểm tra tối đa 11 mật khẩu mỗi giây với PBKDF2-SHA1.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.