AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 35 Bitcoin

usb: add ncry v3 authenticated encryption

Public commit record

What the developer wrote

Authored by scgbckbone

45/100 · Thin
usb: add ncry v3 authenticated encryption
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
The short version

What changed, and why it matters

This commit adds a new, more secure USB encryption mode (ncry v3) to the COLDCARD hardware wallet firmware. It does not remove the older v1/v2 mode. The new mode adds message authentication tags and separate keys for each direction, which protects against tampering, replay, and reflection attacks on the USB cable. The commit also fixes a timing side-channel in user authentication by replacing direct HMAC comparisons with a constant-time comparison. The change is defensive and improves security, but the old unauthenticated modes remain available for compatibility, so users must actively choose v3 to get the stronger protection.

Recommended action

This is a security-hardening commit. Users and client software should opt into USB_NCRY_V3 when both client and firmware support it, and should pair it with the existing mitm command to verify the device endpoint. Developers should review the new constants and ensure the firmware build includes the updated ckcc-protocol submodule. No immediate incident response is required, but organizations using COLDCARD should plan to migrate clients to v3 for sensitive operations.

Security signals we found

01

Adds authenticated encryption (AES-CTR + HMAC) for USB channel

02

Derives direction-separated encryption and MAC keys via HKDF-Expand

03

Binds derived keys to protocol version and both ephemeral public keys

04

Adds sequence numbers and direction labels to prevent replay/reordering/reflection

05

Terminates USB session on any v3 authentication/framing failure

06

Replaces direct HMAC comparison with constant-time consteq() in user authentication

07

Adds new public constants for v3 protocol labels and wire limits

08

Updates ckcc-protocol submodule to support v3 client-side

09

Documents MITM limitations and recommends separate mitm command for endpoint authentication

Risk score

Why this scored 35/100

Our methodology →
Potential impact 8/30
Exploitability 5/25
Stealth signal 4/15
Affected reach 6/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.