Re: [perpass] privacy implications of UUIDs for IoT devices

"Christian Huitema" <huitema@huitema.net> Fri, 07 October 2016 17:23 UTC

Return-Path: <huitema@huitema.net>
X-Original-To: perpass@ietfa.amsl.com
Delivered-To: perpass@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1246B129508 for <perpass@ietfa.amsl.com>; Fri, 7 Oct 2016 10:23:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.602
X-Spam-Level:
X-Spam-Status: No, score=-2.602 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cx_IlFvvOLrZ for <perpass@ietfa.amsl.com>; Fri, 7 Oct 2016 10:23:00 -0700 (PDT)
Received: from mx36.antispamcloud.com (mx36.antispamcloud.com [209.126.110.250]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C6362129663 for <perpass@ietf.org>; Fri, 7 Oct 2016 10:23:00 -0700 (PDT)
Received: from xsmtp01.mail2web.com ([168.144.250.230]) by mx36.antispamcloud.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.86) (envelope-from <huitema@huitema.net>) id 1bsYrK-0003FK-Vc for perpass@ietf.org; Fri, 07 Oct 2016 19:23:00 +0200
Received: from [10.5.2.49] (helo=xmail11.myhosting.com) by xsmtp01.mail2web.com with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from <huitema@huitema.net>) id 1bsYrE-000224-Uo for perpass@ietf.org; Fri, 07 Oct 2016 13:22:58 -0400
Received: (qmail 622 invoked from network); 7 Oct 2016 17:22:52 -0000
Received: from unknown (HELO icebox) (Authenticated-user:_huitema@huitema.net@[24.16.156.113]) (envelope-sender <huitema@huitema.net>) by xmail11.myhosting.com (qmail-ldap-1.03) with ESMTPA for <daniel.kaiser@uni-konstanz.de>; 7 Oct 2016 17:22:51 -0000
From: Christian Huitema <huitema@huitema.net>
To: 'Michael Richardson' <mcr@sandelman.ca>
References: <5c32e81f-7e43-2bde-b8f4-46f08fecdefb@cs.tcd.ie> <db516334-43ab-e967-cfd5-87d920b65015@filament.com> <8195a761-9714-df53-0c42-43bac757b203@gmail.com> <029701d21f6d$ab5e5c70$021b1550$@huitema.net> <30295.1475762265@obiwan.sandelman.ca> <02aa01d2203b$e7e3a1e0$b7aae5a0$@huitema.net> <7310.1475853035@obiwan.sandelman.ca>
In-Reply-To: <7310.1475853035@obiwan.sandelman.ca>
Date: Fri, 07 Oct 2016 10:22:49 -0700
Message-ID: <01db01d220bf$6e35d5f0$4aa181d0$@huitema.net>
MIME-Version: 1.0
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQHrHhqZ7lEOm5Y+wD7zgEwKzfRBMgHbrl67ATmTp5cB1jgsIAGVQjBPAiJC9OUB1YN0wqAXdHdA
Content-Language: en-us
X-Filter-ID: s0sct1PQhAABKnZB5plbIVbU93hg6Kq00BjAzYBqWlUcW8ntawmIBRrYFzUH2lbvx1wTMkEUUoeb KIhkyzl2dO5jGoutCtPJ/11xS2TwWqZOY5lkjXYUoNnYIToAcyNTM4a8dHyy/6XKHITvJur9hR0p xaGJF9VJMixz6X/wphR5Jb6paMiBTPHrkfAaXZ4UIbtf63VNbf0lrvssY+k7AEofBVNG/3HAcYkT jK1+QSTg0sd5fD6p84PR7BIGp5BpDTQlgKl0NCglTv0GMiLlbZnckpWaLvahyBjmQxBKOzvQAufT jZZvuYhxtUmLumqmDO+ustUYaLmreOUtW3+6dGwRQ/sqwRqmJ6VubCWLo93TPpuFqUUQz+mM8JAD 4ECWhNUYgqtYNILWSAY+Fvn3JBILKgSTD/NX0ENWAOoHFGLn7qCHm7t9J44StsUNvjV8/2rAztFe klLxGNN3KHaPkHjAtYpWjlxpV9EL7OSJ3VWOecfSiNGtWyX+SkzL/xDONGP0PwcsocAqk8Y/wQ+e 4Bn8TZYUMmZkt04C8NgOiGIE2zQ4G9/6t2mVlEiJsf0WYXCFpq8YnEJMb3PcNAkxC60jiD6XqsJZ tjQxlyCdsezipi5yDiig4uL/e3hw9DLyM+540POWImOXNQcRyCdG97cH6r5tQdcCxgWCw1EQaGW+ wt1wLYdmK1XFwa0D0D4g
X-Report-Abuse-To: spam@mx99.antispamcloud.com
X-Originating-IP: 168.144.250.230
X-SpamExperts-Domain: xsmtpout.mail2web.com
X-SpamExperts-Username: 168.144.250.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=168.144.250.0/24@xsmtpout.mail2web.com
X-SpamExperts-Outgoing-Class: unsure
X-SpamExperts-Outgoing-Evidence: Combined (0.40)
X-Recommended-Action: accept
Archived-At: <https://mailarchive.ietf.org/arch/msg/perpass/qwQAR4qYLRt_B1cK8cjzMbjhGSI>
Cc: 'Daniel Kaiser' <daniel.kaiser@uni-konstanz.de>, perpass@ietf.org
Subject: Re: [perpass] privacy implications of UUIDs for IoT devices
X-BeenThere: perpass@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "The perpass list is for IETF discussion of pervasive monitoring. " <perpass.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/perpass>, <mailto:perpass-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/perpass/>
List-Post: <mailto:perpass@ietf.org>
List-Help: <mailto:perpass-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/perpass>, <mailto:perpass-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 17:23:03 -0000

On Friday, October 7, 2016 8:11 AM, Michael Richardson wrote:

> Christian Huitema <huitema@huitema.net> wrote:
>>> I'd love to find a way to send the identifier only to an authorized
>>> operator,
>>> which is resistant to an active MITM, given that the new device (the
>>> pledge)
>>> doesn't know who the authorized operator is yet.
>
>> We are looking at that in the pairing draft in DNSSD
>> (https://tools.ietf.org/html/draft-kaiser-dnssd-pairing-00). The
hypothesis
>> is that the two paired devices can display a short authentication
>
> This might be fine for larger devices with displays, but it's a fail
> everywhere else.  Even in ANIMA, one could have a $300K BFR being
deployed,
> but it doesn't have a display or a person to read the display.
> But, does this device need privacy?
> But, the same system ideally bootstraps home routers, which at $39.95,
still
> don't have a display or a competent human to read the display.

You need some signal -- you cannot build trust out of zero knowledge and
zero signal. 

This is not a new problem -- I am copying Daniel, who studied all that in
great detail for his PhD. Over time, we have seen two solutions emerge for
device pairing. Visual comparison of "short authentication strings" is
arguably the best compromise between security and usability. It is widely
used when the devices can display something, e.g. when pairing smart phones,
tablets, PC and cars. The next most used solution is "push buttons". Push
buttons at the same time on both devices, and accept the messages exchanged
during that short time interval. If there is no MITM at that time, you are
good, but you have no way to know that. 

Many other solutions have been tried. One of them is to burn some kind of
key or code in one of the devices, document it on a tag, and use it on the
other device to verify the exchange. It may work for big expensive devices,
but it is a real pain for inexpensive devices because it introduces
additional steps in the manufacturing process. Besides, it requires that the
user reads and enters a long code, and that fails most usability tests.

Besides that, there are solutions that attempt to use alternative channels.
People have demonstrated pairing with the help of ultrasound, but that never
caught. The "synchronized blinking lights" are probably the cutest solution
from the literature. It is basically the same as short authentication
strings, but with no display, just one LED on each device. Instead of
displaying a hash on a screen, you use the hash to determine the pseudo
random blinking pattern of the two lights. If they blink in unison, the user
is assured that there was no MITM. Really cute, but has not quite caught on
yet.

As for the question whether devices need privacy, clearly it depends. My gut
feeling is that mobile devices do. Portable devices, most certainly do.

>> e.g. 6-7 digits. Given that, we can establish a TLS connection without
prior
>> credentials between the two parties, with a probability 99.9999% that

> Such as was done with the STU-III phone...

>> There is another trick, used in the privacy extensions to DNS-SD
>> (https://tools.ietf.org/html/draft-huitema-dnssd-privacy-02). Use TLS
PSK,
>> or better yet TLS/ECDH/PSK. Instead of PSK ID, send a puzzle that can
only
>> be solved by parties knowing the PSK, e.g. nonce + hash (nonce, PSK).
That
>> guarantees connection without MITM, and also without disclosure of the
>> identities to third parties. Problem, it scales as O(number of PSK) known
by
>> the server. We could probably devse an extension of that using public key
>> technology.
>
> How does the responding end know which PSK to try?
> I guess that's why it scales O(number of devices), because the responder
has
> to try *all* of the PSK it knows?  Wow.

BT-LE uses the same pattern. It works, as long as the number of PSK is not
too large. In our draft, we proposed a trick to reduce the server load. Use
a coarse clock as the nonce, e.g. the current time rounded to the nearest 10
minutes. This ensures that the server only has to compute the possible
hash(nonce, PSK) once every 10 minutes. It also defeats the potential DOS
attack in which a botnet bombs the server with connection requests and
forces lots of computations. But clearly there a limits. Would probably be
OK for a few hundred PSK, maybe a few thousands, but after that it breaks. 

> With public key technology, one could sign something, send the signature,
and
> let the responder try all the public keys it knows?  Basically, just omit
the
> Certificate in the handshake.

It is actually very hard to protect the servers using public key technology
alone. The public key is not expected to be secret. If the attackers know
the public key, they can probe for the presence of a server by attempting a
connection. 

What might work is a combination of public key and PSK. Use the known public
key of the server to encode the PSK ID, and then add a proof that the client
sending the message owns the PSK. Third parties cannot deduce the client ID
or the server ID from the initial message, only the server can decrypt its
own public key and identify the client, and everything after that initial
message will be encrypted. You do have to include a nonce in the initial
message to prevent replay attacks, but it could work.

-- Christian Huitema