Điểm:3

Tấn công mạo danh vào mật khẩu dùng một lần của Lamport

lá cờ in

Vì vậy, tôi ở đây, tra cứu bộ não của mình về khả năng mạo danh của kẻ tấn công MITM trên Sơ đồ mật khẩu một lần của Lamport.

Đây là kịch bản của tôi:

Giả sử chúng tôi có thiết lập máy khách và máy chủ. Đưa ra một nonce $n$, và một hàm băm $h()$, một khách hàng tính toán hàm băm của $n$ nhiều lần (nói $100$) và gửi lần đầu tiên $H^{(100)}$ ở đâu $H^{(100)}=h^{(100)}(n)$. Đầu tiên, làm cách nào để máy chủ xác thực danh tính của máy khách đối với giá trị do máy khách cung cấp đầu tiên, $H^{(100)}$? Chữ ký số/chứng chỉ?

Để xác thực tiếp theo, khách hàng sẽ gửi $H^{(99)}$ và máy chủ tính toán $h(H^{(100)})$ và nếu phép tính khớp với giá trị do máy chủ nắm giữ (nghĩa là $H^{(100)}$), máy chủ xác thực máy khách.

Bây giờ, giả sử có một kẻ tấn công đang ở giữa cuộc giao tiếp, liệu kẻ tấn công có thể chặn đơn giản không $H^{(99)}$ từ khách hàng và gửi $H^{(99)}$ đến máy chủ, do đó mạo danh máy khách chỉ cho phiên cụ thể này khi $i$$99$. Điều này có nghĩa là máy chủ thay vì xác thực kẻ tấn công thay vì máy khách. Đây không phải là mạo danh có thể? Và nếu vậy, OTP của Lamport bảo vệ chống lại điều này như thế nào.

Sử dụng chữ ký điện tử hoặc mã hóa khóa công khai cho mọi phiên xác thực dường như không phải là ý tưởng của Lamport đối với việc sử dụng lược đồ OTP của mình. Hiểu biết của tôi về OTP của Lamport là nó sử dụng CHỈ các hàm băm.

kelalaka avatar
lá cờ in
[OTP](https://en.wikipedia.org/wiki/One-time_password) không phải là chữ ký điện tử. Xem từ NIST [Recommendation for Stateful Lược đồ chữ ký dựa trên hàm băm](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf). Điều gì sẽ xảy ra nếu máy khách gửi $(H^{(i)},i)$ và giảm $i$ cho mỗi phiên, tất nhiên, máy chủ phải theo dõi $i$ như [Wiki đã đề cập](https:/ /en.wikipedia.org/wiki/One-time_password#Hash_chains)?
Điểm:2
lá cờ in
  • Về mặt ngắn hạn

    Một mặt của tính bảo mật của Mật khẩu dùng một lần của Lamport (LOTP) dựa trên thực tế là máy chủ lưu trữ hàm băm cuối cùng và cho lần tiếp theo, yêu cầu hàm băm trước đó và hàm băm đó để so sánh với hàm được lưu trữ lần cuối. Do đó, kẻ tấn công không thể sử dụng nó để mạo danh người dùng miễn là hàm băm có khả năng chống ảnh trước.

Ý tưởng của Lamport dựa trên tính bảo mật của Hash-Chain như sau;

  • Khởi tạo hệ thống

    1. Một hạt giống ban đầu $s$ là lựa chọn.
    2. hàm băm $H$ được áp dụng $n$-lần theo cách xếp tầng $$h_n = H^{(n)} = \underbrace{H(H(\cdots H(s) \cdots ))}_{n-times}$$ đến hạt ban đầu $s$ ở đâu $n$ có thể là 1000,10000, hoặc ..
    3. Máy chủ ban đầu lưu trữ $h_n$ ( và có thể $n$, quá)
    4. Người dùng lưu trữ $s$$n$
  • Cơ chế đăng nhập

    • Đối với lần đăng nhập đầu tiên

      1. Người dùng tính toán $h_{n-1}$
      2. Trong quá trình đăng nhập, người dùng gửi $h_{n-1}$ đến máy chủ.
      3. Kiểm tra máy chủ $H(h_{n-1}) = h_n$
      4. Trên một máy chủ đăng nhập thành công
        1. tăng bộ đếm $inc(c)$
        2. cửa hàng $h_{n-1}$
      5. Khi đăng nhập thành công, người dùng đã đặt $n = n-1$ (hoặc có thể là một biến khác)
    • Cho $i$-th đăng nhập

      1. Người dùng tính toán $h_{n-i}$
      2. Trong quá trình đăng nhập, người dùng gửi $h_{n-i}$ đến máy chủ.
      3. Kiểm tra máy chủ $H(h_{n-i}) = h_{n-i+1}$
      4. Trên một máy chủ đăng nhập thành công
        1. tăng bộ đếm $inc(c)$
        2. cửa hàng $h_{n-1}$
      5. Khi đăng nhập thành công, người dùng đã đặt $n = n-1$ (hoặc có thể là một biến khác)

Đây là những điều cơ bản và một số chi tiết được bỏ qua cho rõ ràng; Ví dụ; vì một số lý do, hệ thống có thể không đồng bộ, đó là số lượng người dùng có thể không được đồng bộ hóa với máy chủ. Để xử lý việc này, máy chủ có thể giữ một tham số nhìn về phía trước $t$, như vậy trên $i$-lần đăng nhập thứ nếu không có sự bình đẳng $H(h_{n-i}) \neq h_{n-i+1}$, máy chủ sẽ nhìn về phía trước nếu có kết quả khớp từ $h_{n-i+1}$ đến $h_{n-i-t+1}$.

Giờ thì sao nếu người thứ ba nhìn thấy mã thông báo LOTP và cố gắng mạo danh người dùng.

  1. Đối với lần đăng nhập mới, họ không thể sử dụng vì họ cần $H_{n-i-1}$. Để có được điều này, họ cần tìm một hình ảnh trước. Tất cả hàm băm mật mã đã duy trì chứng khoán hình ảnh trước của chúng bao gồm cả khả năng chống va chạm đã phá vỡ một MD5 và SHA-1. Điều này không có nghĩa là bạn nên sử dụng chúng, hãy ưu tiên những cái hiện đại như SHA-256, SHA-512, SHA-3, BLAKE2, v.v.

    Nếu hệ thống bằng cách nào đó cho phép người dùng sử dụng cùng một mã thông báo LOTP trong một phiên thì kẻ tấn công có thể mạo danh người dùng trong phiên này. Phạm vi tấn công không thể vượt quá phiên này do khả năng chống chịu trước hình ảnh.

    Nói tóm lại, tính bảo mật của LTOP dựa trên tính bảo mật trước hình ảnh của $H$

  2. Có thể nhìn về phía trước gây ra một vấn đề? Không. Máy chủ cập nhật các giá trị băm được lưu trữ trên mỗi lần đăng nhập. Nếu họ chỉ lưu trữ cái đầu tiên và băm $i$-lần kiểm tra OTP thì nhìn về phía trước là có điểm tấn công. Đây là một trong những lý do để giữ hàm băm cuối cùng và lý do khác là hiệu suất.

  3. Bí mật $\mathbf{s}$ kích thướcmặt khác, phải có ít nhất 128 bit đồng nhất và được tạo ngẫu nhiên để ngăn chặn hành vi vũ phu của $s$.

Jake avatar
lá cờ in
Cảm ơn bạn đã giải thích chi tiết của bạn. Thích ý tưởng về tham số nhìn về phía trước. Tuy nhiên, có một điều là quan điểm của tôi dường như vẫn chưa được hiểu. Lấy ví dụ một phiên mà người dùng gửi hn-1. Kẻ tấn công có thể chặn hn-1 và gửi nó đến máy chủ. Xét cho cùng, máy chủ không bao giờ xác thực nơi hn-1 đến từ. Tất cả những gì máy chủ làm là kiểm tra xem hn-1 băm thành hN. Vì vậy, nếu điều này xảy ra, điều đó có nghĩa là máy chủ thay vì xác thực kẻ tấn công thay vì người dùng? Hoặc có thể có một cái gì đó tôi đang mất tích.
Jake avatar
lá cờ in
Tôi đã mất một lúc để đưa ra nhận xét trước đây của mình, tôi chỉ hy vọng bạn hiểu được quan điểm của tôi. Ngoài ra, điều gì sẽ xảy ra khi người dùng ban đầu gửi hàm băm n lần của bí mật s. Tôi đang đề cập đến lần đầu tiên người dùng gửi hàm băm n lần của mình mà máy chủ bắt đầu làm việc. Làm thế nào để máy chủ đảm bảo danh tính của người dùng ở phiên bản đầu tiên? Hoặc chúng ta có thể giả định một kịch bản rằng máy chủ thực sự cung cấp bí mật cho người dùng theo một cách an toàn nào đó, khiến người dùng thay vì băm bí mật do máy chủ cung cấp. Theo tôi, đây có thể là một cách để máy chủ xác minh danh tính của người dùng.
kelalaka avatar
lá cờ in
1) Như tôi đã nói, câu trả lời không bao gồm tất cả các chi tiết. Điều gì sẽ xảy ra nếu máy chủ tăng hàm băm ngay khi họ xác thực người dùng và quên giá trị trước đó? Cuộc tấn công phiên tương tự chỉ có thể xảy ra do sự lựa chọn của người thiết kế. Nếu họ muốn ngăn chặn điều này thì có thể yêu cầu mã thông báo mới.
kelalaka avatar
lá cờ in
2) Bạn đã bao giờ nghe quy trình đăng ký chưa? Bí mật phải được tạo bởi người dùng phải được cung cấp cho người dùng theo cách an toàn giống như mã thông báo của ngân hàng. Sau khi người dùng và máy chủ đồng ý về việc đăng ký, người dùng có thể cung cấp $h_s$ của họ vào lúc này. xác thực người dùng phải yêu cầu ít nhất hai yếu tố như yếu tố bạn nên biết (mật khẩu) yếu tố bạn nên có (điện thoại/mã thông báo), v.v. LOTP là một yếu tố.
Jake avatar
lá cờ in
+1 cho phản hồi của bạn, cảm ơn

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.