Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
2.6 KiB

  1. Digest authentication:
  2. 1) Digest clients can be subdivided into serial clients and parallel clients.
  3. We know how serial clients work. Parallel clients are two or more serial clients
  4. operating concurrently, sharing authentication data (specifically nonces). We
  5. postulate no a priori specific behavior for the parallel client nonce cache.
  6. 2) Parallel clients exist. Servers will receive multiple concurrent requests
  7. from single clients.
  8. 3) Given that parallel clients exist, what are possible modes of server behaviors
  9. regarding the generation and acceptance of nonces? There are several base cases and
  10. several degenerate cases
  11. a) Base case : A server generates a single nonce and always accepts it.
  12. b) Base case : A server generates unique nonces which are accepted only once
  13. and timeout.
  14. c) Degenerate case: A server generates a single nonce and only accepts it once.
  15. d) Degenerate case: A server generates varying nonces but accepts only one of them.
  16. Normal server behavior is assumed to be a composition of a) and b).
  17. Are there any other server nonce behaviors possible? Specifically, can the
  18. server specify any kind of ordering on the nonces that are received? No. The
  19. reason for this is that the underlying transport is asynchronous. The
  20. server cannot require that one nonce is received before or after another nonce,
  21. since it cannot guarantee any kind of ordering of requests from the client or
  22. client responses. Because the server cannot guarantee ordering, neither can the
  23. client, so it makes no sense for the client to enforce ordering in what nonces are
  24. used with requests.
  25. 4) Given the above, the distinction between nonces and nextnonces is confusing, and
  26. actually meaningless. A nonce results from a 401, a nextnonce results from a 200. Each of
  27. them specifies what should be used on the next request. Should they be treated differently?
  28. If so, how? Suppose a client makes two requests which result in two challenges. The response
  29. to the first challenge goes through and results in a nextnonce. Should this nextnonce override
  30. the nonce about to be used in the response to the challenge of the second request? If so, this
  31. would imply an ordering on the client side, which we know doesn't make sense.
  32. 5) Given this, the spec stating that clients SHOULD use the nextnonce value on the subsequent
  33. request is meaningless. What's the next request? What if another nextnonce value comes in before
  34. another request goes out? What if the nextnonce comes in 'late' ? This is a meaningless stipulation.