Contact Exchange

Exchange contact cards securely by scanning QR codes in person.


How It Works

Vauchi uses in-person exchange to establish contact relationships. Both parties must be physically present to complete an exchange.

sequenceDiagram
    participant A as You
    participant B as Contact

    Note over A,B: Meet in person

    A->>B: Show QR code
    B->>A: Scan QR code
    Note over A,B: Proximity verified
    A->>B: Scan their QR code

    Note over A,B: Exchange complete!
    Note over A,B: Both have each other's cards

Why In-Person?

The in-person requirement is a privacy and security feature:

ThreatHow In-Person Prevents It
SpamCan't be added by strangers
ImpersonationYou verify identity yourself
Man-in-the-middleDirect device communication
Screenshot attacksProximity verification

Exchange Methods

QR Code (Primary)

The main method for exchanging contacts:

  1. Open the Exchange tab
  2. Show your QR code
  3. Have the other person scan it
  4. Scan their QR code
  5. Exchange complete

QR codes expire after 5 minutes for security.

Proximity Verification

On iOS, Vauchi verifies physical proximity using ultrasonic audio:

  • Both phones emit and listen for an audio handshake (18-20 kHz)
  • Range: approximately 3 meters
  • If verification fails, exchange falls back to manual confirmation
  • This prevents screenshot attacks

Android proximity verification is planned.

Troubleshooting Proximity (iOS)

If proximity verification fails:

  1. Ensure both phones have working speakers/microphones
  2. Move closer together (within 2-3 meters)
  3. Reduce background noise
  4. Disable any audio-blocking apps
  5. Try again — or confirm manually when prompted

On desktop and CLI/TUI, proximity verification is not available — manual confirmation is required instead.

After Exchange

Once exchange completes:

  • The new contact appears in your Contacts list
  • You can see their contact card (fields they've shared)
  • They can see your contact card (fields you've shared)
  • Future updates sync automatically

Security Properties

PropertyMechanism
Proximity requiredUltrasonic audio handshake (iOS); manual confirmation (other platforms)
No man-in-the-middleX3DH key agreement with identity keys
Forward secrecyEphemeral keys discarded after exchange
Replay preventionOne-time token, 5-minute expiry
Card authenticityEd25519 signature on contact card