Score:3

การแอบอ้างเป็นการโจมตีรหัสผ่านครั้งเดียวของ Lamport

ธง in

ดังนั้นฉันจึงใช้กูเกิลในสมองของฉันเกี่ยวกับความเป็นไปได้ของการพยายามเลียนแบบโดยผู้โจมตี MITM รูปแบบรหัสผ่านครั้งเดียวของ Lamport.

นี่คือสถานการณ์ของฉัน:

สมมติว่าเรามีการตั้งค่าไคลเอนต์และเซิร์ฟเวอร์ ได้รับ nonce $n$และฟังก์ชันแฮช $h()$ลูกค้าคำนวณแฮชของ $n$ หลายครั้ง (พูด $100$) และส่งที่อินสแตนซ์แรก $H^{(100)}$ ที่ไหน $H^{(100)}=h^{(100)}(n)$. อันดับแรก เซิร์ฟเวอร์ตรวจสอบตัวตนของลูกค้าสำหรับค่าที่ไคลเอนต์ระบุแรกได้อย่างไร $H^{(100)}$? ลายเซ็นดิจิตอล / ใบรับรอง?

สำหรับการรับรองความถูกต้องในภายหลัง ลูกค้าจะส่ง $H^{(99)}$ และเซิร์ฟเวอร์จะคำนวณ $h(H^{(100)})$ และถ้าการคำนวณตรงกับค่าที่เซิร์ฟเวอร์เก็บไว้ (เช่น $H^{(100)}$) เซิร์ฟเวอร์รับรองความถูกต้องของไคลเอนต์

ตอนนี้สมมติว่ามีผู้โจมตีอยู่ตรงกลางของการสื่อสาร ผู้โจมตีไม่สามารถสกัดกั้นได้ $H^{(99)}$ จากลูกค้าและส่ง $H^{(99)}$ ไปยังเซิร์ฟเวอร์ จึงปลอมตัวเป็นไคลเอ็นต์สำหรับเซสชันเฉพาะนี้เท่านั้น โดยที่ $i$ เป็น $99$. นี่หมายความว่าเซิร์ฟเวอร์ตรวจสอบสิทธิ์ผู้โจมตีแทนไคลเอนต์ การเลียนแบบนี้เป็นไปได้หรือไม่? และถ้าเป็นเช่นนั้น OTP ของ Lamport จะป้องกันสิ่งนี้ได้อย่างไร

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

kelalaka avatar
in flag
[OTP](https://en.wikipedia.org/wiki/One-time_password) ไม่ใช่ลายเซ็นดิจิทัล ดูได้จาก NIST [Recommendation for Stateful รูปแบบลายเซ็นที่ใช้แฮช](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf) จะเกิดอะไรขึ้นถ้าไคลเอ็นต์ส่ง $(H^{(i)},i)$ และลดลง $i$ สำหรับทุกๆ เซสชัน แน่นอนว่าเซิร์ฟเวอร์ต้องติดตาม $i$ ตามที่ [กล่าวถึง Wiki](https:/ /th.wikipedia.org/wiki/One-time_password#Hash_chains)?
Score:2
ธง in
  • ด้านสั้น

    ด้านหนึ่งของการรักษาความปลอดภัยของ One-Time Password (LOTP) ของ Lamport นั้นขึ้นอยู่กับข้อเท็จจริงที่ว่าเซิร์ฟเวอร์จัดเก็บแฮชล่าสุด และในครั้งต่อไป ต้องใช้แฮชก่อนหน้าและแฮชเพื่อเปรียบเทียบกับแฮชที่เก็บไว้ล่าสุด ดังนั้นผู้โจมตีจึงไม่สามารถใช้มันเพื่อแอบอ้างเป็นผู้ใช้ได้ตราบเท่าที่ฟังก์ชันแฮชมีการต่อต้านภาพล่วงหน้า

แนวคิดของ Lamport ขึ้นอยู่กับความปลอดภัยของ Hash-Chain ดังนี้

  • การเริ่มต้นระบบ

    1. เมล็ดพันธุ์เริ่มต้น $s$ ถูกเลือก
    2. กัญชา $H$ นำไปใช้ $n$ครั้งในลักษณะลดหลั่น $$h_n = H^{(n)} = \underbrace{H(H(\cdots H(s) \cdots )}_{n-times}$$ ให้กับเมล็ดพันธุ์เริ่มต้น $s$ ที่ไหน $n$ ได้1000,10000หรือ..
    3. เซิร์ฟเวอร์เริ่มจัดเก็บ $h_n$ (และอาจจะ $n$, ด้วย)
    4. ผู้ใช้จัดเก็บ $s$ และ $n$
  • กลไกการเข้าสู่ระบบ

    • สำหรับการเข้าสู่ระบบครั้งแรก

      1. ผู้ใช้คำนวณ $h_{n-1}$
      2. ในขั้นตอนการเข้าสู่ระบบผู้ใช้ส่ง $h_{n-1}$ ไปยังเซิร์ฟเวอร์
      3. การตรวจสอบเซิร์ฟเวอร์ $H(h_{n-1}) = h_n$
      4. บนเซิร์ฟเวอร์ที่เข้าสู่ระบบสำเร็จ
        1. เพิ่มเคาน์เตอร์ $inc(ค)$
        2. ร้านค้า $h_{n-1}$
      5. เมื่อผู้ใช้เข้าสู่ระบบสำเร็จแล้ว $n = n-1$ (หรือตัวแปรอื่นที่เป็นไปได้)
    • สำหรับ $i$-th เข้าสู่ระบบ

      1. ผู้ใช้คำนวณ $h_{n-i}$
      2. ในขั้นตอนการเข้าสู่ระบบผู้ใช้ส่ง $h_{n-i}$ ไปยังเซิร์ฟเวอร์
      3. การตรวจสอบเซิร์ฟเวอร์ $H(h_{n-i}) = h_{n-i+1}$
      4. บนเซิร์ฟเวอร์ที่เข้าสู่ระบบสำเร็จ
        1. เพิ่มเคาน์เตอร์ $inc(ค)$
        2. ร้านค้า $h_{n-1}$
      5. เมื่อผู้ใช้เข้าสู่ระบบสำเร็จแล้ว $n = n-1$ (หรือตัวแปรอื่นที่เป็นไปได้)

นี่คือข้อมูลพื้นฐานและรายละเอียดบางส่วนจะถูกข้ามไปเพื่อความชัดเจน ตัวอย่างเช่น; ด้วยเหตุผลบางอย่าง ระบบอาจไม่ซิงค์ นั่นคือจำนวนผู้ใช้อาจไม่ซิงค์กับเซิร์ฟเวอร์ ในการจัดการกับสิ่งนี้ เซิร์ฟเวอร์อาจคอยดูพารามิเตอร์ล่วงหน้า $t$, เป็นต้น $i$พยายามเข้าสู่ระบบครั้งที่ถ้าไม่มีความเท่าเทียมกัน $H(h_{n-i}) \neq h_{n-i+1}$เซิร์ฟเวอร์จะคอยดูหากมีการแข่งขันจาก $h_{n-i+1}$ ถึง $h_{n-i-t+1}$.

ตอนนี้อะไร หากบุคคลที่สามเห็นโทเค็น LOTP และพยายามปลอมตัวเป็นผู้ใช้

  1. สำหรับการเข้าสู่ระบบใหม่พวกเขาไม่สามารถใช้งานได้เนื่องจากจำเป็น $H_{n-i-1}$. พวกนี้ต้องหารูปพรี ฟังก์ชันแฮชการเข้ารหัสทั้งหมดยังคงรักษาหลักทรัพย์พรีอิมเมจ รวมถึงความต้านทานการชนกันที่ MD5 และ SHA-1 เสียหาย ไม่ได้หมายความว่าคุณควรใช้ แต่ควรใช้แบบสมัยใหม่ เช่น SHA-256, SHA-512, SHA-3, BLAKE2 เป็นต้น

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

    กล่าวโดยสรุปคือ ความปลอดภัยของ LTOP นั้นขึ้นอยู่กับการรักษาความปลอดภัยของพรีอิมเมจ $H$

  2. การมองไปข้างหน้าอาจทำให้เกิดปัญหาได้หรือไม่? ไม่ เซิร์ฟเวอร์จะอัปเดตค่าแฮชที่เก็บไว้ในการเข้าสู่ระบบทุกครั้ง หากพวกเขาเก็บเพียงอันเริ่มต้นและแฮช $i$- เวลาตรวจสอบ OTP แล้วมองไปข้างหน้าเป็นจุดโจมตี นี่คือหนึ่งในเหตุผลที่ต้องเก็บแฮชสุดท้ายและอีกประการหนึ่งคือประสิทธิภาพ

  3. ความลับ $\mathbf{s}$ ขนาดในทางกลับกัน ควรมีอย่างน้อย 128 บิตที่สม่ำเสมอและสุ่มสร้างขึ้นเพื่อป้องกันการดุร้ายของ $s$.

Jake avatar
in flag
ขอบคุณสำหรับคำอธิบายโดยละเอียดของคุณ ชอบแนวคิดของพารามิเตอร์การมองไปข้างหน้า อย่างไรก็ตาม สิ่งหนึ่งคือประเด็นของฉันยังไม่เป็นที่เข้าใจ ยกตัวอย่างเช่น เซสชันที่ผู้ใช้ส่ง hn-1. ผู้โจมตีสามารถสกัดกั้น hn-1 และส่งไปยังเซิร์ฟเวอร์ ท้ายที่สุดแล้ว เซิร์ฟเวอร์ไม่เคยตรวจสอบความถูกต้องโดยที่ hn-1 มาจาก. สิ่งที่เซิร์ฟเวอร์ทำคือตรวจสอบว่า hn-1 แฮชเป็น hน. ดังนั้นหากสิ่งนี้เกิดขึ้น เซิร์ฟเวอร์จะตรวจสอบสิทธิ์ผู้โจมตีแทนผู้ใช้แทนหรือไม่ หรืออาจมีบางสิ่งที่ฉันขาดหายไป
Jake avatar
in flag
ใช้เวลาสักครู่เพื่อแสดงความคิดเห็นก่อนหน้าของฉัน ฉันเพียงหวังว่าคุณจะเข้าใจประเด็นของฉัน นอกจากนี้ เมื่อใดที่ผู้ใช้ส่งแฮช n-times ของรหัสลับ ฉันหมายถึงครั้งแรกที่ผู้ใช้ส่งแฮช n-times ซึ่งเซิร์ฟเวอร์เริ่มทำงานด้วย เซิร์ฟเวอร์จะยืนยันตัวตนของผู้ใช้ในอินสแตนซ์แรกได้อย่างไร หรือเราสามารถสมมติสถานการณ์ว่าเซิร์ฟเวอร์ให้ความลับแก่ผู้ใช้จริง ๆ ด้วยวิธีที่ปลอดภัย ทำให้ผู้ใช้แฮชความลับที่เซิร์ฟเวอร์ให้มาแทน ในความคิดของฉันนี่อาจเป็นวิธีหนึ่งของเซิร์ฟเวอร์ในการยืนยันตัวตนของผู้ใช้
kelalaka avatar
in flag
1) อย่างที่ฉันบอกว่าคำตอบไม่ได้รวมรายละเอียดทั้งหมด จะเกิดอะไรขึ้นหากเซิร์ฟเวอร์เพิ่มแฮชทันทีที่ตรวจสอบผู้ใช้และลืมค่าก่อนหน้า การโจมตีเซสชันเดียวกันสามารถเกิดขึ้นได้เนื่องจากทางเลือกของนักออกแบบเท่านั้น หากต้องการป้องกันสิ่งนี้สามารถขอโทเค็นใหม่ได้
kelalaka avatar
in flag
2) คุณเคยได้ยินขั้นตอนการลงทะเบียนหรือไม่? ผู้ใช้ควรสร้างความลับให้กับผู้ใช้ด้วยวิธีที่ปลอดภัย เช่น โทเค็นของธนาคาร เมื่อผู้ใช้และเซิร์ฟเวอร์ตกลงในการลงทะเบียน ผู้ใช้สามารถให้ $h_s$ ของพวกเขาได้ในขณะนี้ การตรวจสอบความถูกต้องของผู้ใช้ควรต้องมีอย่างน้อยสองปัจจัย เช่น หนึ่งที่คุณควรรู้ (รหัสผ่าน) หนึ่งที่คุณควรมี (โทรศัพท์/โทเค็น) เป็นต้น LOTP เป็นปัจจัยหนึ่ง
Jake avatar
in flag
+1 สำหรับความคิดเห็นของคุณ ขอบคุณ

โพสต์คำตอบ

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