Score:2

อัลกอริทึมแบบอสมมาตรที่ดีสำหรับ Java keytool ในปี 2021

ธง ke

ในขณะที่ฉันคาดว่าจะได้รับสะเก็ดสำหรับคำว่า "ดีที่สุด" อัลกอริทึมบางอันถือว่าดีกว่าอัลกอริทึมอื่น ๆ อย่างกว้างขวางสำหรับจุดประสงค์ทั้งหมด ตัวอย่างเช่น DES ไม่ถือว่าปลอดภัยอีกต่อไป

ของฉัน โดยเฉพาะ ปัญหาคือฉันต้องการใช้ คีย์ทูล เพื่อสร้างที่เก็บคีย์ Java ที่มีคีย์อสมมาตร และไม่ทราบว่าจะใช้อัลกอริทึมใด มีรายการที่นี่: https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher แต่ไม่ได้ให้คำแนะนำ - และมี DES ดังกล่าว ดังนั้นจึงไม่ได้ดีเท่ากันทั้งหมด

ยิ่งไปกว่านั้น ฉันลองสองสามตัวที่ฉันได้รับ "KeyPairGenerator ไม่พร้อมใช้งาน"

คำสั่งที่ฉันมีสำหรับการสร้างคีย์คือ:

keytool -genkey -keyalg RSA - เซิร์ฟเวอร์นามแฝง -keystore selfsigned.jks -validity 1,000 -keysize 2048

นี่อาจจะใช้ได้ แต่ฉันไม่รู้จริง ๆ ว่าไม่ทางใดก็ทางหนึ่ง

kelalaka avatar
in flag
ไม่ชัดเจนว่าคุณต้องการอะไร! คุณต้องการสมมาตร (ลิงก์) หรืออสมมาตร (แท็ก) ในลิงค์ AES ที่มีคีย์ 256 บิตเป็นตัวเลือกที่ชัดเจน
dave_thompson_085 avatar
cn flag
_Cipher_ แบบอสมมาตรเดียวที่สนับสนุนโดยที่เก็บคีย์และเครื่องมือคีย์ใน Java คือ RSA (อย่างน้อยก็จนถึง PQC และอาจถึงตอนนั้น) มีอัลกอริทึม _Signature_ หลายชุด และฉันจะบอกคุณว่าชุดไหน 'ดีที่สุด' หลังจากที่คุณบอกเราว่าเสื้อผ้าสีไหนดีที่สุดสำหรับผู้คนที่จะสวมใส่ (ทุกคน ทุกที่ และทุกเวลา สำหรับทุกจุดประสงค์) เนื่องจากมีสีที่น่าเกลียดที่ทราบกันดี ตรรกะของคุณจะต้องมีหนึ่งเดียวที่ดีที่สุด
Score:2
ธง in

DES เป็นรหัสสมมาตร โดยทั่วไปที่เก็บคีย์ Java จะใช้ / ใช้งานได้สำหรับคู่คีย์อสมมาตรเท่านั้น และเพื่อให้แม่นยำยิ่งขึ้น คู่คีย์อสมมาตรพร้อมกับใบรับรองที่ให้มาจึงมีประโยชน์ ใช่ RSA ยังถือว่าเป็นอัลกอริทึมที่ดี แม้ว่าฉันจะแนะนำคู่คีย์ 3072 บิตสำหรับการรักษาความปลอดภัย 128 บิต

โปรดทราบว่า RSA ไม่ปลอดภัยเชิงควอนตัม ดังนั้นอย่าใช้เพื่อความปลอดภัยระยะยาว (พูดมากกว่า 10 ปี) โปรดระวังว่าโดยค่าเริ่มต้น Java ใช้วิธีการที่ค่อนข้างแย่ในการรับคีย์จากรหัสผ่าน จากนั้นใช้ 3DES เพื่อป้องกันที่เก็บคีย์ แม้ว่าจะใช้ที่เก็บคีย์ PKCS#12 ก็ตาม ดังนั้น ตรวจสอบให้แน่ใจว่าคุณปกป้องไฟล์เองและเลือกรหัสผ่านที่รัดกุม (เช่น รหัสผ่านที่สร้างขึ้นโดยใช้ตัวสร้างรหัสผ่าน เช่น ฐานข้อมูลรหัสผ่านตัวใดตัวหนึ่ง)

knaccc avatar
es flag
อย่างไรก็ตาม หากคุณต้องการใช้ PBEWithHmacSHA512AndAES_256 แทน 3DES เริ่มต้นเพื่อป้องกันคีย์ที่จัดเก็บไว้ในที่เก็บคีย์ PKCS#12 จะต้องเพิ่มคีย์เหล่านี้ทางโปรแกรมแทนที่จะใช้ keytool ในบรรทัดคำสั่ง ดู https://stackoverflow.com/a/47389384
dave_thompson_085 avatar
cn flag
API ของที่เก็บคีย์ต้องการใบรับรองสำหรับอสมมาตรตามที่คุณพูด และ keytool สร้างใบรับรองที่ลงนามเอง และอัลกอริทึมอสมมาตรเดียว (ปัจจุบัน) ที่สามารถเข้ารหัสโดยตรงและลายเซ็นคือ RSA รองรับอัลกอริธึมเฉพาะลายเซ็นหลายตัว @knaccc: ล้าสมัย; ตั้งแต่ 8u301 (หากคุณระบุประเภทร้านค้า pkcs12 จะไม่ใช่ค่าเริ่มต้นสำหรับ 8) 11.0.12 และ 16 ขึ้นไป ค่าเริ่มต้นสำหรับ pkcs12 คือ HmacSHA512-AES256 ดูบันทึกประจำรุ่น (และเนื่องจากสิ่งนี้ใช้ PBES2 จึงไม่สามารถอ่านได้เนื่องจากข้อผิดพลาดใน 8 รุ่นเก่าและต่ำกว่า และ 9 และ 10 แต่ 'ตาย')
knaccc avatar
es flag
@dave_thompson_085 ขอบคุณ เยี่ยมมาก! ไฟล์ java.security นั้นน่าสนใจมาก ดูเหมือนว่าค่าเริ่มต้นใน JDK ของฉันคือ keystore.pkcs12.keyProtectionAlgorithm = PBEWithHmacSHA256AndAES_256 กับ keystore.pkcs12.keyPbeIterationCount = 10,000
Maarten Bodewes avatar
in flag
ใช่ แต่ 10,000 นั้นค่อนข้างน้อย และโปรดทราบว่า PKCS#12 ต้องใช้อัลกอริทึมนี้หลายครั้ง คราวที่แล้วฉันก็ดูมันอยู่ดี อาจดีที่สุดที่จะเพิ่มเป็นล้านหรือมากกว่านั้นหากคุณไม่ได้ใช้รหัสผ่านที่สร้างขึ้น
kelalaka avatar
in flag
ฉันทำซ้ำ 383233 บน Luks และด้วย 4 คอร์ พวกเขาสามารถทดสอบได้สูงสุด 11 รหัสผ่านต่อวินาทีด้วย PBKDF2-SHA1

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา