‹ BackHN Continuity

Thread

Keys Not Included: recovering the signing keys for US driver's license barcodes

289 points · 152 comments · Ryan5453

  1. dmurray · · focus · HN ↗
    This is a great investigation but I have two small nits:

    > the ZNB field is not empty and not garbage: it contains a well-formed 71-byte DER ECDSA signature, correctly Ascii85-encoded, with the right prefix and a plausible length. But it fails the cryptographic check instantly, because it was signed with somebody else's key.

    Seems doubtful! I expect the forgers used a real signature from another card instead, so it has the right key but the wrong data. Reverse engineering the process as the author did and making up their own key wouldn't be of any value to the forgers.

    > I built a little demo to check the signatures across California, New York, and Virginia: take a picture of the barcode and check it here.

    This is not wrong, but should come with a little warning. A real verifier needs to additionally check the encoded data matches the human-readable data on the front of the card.

    1. crote · · focus · HN ↗
      > A real verifier needs to additionally check the encoded data matches the human-readable data on the front of the card.

      I mean, not really? Only the machine-readable part is signed, so it should be treated as the sole source of truth. Besides, only an idiot forger would put different data in the human-readable part - it would be the easiest way to get caught!

      1. andylynch · · focus · HN ↗
        I quite like the way passports touch on this - the electronic part has a password; that password is made up of info from the printed data page - so you need both sets of information to validate it.
        1. Ryan5453 · · focus · HN ↗
          The ICAO standard for passport chips is really well done. Especially since you can read the photo from the chip itself.
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.