Daniel B. answered 12/06/20
PhD in Computer Science with 42 years in Computer Research
3) It is used to agree on a session key.
Public and private keys remain unchanged over many sessions and are
used to agree on the session key.
4) All of the above are used to "assure" integrity of communication.
I put "assure" into quotes because these measures can only reduce
the probability that corruption will not be detected.
The reduced probability can be made very close to 0.
5) The answer "given message M, it is computationally infeasible ..."
is definitely correct, because that is the very purpose of a hash function.
The answer "it is a symmetric key algorithm" is definitely incorrect, because
a hash function may normally map many messages to the same output.
The answer "it will produce a constant output for messages under 1KB in size"
could be a property of some hash functions, but it is not inherent for all hash functions.
A hash function could be designed to "produce a fixed length output for an input of arbitrary length",
but that would not be a good hash function.