Skip to content

Add safety-number / fingerprint verification UI #490

Description

@muke1908

Split out of #403 (item 6).

The current design generates the invitation secret client-side and passes it only via the URL fragment, so the signaling server can't swap it unnoticed (see service/src/crypto/inviteCrypto.ts). However, neither participant has a way to confirm out-of-band that both sides actually derived the same secret — if the invite link itself is intercepted/retransmitted via a compromised channel, there's currently no detection mechanism, mirroring the lack of Signal-style "safety number" verification.

Proposed scope:

  • SDK: derive a short, human-comparable fingerprint (digest of the invite-derived material, domain-separated from the chat/signaling secrets the same way deriveChannelSecrets() already separates those) and expose it via a new IChatE2EE method (e.g. getSafetyNumber(): Promise<string>).
  • Client: a small UI surface (e.g. in the existing chat header/settings area) letting both participants display and verbally/out-of-band compare the fingerprint.

Out of scope for this issue: re-architecting key exchange — this is purely an additional verification step layered on top of the existing invite-secret model. Should land after #447 is resolved/rebased so it builds on a settled key-exchange mechanism.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions