Subject: [dnssd] shared public-key vs bi-directional shared public-key

From: Mohit Sethi M <[email-masked]>
Date: Sat, 3 Nov 2018 03:36:09 +0000

Hi DNSSD,

At the IETF 102 meeting, Stuart was presenting the various options for 
service discovery. One of the bullets on his slides was shared public-key.

I was at the mike asking questions about what is meant by service 
discovery with shared public-key. I was explicitly interested to 
understand what this would mean in practice?

I had understood the shared public-key mode for discovery as follows: a 
printer in a shared office will have a QR code containing its public-key 
(or possibly a hash of the public-key to reduce the amount of encoded 
information in the QR code). Anybody that wishes to discover the 
printer, would first scan the QR code to obtain the public-key of the 
printer.

However, this would not prevent a rogue invasive attacker from creating 
a database of public-key mappings to actual devices (and services 
offered by the device). This is analogous to war-driving for free Wi-Fi 
networks. A database containing the long-term public-key of the printer 
would allow an invasive person to monitor the network for messages 
containing the printers long-term public-key (or messages signed with 
the corresponding private-key). Whenever an innocent user tries to use 
the device (and its services), the invasive attacker would be able to 
observe this behavior. This might be acceptable in some cases 
(admittedly not all).

But someone responded at the mike line that I was incorrect and that you 
can indeed derive a Diffie-Hellman shared secret (to secretly discover a 
service) without ever sending any of the long-term public keys on the 
network.

I believe they were referring to the ideas presented in 
draft-bradley-dnssd-private-discovery-00. But this draft does not follow 
"shared public-key" model. It follows what would correctly be called as 
"bi-directional shared public-keys". The draft assumes that both the 
communicating parties have each others long term public-key. This would 
limit some use-cases. I can easily find the printers long-term public 
key by scanning a QR code. But how do I tell the printer long term 
public keys of my laptop or phone?

It would be nice if each draft presenting a solution could give a 
concrete example on how would you use the solution in the real-world.

I will send a more technical review of 
draft-bradley-dnssd-private-discovery-00 in a separate email.

--Mohit