Skip to content
This repository has been archived by the owner on Feb 21, 2022. It is now read-only.

Protocol SRTP

Alexander Thoukydides edited this page Dec 27, 2017 · 4 revisions

Doorbell ↔ Cloud ↔ SkyBell HD App SRTP Usage

⚠️ The following description is based on sniffing the (encrypted) packets sent and received by a SkyBell HD doorbell and its companion iPhone app. There may be significant errors and omissions.

The video and audio for Watch Live calls is carried over six SRTP streams, each with an accompanying RTCP channel. These are all proxied via the cloud services:

┌────────────┐                   ┌─────┐                    ┌─────────────┐
│ SkyBell HD │                   │ AWS │                    │ iOS/Android │
└─────┬──────┘                   └──┬──┘                    └──────┬──────┘
      │                             │                              │
      │                           ┌─┴─┐                            │
      │Camera     (SRTP)    Port X│   │Port X+4   (SRTP)   Video in│
      ├──────────────────────────►│   ├───────────────────────────►│
      │           (RTCP)  Port X+1│ S │Port X+5   (RTCP)           │
      ├──────────────────────────►│ R ├───────────────────────────►│
      │                           │ T │                            │
      │Microphone (SRTP)  Port X+2│ P │Port X+6   (SRTP)   Audio in│
      ├──────────────────────────►│   ├───────────────────────────►│
      │           (RTCP)  Port X+3│ p │Port X+7   (RTCP)           │
      ├──────────────────────────►│ r ├───────────────────────────►│
      │                           │ o │                            │
      │Speaker    (SRTP)  Port X+2│ x │Port X+6   (SRTP)  Audio out│
      │◄──────────────────────────┤ y │◄───────────────────────────┤
      │           (RTCP)  Port X+3│   │Port X+7   (RTCP)           │
      │◄──────────────────────────┤   │◄───────────────────────────┤
      │                           └─┬─┘                            │
      │                             │                              │

Refer to the overview and HTTPS requests for details of how these streams are established.

Codecs

The video and audio codecs are:

Media SkyBell RTCP PT Codec
Video Camera 96 H.264/MPEG-4 AVC
1080, 720p, or 480p
up to 30 fps
Audio Microphone & Speaker 97 16-bit LPCM
8ksps
little-endian (not L16)

SSRC (Synchronisation Source identifier)

Different SSRC values are used for the camera, microphone and speaker streams. The same SSRC values are used for the same stream between the doorbell and cloud, and between the cloud and app.

Cryptographic Attributes

The SRTP streams are protected using the AES_CM_128_HMAC_SHA1_80 crypto-suite.

The same key and salt values are used for all six streams. This enables the cloud servers to simply forward the SRTP packets without decrypting and re-encrypting them. However, since the cloud services know the key/salt values this cannot be considered end-to-end encryption.