Say I have a central server whose job it is to tell a load of my other servers what to do. These other servers are running API's listening for instructions from my central server.

How can I cryptographically guarantee, on my listening servers that a request originates from a central server?

The listening server must only be able to verify that the request originates from my central server, it must not be able to also sign or encrypt requests, only decrypt or verify the signature.

Anything on the listening server can be pre-distributed before the server is deployed.

What are my best options in this case? SSL Certificates, Public Key/Private Key, something else? How would I go implement it (high level explanation)

  • I'm not sure what you are asking. Digital signatures are the precise answer to this question. You mention it, but appear to avoid it. – schroeder Nov 23 '17 at 15:56
  • Are you asking how digital signatures work? – schroeder Nov 23 '17 at 16:45

Your central server generates a public/private key pair. The public key is distributed to all the listening servers, the private key is kept, um, private.

Any command send by the central server is signed with its private key. The first thing the listening server does when it receives a command is verify the signature (using the public key). If the verification fails, write to the error log, and ignore the command.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.