I'm trying to implement mutual authentication for a TLS connection between a server (ONOS OpenFlow controller) and multiple clients (OpenFlow switches). I'm restricted in that I must create a single firmware image that will be pushed to the switches and the switches must not be manually configured after that.

Traditionally, one would set up a central authority and once the client created it's key pair the CA would sign it. As far as I understand, this is not possible with the restrictions because the signing process needs to be done manually.

Authentication of the server on the clients should not be a problem because the servers public key can be included in the firmware image.

Is it possible to achieve client authentication with these restrictions? Would it be an acceptable solution to distribute one single key pair to all clients in the firmware image?

Reference: OpenFlow specification - https://www.opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.5.1.pdf#subsubsection.6.3.6

  • $\begingroup$ "and the switches must not be manually configured after that" - but can they be booted up? Because it is certainly possible to automatically generate a key pair and retrieve a certificate for the generated public key... Of course you'd want to do that in a secure environment where you can identify & authenticate the switches by other means. $\endgroup$ – Maarten Bodewes Dec 9 '19 at 13:16
  • $\begingroup$ They can be booted up and they can automatically generate a key pair. The step where I'm struggling is to then somehow sign this key pair without manual intervention so the server can authenticate it. $\endgroup$ – Paul Purcell Dec 9 '19 at 13:47
  • 1
    $\begingroup$ Which part is blocking you? For sure, most CA software can be used to sign automatically or even perform batch operations. I'm absolutely sure that the CA software that I was using did that; if you're in the smart card industry you don't want to create each certificate manually :) $\endgroup$ – Maarten Bodewes Dec 9 '19 at 15:03
  • $\begingroup$ How does the CA software ensure the client is not malicious, i.e. how does it decide if it should sign the certificate or not? And since the whole signing process would be carried out over the network, are there any standard protocols that could be used? $\endgroup$ – Paul Purcell Dec 9 '19 at 16:57
  • $\begingroup$ If you do the operation directly after flashing the firmware then the device is trusted, right? How otherwise do you know which device to put the firmware on? If you cannot trust the device anywhere in the process, well, yes, then it cannot be trusted period.... write them off, let's close up the bridge, let's get out of here, close it up, lights out.... or talk to the device manufacturer and include something authentic, I suppose :P $\endgroup$ – Maarten Bodewes Dec 9 '19 at 20:23

Your Answer

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

Browse other questions tagged or ask your own question.