ทำไมเกือบจะไม่มีหน้าแฮรหัสผ่านในไคลเอนต์ก่อนที่จะส่ง (และ hashing พวกเขาอีกครั้งบนเซิร์ฟเวอร์) เพื่อ“ ป้องกัน” จากการใช้รหัสผ่านซ้ำ?


46

มีเว็บไซต์จำนวนมากบนอินเทอร์เน็ตที่ต้องการข้อมูลการเข้าสู่ระบบและวิธีเดียวที่จะป้องกันการใช้รหัสผ่านซ้ำคือ "สัญญา" ว่ารหัสผ่านจะถูกแฮชบนเซิร์ฟเวอร์ซึ่งไม่ได้เป็นจริงเสมอไป

ดังนั้นฉันจึงสงสัยว่าการสร้างหน้าเว็บที่แฮชรหัสผ่านในคอมพิวเตอร์ไคลเอนต์ (ด้วย Javascript) นั้นมีความยากขนาดไหนก่อนส่งไปยังเซิร์ฟเวอร์ซึ่งจะถูกแฮชอีกครั้ง ในทางทฤษฎีสิ่งนี้ไม่ได้ให้ความปลอดภัยเป็นพิเศษ แต่ในทางปฏิบัติสิ่งนี้สามารถใช้เพื่อป้องกัน "ไซต์หลอกลวง" ที่ไม่ใช้รหัสผ่านของคุณในเซิร์ฟเวอร์


18
รหัสผ่านที่แฮชที่ส่งมาในที่ชัดเจนนั้นไม่ดีไปกว่ารหัสผ่านที่ส่งในที่ชัดเจนหากเซิร์ฟเวอร์เพิ่งเปรียบเทียบแฮชคนที่อยู่ในการโจมตีกลางชอบ "ความปลอดภัย" ประเภทนี้

3
ทางออกที่ดีที่สุดคือ (imo) ผู้จัดการรหัสผ่านฝั่งไคลเอ็นต์ ด้วยวิธีนี้คุณสามารถสร้างสตริงอักขระแบบสุ่มเป็นรหัสผ่านของคุณและคุณไม่ต้องพึ่งพาเซิร์ฟเวอร์เพื่อ 'ป้องกัน' คุณ
Dean Harding

2
@Jarrod - ฟังดูแล้วสำหรับฉันเหมือนเว็บไซต์อื่น ๆ ที่ใช้อัลกอริทึมการแฮชฝั่งไคลเอ็นต์ที่แตกต่างกันจะป้องกันการโจมตีที่อธิบายโดยการ์ตูนนั้น รหัสผ่านที่ใช้ซ้ำอย่างกว้างขวางหนึ่งรหัสผ่านจะกลายเป็นรหัสผ่านที่แตกต่างกันมากมายผ่านขั้นตอนวิธีแฮชที่ต่างกัน การคำนวณแฮชฝั่งไคลเอ็นต์นั้นไม่ได้ป้องกันการรักษาความปลอดภัยประเภทอื่นเช่นการส่งแฮชผ่านการเชื่อมต่อที่ปลอดภัย
Steve314

2
@ Steve314 จุดของฉันคือสิ่งที่ลูกค้าจะถูกโจมตีโดยค่าเริ่มต้น คุณสามารถแฮชและแฮชและแฮชได้ถ้ามันถูกทำบนไคลเอนต์และถูกส่งกลับไปยังเซิร์ฟเวอร์โดยที่clearมันเป็นเพียงการช่วยตัวเองทางคณิตศาสตร์ ณ จุดนั้น ฉันต้องแก้ไขระบบที่สืบทอดมาซึ่งได้รับการออกแบบในแบบที่คุณและ OP อธิบายได้อย่างถูกต้องมันถูกแฮ็คโดยวัยรุ่นด้วย Wireshark เราล็อคมันเมื่อเราใส่REALการเข้ารหัสและเข้ารหัสและเซ็นชื่อ payload ทั้งหมดไปและจากเซิร์ฟเวอร์การจัดการบัญชีหยุดลงและไม่เคยเกิดขึ้นอีกหลังจากนั้น

5
ดูเหมือนแผนการของคุณในการป้องกันตัวเองจากเว็บไซต์โกงคือการขอเว็บไซต์ปลอมเพื่อตั้งค่าความปลอดภัยที่ดีขึ้น ?
pc1oad1etter

คำตอบ:


46

ทำไมมันไม่ใช้ เพราะมันมีงานพิเศษมากมายสำหรับการได้ศูนย์ ระบบดังกล่าวจะไม่ปลอดภัยมากขึ้น มันอาจจะมีความปลอดภัยน้อยลงเพราะให้ความรู้สึกที่ผิด ๆ ว่าปลอดภัยมากขึ้นผู้ใช้ชั้นนำในการใช้แนวทางปฏิบัติที่ปลอดภัยน้อยลง (เช่นการใช้รหัสผ่านซ้ำรหัสผ่านพจนานุกรม ฯลฯ )


2
นี่คือคำตอบที่ดีที่สุด

1
มันเหมือนกับการเข้ารหัส Blu-Ray และ DVD ไม่ต้องใช้รหัสในการปลดล็อค "การป้องกัน" เพียงอย่างเดียวที่มีให้คือเมื่อดีวีดีออกมาก่อนมีค่าใช้จ่ายมากกว่าในการซื้อแผ่นดิสก์เพื่อคัดลอกไปยังมากกว่าซื้อสำเนาเต็มรูปแบบของภาพยนตร์ แน่นอนตอนนี้คุณสามารถซื้อ dvd ในราคาดอลลาร์และยิ่งกว่านั้นคือความจริงที่ว่ากุญแจเป็นความรู้สาธารณะในขณะนี้ เกิดขึ้นพร้อมกันกับ Blu-Ray
Michael Brown

2
ฉันคิดว่าการแฮ็ชรหัสผ่านฝั่งไคลเอ็นต์จะเพิ่มความปลอดภัย หากฉันกำลังฟังฉันสามารถเห็นแฮชของคุณไม่ใช่รหัสผ่านของคุณ หากเซิร์ฟเวอร์ส่งการท้าทาย (อย่างที่ควร) แฮจะไม่สามารถใช้ซ้ำได้
Andomar

2
ฉันคิดว่าแนวทางของ x4u อาจเหมาะสมสำหรับแอปพลิเคชั่นบางตัวที่ต้องการความปลอดภัยอยู่ระหว่างการส่งรหัสผ่านบน wire และการใช้ใบรับรอง ฉันคิดว่านักพูดบางคนอาจมองว่าการแฮ็กรหัสผ่านก่อนที่จะดำเนินการต่อไปนั้นนอกเหนือไปจากการจัดการข้อมูลรับรองฝั่งเซิร์ฟเวอร์มาตรฐาน ดังนั้นคำถามคือสิ่งนี้: ข้อเสนอของ x4u ช่วยปรับปรุงความปลอดภัยในสถานการณ์การส่งผ่านรหัสผ่านบนสายลวดหรือไม่ ฉันบอกว่ามันทำ กุญแจสำคัญในการตระหนักถึงสิ่งนี้อยู่ในการใช้เกลือต่อรหัสผ่าน
LOAS

6
วิธีที่ถูกต้องในการป้องกันการโจมตีของ MITM คือการเข้ารหัสแบบครบวงจร มี TLS (https): ใช้ อย่าประดิษฐ์แผนการเข้ารหัสลับของคุณเอง
Rein Henrichs

14

ในทางทฤษฎีสิ่งนี้ไม่ได้ให้ความปลอดภัยเป็นพิเศษ แต่ในทางปฏิบัติสิ่งนี้สามารถใช้เพื่อป้องกัน "ไซต์หลอกลวง" ที่ไม่ใช้รหัสผ่านของคุณในเซิร์ฟเวอร์

สิ่งนี้ปกป้องคุณได้อย่างไร? ดูเหมือนว่าทุกสิ่งที่คุณต้องการคือแฮชรหัสผ่านที่แฮชซึ่งไม่มีจุดหมาย เพราะรหัสผ่านที่แฮชจะกลายเป็นรหัสผ่าน

มีเว็บไซต์จำนวนมากบนอินเทอร์เน็ตที่ต้องการข้อมูลการเข้าสู่ระบบและวิธีเดียวที่จะป้องกันการใช้รหัสผ่านซ้ำคือ "สัญญา" ว่ารหัสผ่านจะถูกแฮชบนเซิร์ฟเวอร์ซึ่งไม่ได้เป็นจริงเสมอไป

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

หากคุณใช้จาวาสคริปต์ "แฮ็กเกอร์" ทั้งหมดต้องทำคือใช้วิธีเดียวกันกับรหัสผ่านที่แฮชแฮชรหัสผ่าน เมื่อคุณมีข้อมูลที่แฮชแล้วก็ถึงเวลาที่ต้องใช้ในการคำนวณแฮชรหัสผ่าน -> เดียวกันในฐานข้อมูลซึ่งเป็นปัจจัยที่ขัดขวางการเข้าถึงบัญชี


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

2
ถ้ามันอยู่ในไคลเอนต์มันจะถูกทำลายเกลือใด ๆ บนไคลเอนต์ที่อยู่ในมุมมองธรรมดานี่เป็นคำถามที่ไร้เหตุผล หากคุณไม่เข้าใจคำตอบของ @ Ramhound คุณไม่ควรเขียนโค้ดที่ต้องปลอดภัยและเริ่มอ่านความปลอดภัยและการเข้ารหัสตั้งแต่ต้น

3
เมื่อคุณอ้างถึงโปสเตอร์ดั้งเดิมโปรดจัดรูปแบบข้อความดังกล่าว (เลือกข้อความและใช้ไอคอนเครื่องหมายเหนือตัวแก้ไข)
Marjan Venema

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

3
หากลูกค้ารู้จักเกลือและมันถูกส่งมาจากเซิร์ฟเวอร์อย่างชัดเจนสิ่งใดก็ตามที่อยู่ตรงกลางก็รู้เช่นกัน ไม่เคยพูดฉันต้องการยกเลิกการแฮชถ้าคุณรู้ว่าเกลือของลูกค้านั้นไม่ปลอดภัย

11

เพราะมันจะเพิ่มมูลค่าเล็กน้อยถึงไม่มีเลย เหตุผลการแฮ็กคือถ้าฐานข้อมูลของคุณถูกแฮ็คแฮ็กเกอร์จะไม่มีรายการรหัสผ่านที่ถูกต้องเพียงแค่แฮช ดังนั้นพวกเขาไม่สามารถปลอมตัวเป็นผู้ใช้ใด ๆ ระบบของคุณไม่มีความรู้เกี่ยวกับรหัสผ่าน

ความปลอดภัยมาจากใบรับรอง SSL รวมถึงการตรวจสอบความถูกต้องบางรูปแบบ ฉันต้องการให้ผู้ใช้ของฉันจัดหารหัสผ่านเพื่อให้ฉันสามารถคำนวณแฮชได้

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


3
นี่คือคำตอบที่ดีที่สุด คุณควรเข้ารหัสที่ชั้นการขนส่ง ส่วนที่เหลือไม่ปลอดภัย ใช่คุณสามารถเขียนฟังก์ชั่นการเข้ารหัส ... แต่ฟังก์ชั่นนั้นจะปรากฏแก่ผู้ใช้ปลายทาง (ประสงค์ร้าย) ใช้ SSL
pc1oad1etter

ความปลอดภัยของอัลกอริทึมการแปลงแป้นพิมพ์ไม่ควรขึ้นอยู่กับว่าเป็นความลับหรือไม่ อัลกอริทึมการแฮชเพื่อความปลอดภัยควรเป็นฟังก์ชั่นทางเดียว: แม้ว่าคุณจะมีรหัส แต่ก็ยากที่จะยกเลิกได้ ในทางตรงกันข้ามคุณควรใช้ไลบรารีแฮชที่รู้จักกันดีซึ่งออกแบบมาสำหรับรหัสผ่านเท่านั้น หากยังไม่เป็นที่รู้จักก็เกือบจะเป็นบั๊กกี้หรือเพ้อเจ้อ
leewz

6

การแก้ปัญหานั้นง่ายกว่านั้น ใบรับรองลูกค้า ฉันสร้างใบรับรองไคลเอ็นต์บนเครื่องของฉัน เมื่อฉันลงทะเบียนกับเว็บไซต์เราจับมือกันโดยใช้ใบรับรองลูกค้าของฉันและใบรับรองของเซิร์ฟเวอร์

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

ใบรับรองไคลเอ็นต์สามารถเก็บไว้ในสมาร์ทการ์ด (และอัปโหลดไปยังห้องนิรภัยออนไลน์ที่ปลอดภัยโดยใช้รหัสผ่านหลัก)

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

Microsoft พยายามให้บางสิ่งเช่นนี้ใน Windows ด้วย Cardspace และส่งในภายหลังเป็นมาตรฐานเปิด OAuth ค่อนข้างคล้ายกัน แต่ขึ้นอยู่กับ "ผู้ออก" ซึ่งเป็นสื่อกลาง InfoCards ในทางกลับกันอาจเป็นการออกด้วยตนเอง นั่นเป็นทางออกที่แท้จริงของปัญหารหัสผ่าน ... ลบรหัสผ่านทั้งหมด

OAuth เป็นขั้นตอนในทิศทางที่ถูกต้อง


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

5

คำตอบส่วนใหญ่ที่นี่ดูเหมือนจะพลาดจุดแฮชของรหัสผ่านฝั่งไคลเอ็นต์อย่างสมบูรณ์

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

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

ssl เหมาะอย่างยิ่งสำหรับการป้องกันการโจมตีแบบ mitm แต่ถ้าแอปพลิเคชันเข้าสู่ระบบถูกบุกรุกบนเซิร์ฟเวอร์ ssl จะไม่ปกป้องผู้ใช้ของคุณ หากใครบางคนเข้าถึงเว็บเซิร์ฟเวอร์โดยมีเจตนาร้ายพวกเขาอาจจะสามารถดักรหัสผ่านเป็นข้อความธรรมดาได้เนื่องจากในกรณีส่วนใหญ่รหัสผ่านจะถูกแฮชเพียงสคริปต์บนเซิร์ฟเวอร์ จากนั้นผู้โจมตีสามารถลองใช้รหัสผ่านเหล่านั้นบนไซต์อื่น ๆ (โดยปกติจะมีค่ามากกว่า) โดยใช้ชื่อผู้ใช้ที่คล้ายกัน

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


2
คำตอบที่ได้รับการยอมรับแบ่งปันจุดของคุณค่อนข้างดี แม้ว่า "คำตอบส่วนใหญ่" จะทำไม่ได้และเนื่องจากคำตอบของคุณไม่ได้เพิ่มคุณค่ามากนัก แต่ก็ไม่มีประเด็นที่จะรื้อฟื้นคำถามนี้อีกครั้ง
แฟรงค์

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

@ Frank ขอบเขตคำตอบที่ยอมรับว่ายาวเกินไปที่จะรบกวนการอ่าน มันมีรายละเอียดมากเกินไปว่าจะนำสิ่งนี้ไปปฏิบัติได้อย่างไร การมี TL; DR ในคำตอบที่ต่างออกไปนั้นมีประโยชน์
จูลส์

2
@Jules: นั่นเป็นเหตุผลที่มีการแก้ไขอยู่
Robert Harvey

1
@JarrodRoberson ฉันคิดว่าคุณมีความสับสนไม่มีความปลอดภัยมากขึ้นด้วยที่ไม่ปลอดภัย ? หาก MITM เกิดขึ้นแสดงว่ามีการยกเลิกการเข้าถึงไซต์แล้วใช่ไหม เว้นแต่คุณจะใช้ใบรับรองไคลเอ็นต์แทนรหัสผ่านซึ่งจะซับซ้อนเกินไปสำหรับผู้ใช้ทั่วไป วิธีที่ฉันเห็นการแฮชฝั่งไคลเอ็นต์จะป้องกันรหัสผ่านเดียวกันที่ถูกบุกรุกในเว็บไซต์อื่น ๆ โดยสมมติว่าอัลกอริทึมการแฮชแต่ละรายการไม่ซ้ำกัน มันอาจจะไม่ปลอดภัยกว่า แต่ก็ไม่ได้ปลอดภัยน้อยกว่า แต่อย่างใด เหตุใดคุณจึงผลักดันเรื่องนี้อย่างหนัก ฉันเจอสิ่งนี้จากเมตาและนี่คือคำตอบที่ดีที่สุดที่ฉันเห็น
zypA13510

1

เป็นไปได้แน่นอนและจริง ๆ แล้วคุณไม่จำเป็นต้องรอเว็บไซต์

มีลักษณะที่SuperGenPass มันเป็น bookmarklet

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

โดยการใช้โดเมนไซต์ในกระบวนการคุณจะได้รับรหัสผ่านที่ไม่ซ้ำกันต่อไซต์แม้ว่าคุณจะใช้รหัสผ่านเดิมซ้ำก็ตาม

มันไม่ปลอดภัยอย่างยิ่ง (base64-MD5) แต่คุณจะเผยแพร่การใช้งาน sha-2 ได้อย่างสมบูรณ์หากคุณต้องการ

ข้อเสียเพียงอย่างเดียวคือหากโดเมนเปลี่ยนไปซึ่งในกรณีนี้คุณจะต้องขอให้เว็บไซต์รีเซ็ตรหัสผ่านของคุณเพราะคุณจะไม่สามารถกู้คืนได้ด้วยตัวเอง ... มันไม่ได้เกิดขึ้นบ่อยครั้งดังนั้นฉันจึงพิจารณา การแลกเปลี่ยนที่ยอมรับได้


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

3
สิ่งนี้จะไม่ปลอดภัยอีกต่อไปกว่ารูปแบบอื่น ๆ ที่ส่งผ่านรหัสผ่านที่ชัดเจน มันทำให้รหัสผ่านไม่ซ้ำกัน แต่ก็ยังไม่ได้เข้ารหัสแต่ถ้าฉันมีเซิร์ฟเวอร์ที่อยู่ตรงกลางฉันสามารถคว้ารหัสผ่านที่ซับซ้อน แต่ยังคงชัดเจนและใช้งานได้มากเท่าที่ฉันต้องการมันจะไม่เปลี่ยนแปลง กัญชาไม่ได้เป็นเวทย์มนตร์บางอย่างมันไม่ได้เข้ารหัสพวกมันถูกเรียกว่าแฮ็กเข้ารหัสข้อมูล แต่นั่นไม่ได้หมายความว่าเข้ารหัส ไม่สำคัญว่ารหัสผ่านของฉันคือpasswordและหรือ SHA-256 ของpasswordด้วยเกลือบางอย่างที่ลูกค้ารู้จักคนที่อยู่ตรงกลางสามารถจับภาพได้

@Jarrod Roberson: คุณสามารถใช้รหัสผ่านของหลักสูตรได้ แต่คุณไม่สามารถนำรหัสนี้กลับมาใช้ใหม่กับบัญชีอื่นของฉันได้ซึ่งเป็นประเด็น ดังนั้นหากหนึ่งในเว็บไซต์ที่ฉันเชื่อมต่อถูกฐานรหัสผ่านถูกขโมยและพวกเขาเก็บไว้อย่างชัดเจนบัญชีอื่นของฉันก็ปลอดภัย
Matthieu M.

@Aaraught: นั่นคือสถานที่ที่มันส่องจริง เนื่องจากรหัสผ่านที่ส่งมานั้นล้วนมาจากโดเมนเว็บไซต์ที่คุณเข้าสู่ระบบและรหัสผ่านหลักที่คุณเลือกคุณสามารถเข้าสู่ระบบจากคอมพิวเตอร์เครื่องใดก็ได้ (และเบราว์เซอร์) ตราบใดที่คุณมี bookmarklet นี่คือเหตุผลที่มันค่อนข้างสะดวกสบายกว่าใบรับรอง
Matthieu M.

6
@Jarrod: นี้ไม่ได้เป็นมาตรการรักษาความปลอดภัยสำหรับเว็บไซต์ก็เป็นมาตรการรักษาความปลอดภัยสำหรับผู้ใช้ หากทุกคนใช้รูปแบบเช่นนี้การใช้รหัสผ่านซ้ำจะไม่เป็นปัญหา โครงการ MITM สามารถใช้รหัสผ่านของลูกค้าแฮชที่จะได้รับการเข้าถึงที่เว็บไซต์ แต่เพียงว่าเว็บไซต์ นั่นคือสิ่งที่การปรับปรุงอยู่ โดยปกติคุณคาดว่าจะสามารถเข้าถึงบัญชีจำนวนมากได้เพียงแค่ถอดรหัสรหัสผ่านหนึ่งรหัสเพราะรหัสผ่านนั้นน่าจะถูกนำมาใช้ซ้ำ ในกรณีนี้รหัสผ่านที่ถอดรหัสจะรับประกันได้ว่าใช้ได้กับเว็บไซต์หรือฐานข้อมูลที่พบเท่านั้น
Aaronaught

0

ฉันชอบคำตอบของ X4u แต่ในความเห็นของฉันมีบางอย่างที่ควรรวมเข้ากับเบราว์เซอร์ / ข้อมูลจำเพาะ html - ในขณะนี้มันเป็นคำตอบเพียงครึ่งเดียว

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

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

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

ผู้ใช้จำเป็นต้องรู้ว่ารหัสผ่านไม่สามารถใช้งานได้แม้จะถูกส่งไปยังเซิร์ฟเวอร์ - เป็นเพียงแฮช ในปัจจุบันแม้จะใช้โซลูชันของ X4U พวกเขาก็ไม่มีทางรู้ได้ว่าเป็นกรณีนี้เพราะคุณไม่รู้ว่าเทคโนโลยีนั้นใช้งานอยู่หรือไม่


1
มันรวมอยู่ในเบราว์เซอร์ค้นหาการตรวจสอบสิทธิ์ย่อยและคุณจะเห็นขั้นตอนไปมาใน http เพื่อรับรหัสผ่านแฮชพร้อมข้อมูลเพิ่มเติมและตรวจสอบความถูกต้องบนเซิร์ฟเวอร์
gbjbaanb

-1

ฉันคิดว่ามันเป็นวิธีที่ดีที่จะใช้เมื่อสร้างบางสิ่งบางอย่างเช่นเฟรมเวิร์ค CMS ซอฟต์แวร์ฟอรัม ฯลฯ ซึ่งคุณไม่ได้ควบคุมเซิร์ฟเวอร์ที่ติดตั้งไว้ นั่นคือใช่คุณควรแนะนำให้ใช้ SSL สำหรับการเข้าสู่ระบบและการเข้าสู่ระบบอยู่เสมอ แต่บางเว็บไซต์ที่ใช้เฟรมเวิร์ก / cms ของคุณจะไม่มีมันดังนั้นพวกเขาจึงยังได้รับประโยชน์จากสิ่งนี้

ดังที่คนอื่น ๆ ได้ชี้ให้เห็นประโยชน์ที่ได้นั้นไม่ใช่การโจมตีของ MITM ไม่อนุญาตให้คนอื่นลงชื่อเข้าใช้ไซต์นี้โดยเฉพาะกับคุณ แต่แทนที่จะให้ผู้โจมตีนั้นไม่สามารถใช้ชื่อผู้ใช้ / รหัสผ่านเดียวกันกับ เข้าสู่เว็บไซต์อื่น ๆ หลายสิบแห่งที่คุณอาจมีบัญชีอยู่

รูปแบบดังกล่าวควรเป็นเกลือที่มีทั้งเกลือแบบสุ่มหรือเกลือบางส่วนของไซต์เฉพาะและเกลือเฉพาะชื่อผู้ใช้เพื่อให้คนที่ได้รับรหัสผ่านไม่สามารถใช้มันสำหรับชื่อผู้ใช้เดียวกันในเว็บไซต์อื่น ๆ (แม้แต่ไซต์ที่ใช้รูปแบบการแฮชเหมือนกัน ) หรือต่อต้านผู้ใช้รายอื่นของไซต์ไซต์ที่อาจมีรหัสผ่านเดียวกัน

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

ดังนั้นรหัสผ่าน javascript จึงน้อยที่สุดที่ผู้พัฒนาเฟรมเวิร์ก / cms สามารถทำได้เพื่อจำกัดความเสียหายของบางคนที่ขโมยรหัสผ่านในระหว่างการขนส่ง (ซึ่งง่ายกว่าเครือข่าย wifi ในปัจจุบัน) หากทั้งเจ้าของไซต์และผู้ใช้ปลายทางถูกละเลย เกี่ยวกับความปลอดภัย (ซึ่งน่าจะเป็น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.