An open-source C library implementing the Secure Real-time Transport Protocol (SRTP) for encrypting and authenticating RTP/RTCP media streams.
libSRTP is an open-source C library that implements the Secure Real-time Transport Protocol (SRTP), an IETF standard profile for providing confidentiality, message authentication, and replay protection to Real-time Transport Protocol (RTP) traffic. It solves the problem of securing real-time media streams, such as those used in VoIP, video conferencing, and telephony, against eavesdropping and tampering.
Developers and engineers building secure real-time communication applications, including VoIP clients, video conferencing systems, streaming media servers, and embedded devices that handle RTP/RTCP traffic.
Developers choose libSRTP because it is a mature, widely deployed, and standards-compliant library that provides a robust and portable implementation of SRTP. Its support for multiple cryptographic backends, flexible session and stream policy management, and inclusion of both mandatory and advanced features (like AES-GCM) make it a reliable foundation for adding security to RTP-based applications.
Library for SRTP (Secure Realtime Transport Protocol)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements all mandatory features of RFC 3711, ensuring interoperability with other SRTP systems, as stated in the README's Supported Features section.
Supports internal crypto, OpenSSL, or NSS backends, allowing optimization for performance and enabling advanced algorithms like AES-192 and AES-GCM, per Implementation Notes.
Includes authenticated encryption as defined in RFC 7714, providing enhanced security for real-time streams, which is highlighted in the Supported Features.
Built-in replay protection mechanisms within the crypto engine help prevent packet reuse attacks, as noted in the Key Features and Implementation Notes.
Does not support some SRTP optional features like key derivation rates other than zero or the F8 cipher, as admitted in the Supported Features section.
Requires building with autotools, CMake, or Meson, and configuring external crypto backends for features like AES-GCM, which adds setup overhead compared to simpler libraries.
The srtp_protect() function assumes sufficient buffer allocation, risking memory corruption if not managed carefully, as warned in the Implementation Notes.