The Internet of Broken Protocols: Showcase #3

(complete list of showcases: https://www.hyundaihatinh3s.com/search/label/The%20Internet%20of%20Broken%20Protocols)

Administrative note: I'm going to post my solution for showcase #1 soon. The answers that I got from readers are great, I've already learned something new. Thank you and please keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m coming!

Updated: solution posted! Sorry for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 delay :)

---

Bob bought a smart lock. The lock has a small screen, supports Bluetooth, and once paired with a phone it automatically unlocks itself when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone is nearby. The manufacturer doesn't rely on Bluetooth for security, but designed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own protocol. You'll find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protocol below, please identify any weaknesses. You can comment or email me at thaidn@gmail.com with your solution. I'll update this post with my solution in 48 hours.

The protocol consists of two sub protocols: pairing and unlocking. Bob needs an app made by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock manufacturer.

# Pairing

1/ The lock and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app perform an unaucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated Curve25519 key exchange. Let K denote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 32-byte shared secret.

2/ The lock calculates HMAC-SHA256(K, "SMARTLOCK"), converts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MAC to a number and displays on its screen cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 6 digits.

3/ The app calculates HMAC-SHA256(K, "SMARTLOCK"), converts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MAC to a number and displays on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone screen cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 6 digits.

4/ Bob compares cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two numbers and presses OK on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app to proceed if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y match; ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise he presses CANCEL to close cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 connection. This step helps prevent man-in-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365-middle attacks.

5/ If Bob pressed OK in step 4, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pairing is considered successful.

# Unlocking

1/ The app and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock initialize a counter which starts with 0. This counter helps prevent replay attacks.

1/ Every 20 seconds, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock broadcasts over Bluetooth HMAC-SHA256(K, "PLEASE UNLOCK ME").

2/ If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone is nearby it would see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 broadcast and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app would verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HMAC and send counter || HMAC-SHA256(K, counter || "OK UNLOCK YOURSELF"). The app increases its counter.

3/ The lock verifies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HMAC, extracts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 counter and checks that it is larger than or equal to its local counter. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HMAC is invalid or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 counter is smaller, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock does nothing. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise it overwrites its local counter with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new value and unlocks itself.

---

I got answers from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usual suspects, i.e., Andrew L., Thắng N., Carl M. and Alex B. Andrew L. provided cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most comprehensive answer, so I'm going to use that as my answer :). Note that none racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than Andrew actually discovered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second paragraph.

"The pairing protocol doesn't seem to use short aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication codes right.  A strong protocol would cause both devices to commit to showing a code before eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r device learns what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code is.  Since nothing appears to do this, a MITM could force ~1M key exchanges with each side until it gets lucky and gets cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same code on both sides.

That attack can be strengcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ned by trying ~1M DH secrets internally until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right code occurs.  Since DH is usually fast, this allows a MITM to be undetected in a single try.

If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DH exchange has small subgroups, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n a MITM can probably even force cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same full key on both sides by replacing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DH public keys with generators of a small subgroup.

(Hey, protocol designers: after doing DH, you still have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public keys you exhanged.  Use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m!)

Unlocking is weak, too.  The lock sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same challenge every time.  An attacker can send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone is nowhere near cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n relay cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock.

(Hey protocol designer: you have bidirectional communication.  Have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock send a unique challenge and have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone send a MAC or similar response to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge.  And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lock enforce a short time limit on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole exchange to make long-distance relaying harder.)"

Now a new challenge: how do you fix this protocol?

Comments