คำถามติดแท็ก salt

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

10
รหัสผ่านเกลือช่วยต่อต้านการโจมตีบนโต๊ะสีรุ้งได้อย่างไร?
ฉันมีปัญหาในการเข้าใจวัตถุประสงค์ของเกลือเป็นรหัสผ่าน ฉันเข้าใจว่าการใช้งานหลักคือขัดขวางการโจมตีของตารางสายรุ้ง อย่างไรก็ตามวิธีการที่ฉันใช้ในการดำเนินการนี้ดูเหมือนจะไม่ทำให้ปัญหาหนักขึ้น ฉันเคยเห็นแบบฝึกหัดมากมายที่แนะนำว่าเกลือถูกใช้ดังนี้: $hash = md5($salt.$password) เหตุผลที่แฮชตอนนี้แมปไม่ใช่รหัสผ่านดั้งเดิม แต่เป็นการรวมกันของรหัสผ่านและเกลือ แต่พูด$salt=fooและและ$password=bar $hash=3858f62230ac3c915f300c664312c63fตอนนี้ใครบางคนที่มีตารางสายรุ้งสามารถย้อนแฮชและสร้างอินพุต "foobar" จากนั้นพวกเขาสามารถลองใช้รหัสผ่านทั้งหมด (f, fo, foo, ... oobar, obar, bar, ar, ar) อาจใช้เวลาสองสามมิลลิวินาทีในการรับรหัสผ่าน แต่ไม่มากนัก การใช้งานอื่นที่ฉันเห็นอยู่ในระบบ Linux ของฉัน ใน / etc / shadow รหัสผ่านที่ถูกแฮชจะถูกเก็บไว้พร้อมกับเกลือ ยกตัวอย่างเช่นเกลือของ "foo" และรหัสผ่านของ "บาร์" $1$foo$te5SBM.7C25fFDu6bIRbX1จะสับไปนี้: หากแฮ็กเกอร์สามารถใช้มือของเขากับไฟล์นี้ได้ฉันไม่เห็นว่าจุดประสงค์ของเกลือte5SBM.7C25fFDu6bIRbXคืออะไร ขอบคุณสำหรับทุก ๆ แสงที่สามารถหลั่งออกมาได้ แก้ไข : ขอบคุณสำหรับความช่วยเหลือ เพื่อสรุปสิ่งที่ฉันเข้าใจเกลือทำให้รหัสผ่านที่แฮชมีความซับซ้อนมากขึ้นดังนั้นจึงมีโอกาสน้อยมากที่จะได้อยู่ในตารางรุ้งที่คำนวณไว้ล่วงหน้า สิ่งที่ฉันเข้าใจผิดมาก่อนคือฉันคิดว่ามีตารางรุ้งสำหรับแฮชทั้งหมด

1
ฉันต้องเก็บเกลือด้วย bcrypt หรือไม่?
javadoc ของ bCryptมีรหัสนี้สำหรับวิธีการเข้ารหัสรหัสผ่าน: String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); ในการตรวจสอบว่ารหัสผ่านแบบธรรมดานั้นตรงกับรหัสผ่านที่แฮชก่อนหน้านี้หรือไม่ให้ใช้วิธีการ checkpw: if (BCrypt.checkpw(candidate_password, stored_hash)) System.out.println("It matches"); else System.out.println("It does not match"); ตัวอย่างโค้ดเหล่านี้บอกฉันว่าเกลือที่สร้างขึ้นแบบสุ่มถูกโยนทิ้งไป เป็นกรณีนี้หรือเป็นเพียงข้อมูลโค้ดที่ทำให้เข้าใจผิด?

14
รหัสผ่านแฮและเกลือใน C #
ฉันเพิ่งจะผ่านหนึ่งในบทความของ DavidHayden เมื่อ Hashing รหัสผ่านของผู้ใช้ จริงๆฉันไม่สามารถรับสิ่งที่เขาพยายามบรรลุ นี่คือรหัสของเขา: private static string CreateSalt(int size) { //Generate a cryptographic random number. RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] buff = new byte[size]; rng.GetBytes(buff); // Return a Base64 string representation of the random number. return Convert.ToBase64String(buff); } private static string CreatePasswordHash(string pwd, string salt) { …
178 c#  hash  passwords  salt 

6
ฉันจะเก็บรหัสผ่านของผู้ใช้อย่างปลอดภัยได้อย่างไร
สิ่งนี้ปลอดภัยกว่าMD5ธรรมดาแค่ไหน ฉันเพิ่งเริ่มมองหาการรักษาความปลอดภัยรหัสผ่าน ฉันค่อนข้างใหม่กับ PHP $salt = 'csdnfgksdgojnmfnb'; $password = md5($salt.$_POST['password']); $result = mysql_query("SELECT id FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '$password'"); if (mysql_num_rows($result) < 1) { /* Access denied */ echo "The username or password you entered is incorrect."; } else { $_SESSION['id'] = mysql_result($result, 0, 'id'); …

8
การเกลือรหัสผ่านของคุณ: แนวทางปฏิบัติที่ดีที่สุด
ฉันสงสัยอยู่เสมอ ... จะดีไปกว่ากันถ้าหากฉันใส่รหัสผ่านสำหรับการแฮช: คำนำหน้าหรือ postfix? ทำไม? หรือมันมีความสำคัญตราบใดที่คุณเค็ม? ที่จะอธิบาย: เราทุกคน (หวังว่า) ทราบโดยขณะนี้ว่าเราควรเกลือรหัสผ่านก่อนที่เราจะสับมันสำหรับการจัดเก็บในฐานข้อมูล [ แก้ไข:ดังนั้นคุณสามารถหลีกเลี่ยงสิ่งที่ชอบสิ่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้เจฟฟ์แอด ] โดยทั่วไปจะทำโดยการต่อเกลือกับรหัสผ่านก่อนที่จะผ่านอัลกอริทึมการแปลงแป้นพิมพ์ แต่ตัวอย่างแตกต่างกันไป ... บางตัวอย่างเสริมเกลือก่อนรหัสผ่าน ตัวอย่างบางส่วนเพิ่มเกลือหลังจากรหัสผ่าน ฉันเคยเห็นบางคนพยายามวางเกลือไว้ตรงกลาง ดังนั้นวิธีใดดีกว่าและทำไม มีวิธีที่ลดโอกาสของการชนกันของแฮชหรือไม่? Googling ของฉันไม่ได้เปิดการวิเคราะห์ที่ดีในเรื่อง แก้ไข:คำตอบที่ยอดเยี่ยม folks! ฉันขอโทษฉันเลือกได้เพียงคำตอบเดียว :)

4
วิธีปฏิบัติที่ดีที่สุด: การเกลือ & การสร้างรหัสผ่านซ้ำซ้อน?
ฉันได้พบกับการสนทนาที่ฉันได้เรียนรู้ว่าสิ่งที่ฉันทำไม่ได้ในความเป็นจริงการใส่เกลือรหัสผ่าน แต่ทำให้พวกเขาวุ่นวายและฉันก็เริ่มทำทั้งสองอย่างด้วยฟังก์ชั่นเช่น: hash_function($salt.hash_function($pepper.$password)) [multiple iterations] ไม่สนใจอัลกอริทึมแฮชที่เลือก (ฉันต้องการให้นี่เป็นการอภิปรายของเกลือ & พริกไทยและไม่ใช่อัลกอริทึมเฉพาะ แต่ฉันใช้ secure one), นี่เป็นตัวเลือกที่ปลอดภัยหรือฉันควรทำสิ่งที่แตกต่างกันหรือไม่? สำหรับผู้ที่ไม่คุ้นเคยกับข้อกำหนด: เกลือเป็นค่าที่สร้างแบบสุ่มมักจะเก็บไว้กับสตริงในฐานข้อมูลได้รับการออกแบบที่จะทำให้มันเป็นไปไม่ได้ที่จะใช้ตารางแฮชจะ crack รหัสผ่าน เนื่องจากรหัสผ่านแต่ละอันมีเกลือเป็นของตัวเองพวกเขาทุกคนจะต้องถูกบังคับให้ดุร้ายเป็นรายบุคคลเพื่อที่จะถอดรหัสพวกเขา อย่างไรก็ตามเนื่องจากเกลือถูกเก็บไว้ในฐานข้อมูลด้วยรหัสผ่านแฮชการประนีประนอมฐานข้อมูลหมายถึงการสูญเสียทั้งสองอย่าง พริกไทยเป็นค่าคงที่ทั่วทั้งไซต์จัดเก็บแยกต่างหากจากฐานข้อมูล (โดยปกติจะกำหนดค่าตายตัวในรหัสที่มาของโปรแกรม) ซึ่งมีวัตถุประสงค์เพื่อเป็นความลับ มันถูกใช้เพื่อให้การประนีประนอมของฐานข้อมูลจะไม่ทำให้ตารางรหัสผ่านของแอปพลิเคชันทั้งหมดสามารถใช้งานได้อย่างดุร้าย มีอะไรที่ฉันขาดหายไปและการล้างรหัสผ่านของฉันเป็นทางเลือกที่ดีที่สุดในการป้องกันความปลอดภัยของผู้ใช้ มีข้อบกพร่องด้านความปลอดภัยที่เป็นไปได้ที่จะทำเช่นนี้? หมายเหตุ: สมมติว่ามีวัตถุประสงค์เพื่อการสนทนาที่เก็บแอปพลิเคชัน & ฐานข้อมูลไว้ในเครื่องที่แยกต่างหากอย่าแชร์รหัสผ่าน ฯลฯ ดังนั้นการละเมิดเซิร์ฟเวอร์ฐานข้อมูลจึงไม่ได้หมายถึงการละเมิดแอพพลิเคชันเซิร์ฟเวอร์โดยอัตโนมัติ

5
ความยาวที่เหมาะสมที่สุดสำหรับเกลือรหัสผ่านผู้ใช้คืออะไร? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เห็นได้ชัดว่าเกลือใด ๆจะช่วยในการล้างเกลือและแฮชรหัสผ่านของผู้ใช้ มีแนวทางปฏิบัติที่ดีที่สุดสำหรับระยะเวลาที่เกลือควรมีหรือไม่? ฉันจะเก็บเกลือไว้ในตารางผู้ใช้ของฉันดังนั้นฉันจึงต้องการการแลกเปลี่ยนที่ดีที่สุดระหว่างขนาดพื้นที่จัดเก็บและความปลอดภัย เกลือ 10 ตัวแบบสุ่มเพียงพอหรือไม่? หรือฉันต้องการอะไรอีกต่อไป?
129 encryption  hash  salt 

7
วิธีใช้ password_hash ของ PHP เพื่อแฮชและยืนยันรหัสผ่าน
เมื่อเร็ว ๆ นี้ฉันได้พยายามใช้การรักษาความปลอดภัยของตัวเองบนสคริปต์การเข้าสู่ระบบที่ฉันพบบนอินเทอร์เน็ต password_hashหลังจากที่ดิ้นรนพยายามที่จะเรียนรู้วิธีที่จะทำให้สคริปต์ของตัวเองในการสร้างเกลือสำหรับผู้ใช้แต่ละคนที่ผมเจอ จากสิ่งที่ฉันเข้าใจ (ตามออกของการอ่านในหน้านี้ ) password_hashเกลือจะถูกสร้างขึ้นแล้วในแถวเมื่อคุณใช้ นี่คือเรื่องจริง? อีกคำถามหนึ่งที่ฉันมีคือจะไม่ฉลาดที่จะมี 2 เกลือ? หนึ่งโดยตรงในไฟล์และหนึ่งใน DB? ด้วยวิธีนี้หากมีคนประนีประนอมเกลือของคุณในฐานข้อมูลคุณยังมีอยู่ในไฟล์โดยตรงหรือไม่? ฉันอ่านที่นี่ว่าการเก็บเกลือไม่ใช่ความคิดที่ชาญฉลาด แต่ทำให้ฉันสับสนอยู่เสมอว่าผู้คนหมายถึงอะไร

8
เกลือและแฮชรหัสผ่านใน Python
รหัสนี้ควรจะแฮชรหัสผ่านด้วยเกลือ กำลังบันทึกเกลือและรหัสผ่านที่แฮชไว้ในฐานข้อมูล รหัสผ่านไม่ได้ ด้วยลักษณะที่ละเอียดอ่อนของการดำเนินการฉันต้องการให้แน่ใจว่าทุกอย่างเป็นโคเชอร์ import hashlib import base64 import uuid password = 'test_password' salt = base64.urlsafe_b64encode(uuid.uuid4().bytes) t_sha = hashlib.sha512() t_sha.update(password+salt) hashed_password = base64.urlsafe_b64encode(t_sha.digest())

11
เหตุใดยาดมจึงทำให้การโจมตีด้วยพจนานุกรมเป็นไปไม่ได้
อัปเดต: โปรดทราบว่าฉันไม่ได้ถามว่าเกลือคืออะไรตารางสายรุ้งคืออะไรการโจมตีตามพจนานุกรมคืออะไรหรือวัตถุประสงค์ของเกลือคืออะไร ฉันกำลังสอบถาม: หากคุณรู้จักผู้ใช้เกลือและแฮชการคำนวณรหัสผ่านของพวกเขาไม่ใช่เรื่องง่ายหรือ? ฉันเข้าใจกระบวนการและนำไปใช้ด้วยตนเองในบางโครงการของฉัน s = random salt storedPassword = sha1(password + s) ในฐานข้อมูลที่คุณจัดเก็บ: username | hashed_password | salt การใช้เกลือทุกครั้งที่ฉันเห็นจะเพิ่มเกลือที่ส่วนท้ายของรหัสผ่านหรือจุดเริ่มต้น: hashed_Password = sha1(s + password ) hashed_Password = sha1(password + s) ดังนั้นการโจมตีด้วยพจนานุกรมจากแฮกเกอร์ที่คุ้มค่ากับเกลือของเขา (ฮ่าฮ่า) จะเรียกใช้คำหลักแต่ละคำเทียบกับเกลือที่เก็บไว้ในชุดค่าผสมทั่วไปที่ระบุไว้ข้างต้น แน่นอนว่าการใช้งานที่อธิบายไว้ข้างต้นเป็นการเพิ่มขั้นตอนอื่นสำหรับแฮ็กเกอร์โดยไม่ได้แก้ปัญหาพื้นฐานจริงหรือ? มีทางเลือกใดบ้างในการแก้ไขปัญหานี้หรือฉันเข้าใจปัญหาผิด สิ่งเดียวที่ฉันคิดได้คือมีอัลกอริธึมการผสมที่เป็นความลับซึ่งผูกเกลือและรหัสผ่านเข้าด้วยกันในรูปแบบสุ่มหรือเพิ่มช่องผู้ใช้อื่น ๆ ในกระบวนการแฮชซึ่งหมายความว่าแฮ็กเกอร์จะต้องเข้าถึงฐานข้อมูลและรหัสเพื่อทำการปัก สำหรับการโจมตีพจนานุกรมเพื่อพิสูจน์ว่ามีผล (อัปเดตตามที่ระบุไว้ในความคิดเห็นควรถือว่าแฮ็กเกอร์สามารถเข้าถึงข้อมูลทั้งหมดของคุณได้ดังนั้นจึงอาจไม่ดีที่สุด) ให้ฉันยกตัวอย่างวิธีที่ฉันเสนอให้แฮ็กเกอร์แฮ็กฐานข้อมูลผู้ใช้ด้วยรายการรหัสผ่านและแฮช: ข้อมูลจากฐานข้อมูลที่ถูกแฮ็กของเรา: RawPassword (not stored) | Hashed | …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.