Score:3

การเพิ่มข้อความที่รู้จักในการป้อนข้อมูลจะลดความปลอดภัยในการแฮชหรือไม่

ธง cn

ลองนึกภาพว่าฉันต้องการแฮชคีย์ส่วนตัว K (เช่น แฮช (K)) แต่ถ้าฉันแฮชการเชื่อมคีย์ K กับชื่อผู้ใช้ สมมติว่าแฮชต่อไปนี้: แฮช ("john cena" + K )

สมมติว่าทุกคน (แม้แต่แฮ็กเกอร์) รู้ว่า "john cena" ถูกใช้เพื่อทำแฮช มันสามารถช่วยแฮ็กเกอร์ในการย้อนกลับแฮชได้หรือไม่

กล่าวอีกนัยหนึ่งมีความแตกต่างในความปลอดภัยในการทำ แฮช (K) หรือ แฮช ("john cena" + K ) (ที่ทุกคนรู้จัก "john cena")?
เนื่องจากรู้สึกว่าการให้ข้อมูลของอินพุตโดยสัญชาตญาณควรให้ความช่วยเหลือสำหรับการโจมตีประเภทใดก็ได้

kelalaka avatar
in flag
การหลอกลวงที่เกี่ยวข้องกับ [ความรู้ของ SHA256 (ความลับ ⥠ที่ทราบค่าคงที่) นอกเหนือจาก SHA256 (ความลับ) ให้ข้อมูลใดๆ เกี่ยวกับความลับหรือไม่](https://crypto.stackexchange.com/q/66743/18298)
Score:3
ธง fr

มีฟังก์ชันแฮชการเข้ารหัสที่ปลอดภัย ความต้านทานพรีอิมเมจ, ที่ Wikipedia กำหนดด้วยวิธีนี้:

[F] หรือโดยหลักแล้วเป็นเอาต์พุตที่กำหนดไว้ล่วงหน้าทั้งหมด เป็นไปไม่ได้ในทางคำนวณที่จะค้นหาอินพุตใดๆ ที่แฮชไปยังเอาต์พุตนั้น นั่นคือ y เป็นเรื่องยากที่จะหาค่า x ที่ h(x) = y

ซึ่งหมายความว่าสำหรับฟังก์ชันแฮชการเข้ารหัสที่ปลอดภัย วิธีที่มีประสิทธิภาพที่สุดในการพิจารณาอินพุตคือการใช้กำลังดุร้าย ความดุร้ายง่ายเพียงใดขึ้นอยู่กับเอนโทรปีในอินพุต หากคีย์เข้ารหัสของคุณคือ 128 บิต และคุณกำลังใช้ SHA-256 ซึ่งให้การรักษาความปลอดภัย 256 บิตต่อการโจมตีแบบพรีอิมเมจ การโจมตีแบบเดรัจฉานที่ดีที่สุดคือการคาดเดาอินพุต 128 บิต

เมื่อคุณใช้สตริงคงที่ จะไม่เพิ่มเอนโทรปีให้กับแฮช ดังนั้นจึงไม่ทำให้ยากขึ้น แต่ก็ไม่ได้ช่วยให้เดาอินพุตได้ง่ายขึ้น เพราะการเดาอินพุต (ทำการโจมตีแบบพรีอิมเมจ) นั้นไม่น่าจะเป็นไปได้ทางคอมพิวเตอร์

สิ่งหนึ่งที่ควรสังเกตคือ SHA-256 มีความเสี่ยงต่อการโจมตีแบบขยายความยาว ซึ่งผู้โจมตีที่รู้ว่าเอาต์พุตหนึ่งเอาต์พุตสามารถสร้างแฮชที่ถูกต้องซึ่งขึ้นต้นด้วยคำนำหน้าเดียวกันโดยไม่ทราบคำนำหน้านั้น หากสิ่งนี้มีความสำคัญในสถานการณ์ของคุณ ให้ใช้แฮชที่ไม่เสี่ยงต่อสิ่งนี้ เช่น หนึ่งในแฮช SHA-3 หรือ BLAKE2

poncho avatar
my flag
แค่เอาชนะฉันให้ได้...
Loris Foe avatar
cn flag
ขอบคุณสำหรับคำตอบ! แต่ : "เนื่องจาก y มันยากที่จะหา x ที่ h(x) = y" ส่วน "มันยากที่จะหา x" ยังคงเป็นจริงแม้ว่าเราจะรู้ว่า **เป็นส่วนหนึ่งของ x** (the สตริง "john cena") ?
bk2204 avatar
fr flag
ใช่ มันยังคงเป็นความจริง ในทางปฏิบัติ แสดงให้เห็นว่าหากรู้ว่าส่วนหนึ่งของอินพุตทำให้แฮชอ่อนลง ก็จะไม่เป็นไปตามการรับประกันความปลอดภัยอีกต่อไป
za flag
ไม่มีอะไรผิดปกติกับ BLAKE2 แต่มี [ทางเลือกที่ดีกว่า](https://github.com/BLAKE3-team/BLAKE3/blob/master/README.md) อยู่ที่นั่น ^^
bk2204 avatar
fr flag
BLAKE3 นั้นเร็วกว่า แต่โดยส่วนตัวแล้วฉันพบว่ามันค่อนข้างอนุรักษ์นิยมไม่เพียงพอสำหรับความชอบของฉัน และฉันไม่พบการเข้ารหัสในปริมาณที่เพียงพอที่จะเปลี่ยนใจในเรื่องนั้น ด้วยเหตุนี้ฉันจึงเลือกที่จะไม่แนะนำที่นี่
Score:2

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

ก็ใช่ แต่จริงๆแล้วไม่ใช่ ถ้าคุณรู้ว่า h = แฮช ("john cena" + K)แล้วคุณมีข้อมูลเกี่ยวกับพรีอิมเมจของ ชม.. แต่ข้อมูลนั้นก็คือว่ามันเริ่มต้นด้วย "John Cena". ที่ไม่ช่วยในการค้นหา เค.

(อย่างแม่นยำมากขึ้น, ชม. อาจมีพรีอิมเมจหลายตัว และคุณรู้ว่าหนึ่งในพรีอิมเมจเริ่มต้นด้วย เค. นั่นไม่สำคัญจริงๆ เนื่องจากสำหรับฟังก์ชันแฮช คุณจะไม่พบการชนกัน)

ฟังก์ชันแฮชที่ใช้กันทั่วไปจะคำนวณในลักษณะการสตรีมจากซ้ายไปขวา: การคำนวณของ แฮช (P + K) ประกอบด้วยการประมวลผล พีจากนั้นทำการประมวลผล เคและการใช้ฟังก์ชันขั้นสุดท้าย ด้วยการออกแบบการคำนวณนี้ แฮช (P + Ki) สำหรับค่ามากมายของ กี แพงพอๆกับคำนวนเลย กัญชา (Ki)บวกกับการคำนวณเพียงครั้งเดียวในการประมวลผล พี ซึ่งไม่จำเป็นต้องทำซ้ำสำหรับแต่ละคน กี. ในทางกลับกันการคำนวณ แฮช (Ki + S) สำหรับค่ามากมายของ กี ต้องมีการประมวลผล อีกครั้งจึงค่อนข้างแพงกว่าการคำนวณ กี.

โพสต์คำตอบ

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