Score:0

SHA-256 TableSalt ของฉันให้เกลือเมล็ดหรือไม่?

ธง cn

การตั้งค่า

ฉันมีตารางค่าที่ต้องคำนวณ a แฮชเค็ม สำหรับแต่ละโต๊ะ -เซลล์ ค่า. นอกจากนี้ ฉันต้องการเกลือสำหรับแต่ละเซลล์ของตาราง มีเอกลักษณ์ และ คาดการณ์ไม่ได้. (ฉันสามารถอธิบายได้ว่าอะไรกระตุ้นความต้องการนี้ในภายหลัง แต่ตอนนี้ฉันไม่ต้องการหันเหความสนใจจากข้อความระบุปัญหา)

ตอนนี้ฉันไม่ต้องการเพิ่มคอลัมน์พิเศษต่อคอลัมน์ที่มีอยู่ในตารางเพียงเพื่อเก็บเกลือต่อเซลล์ที่ไม่ซ้ำกันนี้ ดังนั้นกลยุทธ์ง่ายๆ ที่ฉันมีอยู่ในใจคือการสร้างลำดับลับ 32 ไบต์แบบสุ่มที่ปลอดภัยสำหรับทั้งตารางก่อน เรียกมันว่า R_32จากนั้นสำหรับเซลล์ใดก็ตามให้คำนวณเกลือเป็น SHA-256 ของ R_32 เชื่อมกับพิกัดแถว/คอลัมน์ของเซลล์ ในรหัสเทียมมีลักษณะเช่นนี้

tableSalt(แถว, col) = SHA_256( R_32 + แถว + col )

ที่ไหน + ที่นี่หมายถึงการต่อข้อมูลแบบไบต์สตริง ไม่ใช่การบวก (พิกัดแถว/คอลัมน์จะแสดงเป็นค่า 8 ไบต์แต่ละตัว)

คำถาม

ในแอปพลิเคชันของฉัน สิ่งสำคัญคือต้องแฮชเมล็ดลับ R_32 ข้างต้นไม่สามารถทำวิศวกรรมย้อนกลับได้ ไม่ว่าจะทราบจำนวนเกลือของเซลล์ที่แตกต่างกันจากตารางเดียวกัน คือ เกลือแกง ขั้นตอนข้างต้นปลอดภัยในส่วนนี้หรือไม่

bk2204 avatar
fr flag
ฉันจะใช้ HMAC ในกรณีนี้เพื่อคำนวณเกลือ จากนั้นใช้เกลือเป็นคีย์สำหรับ HMAC ตัวที่สองเพื่อคำนวณแฮชแบบเค็มของคุณ นั่นจะปลอดภัยแน่นอน และใช้เทคนิคมาตรฐานมากขึ้น ซึ่งจะง่ายต่อการตรวจสอบ
Babak Farhang avatar
cn flag
ข้อกังวลของฉันอยู่ที่จุดอ่อนใด ๆ ที่ทราบใน SHA-256 (การเบี่ยงเบนจากฟังก์ชันแฮชการเข้ารหัส *อุดมคติ*) เมื่อใช้กับส่วนต่อท้ายที่มีความกว้างคงที่ เอนโทรปีต่ำ 16 ไบต์เหล่านั้นไปยังส่วนท้ายด้านบน นั่นสิ ทำให้ฉันกังวล
Meir Maor avatar
in flag
มันอาจจะโอเคเหมือนที่เป็นอยู่ แต่ HMAC ดีกว่า มันจะทำให้แน่ใจได้ว่ามีการผสมที่เพียงพอหลังจากเพิ่มคอร์ดิเนท ทำให้เป็นไปได้ยากที่เกลือต่างๆ จะเกี่ยวข้องกันในลักษณะที่เป็นปัญหา นอกจากนี้ SHA3 ยังดีกว่าในเรื่องนี้อีกด้วย
Score:0
ธง in

ปลอดภัยหรือไม่? ใช่ เนื่องจากในการตั้งค่าพื้นฐานนี้ใช้ในที่อื่น และฉันไม่รู้ว่ามีการโจมตีใด ๆ ที่ใช้งานได้จริง อย่างไรก็ตาม SHA256 ไม่ใช่ตัวเลือกที่ดีที่สุด โครงสร้างพื้นฐานไม่ได้ผสมในส่วนต่อท้ายเช่นเดียวกับที่เราอาจต้องการ โครงสร้าง HMAC หรือเพียงแค่ใช้ SHA3 กับโครงสร้างฟองน้ำจะดีกว่า แต่ตามที่เขียนไว้ ฉันไม่เชื่อว่าเกลือจะเกี่ยวข้องในลักษณะที่ใช้ประโยชน์ได้

Babak Farhang avatar
cn flag
ขอบคุณสำหรับคำตอบ. ฉันมีคะแนนกรรมไม่พอที่จะทำเครื่องหมายคำตอบของคุณ (ค่อนข้างแปลก เนื่องจากเป็นคำถาม *ของฉัน* และฉันได้รับอนุญาตให้โพสต์ได้ :) คุณพูดถึง "โครงสร้างฟองน้ำ" นี้ว่าอะไร นอกจากนี้ เพื่อวัตถุประสงค์ในการ "ผสม" มีประโยชน์มากในการซ้อนการคำนวณเช่นเดียวกับใน Hash(Hash(เนื้อหา + แถว) + คอลัมน์)) หรือไม่
Meir Maor avatar
in flag
คุณสามารถทำเครื่องหมายว่าได้รับการอนุมัติ ด้วยการตรวจสอบแม้ว่าคุณจะไม่สามารถลงคะแนนได้ การซ้อนจะหมายถึงการใช้แฮชแบบเต็มหลังจากเพิ่มแฮชส่วนเอนโทรปีต่ำ (แฮช (เมล็ดหลัก + แถว + คอลัมน์)) สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับโครงสร้าง merkel damgard แต่ SHA3 อาจไม่จำเป็นก็ได้: https://en.m.wikipedia.org/wiki/Sponge_function
Babak Farhang avatar
cn flag
ขอบคุณมากสำหรับลิงก์และตัวชี้เกี่ยวกับความสามารถในการทำเครื่องหมายคำตอบปิดท้าย Re *hash(hash(master seed+row+column))* แทน *hash(hash(master_seed + row) + column)* นั่นพิมพ์ผิดหรือเปล่า เพราะฉันคิดเสมอว่าแฮชของแฮชนั้นไม่ปลอดภัยไปกว่าแฮชดั้งเดิม
Meir Maor avatar
in flag
มันไม่เทียบเท่าเพราะมันได้รับเมล็ดเอนโทรปีสูงผสมอย่างละเอียดมากขึ้น แต่สิ่งที่ฉันเขียน wad ในความเป็นจริงไม่ "ถูกต้อง" / ที่ดีที่สุดมันควรจะเป็นเช่น hmac แฮช (เมล็ดพันธุ์ + แฮช (เมล็ดพันธุ์ + ที่ตั้ง)) แต่เนื่องจากฉันไม่สามารถโจมตีได้แม้แต่สูตรดั้งเดิมของคุณ การปรับปรุงเหล่านี้อาจไม่จำเป็น

โพสต์คำตอบ

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