Tuesday, June 23, 2009

"Hello, old bean"


Imagine the processing power you could fit into this old phone's shell now- we could use public-key encryption on every packet!

I've been looking at VOIP protocols and there's quite the little family there. Here's a non exhaustive list of the most basic:
  • H.323 - Used for setup and session signalling
  • SIP - Session Initialisation Protocol - Competing standard H.323
  • RTP - Real Time Protocol - Used for transmitting media packets
  • SRTP - Secure Real Time Protocol - Confidentiality & authentication for media packets
  • H.248 - Used on gateway devices
  • MGCP - Media Gateway Control Protocol - Competing standard to H.248
  • SDP - Session Description Protocol - Used to describe streaming media parameters

Whilst pretty much every VOIP device uses RTP to send the media packets, choosing a main session protocol (SIP or H.323) is a bit more involved. Although both perform the same basic functions, H.323 is older and more feature-rich (some say too-complex). SIP is newer, regarded as simpler to debug, and gaining in popularity. Both do some simple authentication, both are vulnerable to MITM attacks, and both can use IPSEC or TLS to mitigate against those attacks. SIP uses SRTP (which in turn uses AES encryption) if it wants to secure the media channel, H.323 uses AES more directly, but then still employs RTP for transmission.

For this project, I've chosen to implement SIP/SRTP over H.323/RTP. Frankly, the security abilities of each appear about the same. SIP/SRTP has a greater amount of existing OpenSource libraries & utils to get me started. This also allows me to split the project into phases- I can go off an implement call confidentiality using SRTP on its own as one phase, and handle the equally important key-exchange problem independently as a second phase.






0 comments:

Post a Comment