Score:-1

วิธีอ่านสัญลักษณ์การเข้ารหัส/Hashing

ธง cn

นี่เป็นพื้นฐานมาก แต่สิ่งที่ฉันสงสัยคือ: ฉันมีข้อสังเกตบางประการเกี่ยวกับการเข้ารหัสแบบแฮช/อาร์เอสเอที่ฉันไม่แน่ใจเมื่ออ่าน

PKE(PW, K) ด้วย PW แทนรหัสผ่าน K แทนสตริง 128 บิต และ PKE แทน RSA สิ่งนี้จะถูกตีความอย่างไร ฉันจะรวมสตริงและรหัสผ่านแล้วเข้ารหัสสิ่งนั้นหรืออย่างอื่น?

เช่นเดียวกันสำหรับสิ่งนี้ ssk = H(K,NB,NA) โดยที่ ssk เป็นรหัสลับที่ใช้ร่วมกัน H คืออัลกอริทึม SHA-1 K เหมือนกับด้านบนและ NB และ NA เป็นสตริง 128 บิตแบบสุ่ม

ฉันกำลังพยายามเขียนโค้ดเหล่านี้ใน Python และฉันค่อนข้างติดอยู่กับทฤษฎีที่อยู่เบื้องหลัง

Bean Guy avatar
in flag
คงจะดีมากถ้ารู้ว่าคุณดึงข้อมูลนี้มาจากที่ใด แต่นิพจน์ $PKE(PW, K)$ มักจะหมายถึงการเข้ารหัสข้อความธรรมดา $K$ ด้วยคีย์ส่วนตัว $PW$ ซึ่งในบริบทของ RSA คือ $PW = (p, q, \varphi(n))$ .
fgrieu avatar
ng flag
@Bean Guy: "เข้ารหัสข้อความธรรมดาด้วยคีย์ส่วนตัว" ไม่ถูกต้อง ในการเข้ารหัสแบบอสมมาตร เราต้องการเข้ารหัสด้วยคีย์ _public_ ถอดรหัสด้วยคีย์ส่วนตัว ในการเข้ารหัสแบบอสมมาตร เรายังสามารถลงชื่อด้วยคีย์ส่วนตัวได้ แต่นั่นไม่ใช่การเข้ารหัส
Score:1
ธง si

RSA ไม่ใช้รหัสผ่านเลย สัญกรณ์ไม่ถูกต้อง

RSASSA-PSS ใช้รหัสส่วนตัวและข้อความและสร้างลายเซ็น ลายเซ็นนั้นสามารถตรวจสอบได้โดยใครก็ตามที่มีลายเซ็น ข้อความ และคีย์สาธารณะ

RSAES-OAEP ใช้คีย์สาธารณะและข้อความสั้น (มักจะเป็นคีย์สมมาตร) และเข้ารหัสข้อความนั้น (คีย์สมมาตร) เพื่อให้เฉพาะผู้ที่มีคีย์ส่วนตัวที่เกี่ยวข้องเท่านั้นที่สามารถถอดรหัสได้ สิ่งนี้ไม่ได้ทำมากจริง ๆ เนื่องจากการแลกเปลี่ยนคีย์ ECDH นั้นใช้ทรัพยากรน้อยกว่าและทำได้ง่ายกว่าเล็กน้อยอย่างปลอดภัย

สำหรับส่วนที่สองของคำถามของคุณ ก็ไม่ถูกต้องเช่นกัน SHA-1 ไม่ใช่ฟังก์ชันการรับรหัสที่ปลอดภัย และไม่สามารถใช้เพื่อสร้างรหัสลับที่ใช้ร่วมกันได้อย่างปลอดภัย ฟังก์ชันการสืบทอดคีย์จริง เช่น HKDF หรือ Blake3 ใช้อินพุต 2-4 รายการ: ความยาวไปยังเอาต์พุต (ตัวเลือก บางรายการส่งออกเฉพาะค่า 256 บิต) วัสดุคีย์เริ่มต้นบางส่วน (โดยปกติคือความลับที่ใช้ร่วมกันซึ่งเป็นผลมาจากการแลกเปลี่ยน ECDH) เกลือ (ไม่บังคับ อาจสร้างขึ้นภายใน) และค่าการแยกโดเมน (ใช้เพื่อให้แน่ใจว่าการดำเนินการต่างๆ สามารถมีคีย์ที่แตกต่างกันได้ แม้ว่าจะมีความลับร่วมกันเพียงรายการเดียว)

หากคุณต้องการเข้ารหัสข้อความไปยังคีย์สาธารณะของผู้รับด้วย Python ให้ใช้ โซเดียม และวิธีการ crypto_box หากคุณต้องการเข้ารหัสข้อความโดยใช้รหัสผ่าน ให้ใช้เมธอด crypto_pwhash เพื่อรับคีย์และเมธอด crypto_secretbox สำหรับการเข้ารหัสโดยใช้คีย์ที่ได้รับ

โพสต์คำตอบ

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