
You are developing a client/server-based application in which the client shall communicate with the server through a trusted channel supported by symmetric encryption. Secret keys shall be generated and changed periodically to secure communication. Which of the following is the best design to generate secret keys in terms of scalability and the work factor? (Source: Wentz QOTD)
A. The client using a pseudorandom number generator (PRNG)
B. The client employing the onboard crypto processor
C. The server invoking the operating system’s API
D. The server utilizing the hardware security module



