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.

 ┌─────┐               ┌─────────┐   
 │ You │               │ Contact │   
 └──┬──┘               └────┬────┘   
    │                       │        
    │     Show QR code      │        
    │───────────────────────▶        
    │                       │        
    │     Scan QR code      │        
    ◀───────────────────────│        
    │                       │        
    │┌────────────────────┐ │        
    ││ Proximity verified │ │        
    │└────────────────────┘ │        
    │                       │        
    │  Scan their QR code   │        
    │───────────────────────▶        
    │                       │        
    │┌────────────────────┐ │        
    ││ Exchange complete! │ │        
    │└────────────────────┘ │        
    │                       │        
┌──────────────────────────────┐     
│ Both have each other's cards │     
└──────────────────────────────┘     
    │                       │        
 ┌──┴──┐               ┌────┴────┐   
 │ You │               │ Contact │   
 └─────┘               └─────────┘   

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