Documentation:Modules/rtp: Difference between revisions

From VideoLAN Wiki
Jump to navigation Jump to search
Create page, marked up/adapted from program output, with shortcuts and defaults from the source code
 
→Crypto: New section
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Module|name=rtp|type=Access|description=Real-Time Protocol ([[RTP]]) input}}
{{See also|Documentation:Modules/live555}}
{{Module|name=rtp|type=Access|first_version=0.7.0|description=Real-Time Protocol ([[RTP]]) input|sc=dccp|sc2=rtptcp|sc3=udplite}}


Shortcuts to this module include <code>dccp</code>, <code>rtptcp</code> and <code>udplite</code>. The only supported format for <code>rtp-dynamic-pt</code> is <code>[[theora]]</code>.
The only supported format for <code>rtp-dynamic-pt</code> is <code>[[theora]]</code>.


== SRTP ==
The module supports RTP with encryption ([[SRTP]]) through {{VLCSourceFile|modules/access/rtp/srtp.c|l=srtp.c}} using [https://directory.fsf.org/wiki/Libgcrypt libgcrypt] ([https://www.gnupg.org/documentation/manuals/gcrypt/ gcrypt manual]). There are no sub-modules or other shortcuts (in particular, <kbd>srtp</kbd> will not work).
Hexadecimal strings are base-16 numbers. Each character is one of <kbd>0123456789abcdef</kbd> (case-insensitive).
=== Crypto ===
Functions of interest (defined in {{VLCSourceFile|modules/access/rtp/srtp.c|l=srtp.c}} and {{VLCSourceFile|modules/access/rtp/srtp.h|l=srtp.h}}) lie in {{VLCSourceFile|modules/access/rtp/rtp.c|l=rtp.c}} between:
<syntaxhighlight lang="c">
#ifdef HAVE_SRTP
</syntaxhighlight>
and
<syntaxhighlight lang="c">
#endif
</syntaxhighlight>
In summary:
* SRTP sessions are one-way and re-keyed periodically
* To set or reset the master key and master salt for an SRTP session <code>int srtp_setkey (srtp_session_t *s, const void *key, size_t keylen, const void *salt, size_t saltlen)</code> is called
* The <code>setkey</code> values are currently hard-coded as [[wikipedia:Advanced Encryption Standard|AES]] in [[wikipedia:Block cipher mode of operation#CTR|counter mode]] authenticated with [[wikipedia:HMAC|HMAC]]-[[wikipedia:SHA1|SHA1]]; the salt with [[wikipedia:Pseudorandom function family|PRF]]-AES-CM. There are code comments suggesting this be improved
** [https://shattered.io/ SHA1 is deprecated] but using it here should be passably secure for now
* There are explanations (for hackers) in the form of code comments in the files
== Options ==
{{Option
{{Option
|name=rtcp-port
|name=rtcp-port
Line 8: Line 32:
|min=0
|min=0
|max=65535
|max=65535
|description=[[RTCP]] packets will be received on this transport protocol port. If zero, [[multiplex]]ed RTP/RTCP is used
|description=[[RTCP]] packets will be received on this transport protocol [[port]]. If zero, [[multiplex]]ed RTP/RTCP is used
|default=0
|default=0
}}
}}
Line 19: Line 43:
|name=srtp-salt
|name=srtp-salt
|value=string
|value=string
|description=[[SRTP|Secure RTP]] requires a (non-secret) master salt value. This must be a 28-character-long hexadecimal string
|description=[[SRTP|Secure RTP]] requires a (non-secret) master [[wikipedia:salt (cryptography)|salt]] value. This must be a 28-character-long hexadecimal string
}}
}}
{{Option
{{Option

Latest revision as of 05:02, 25 April 2019

Module: rtp
Type Access
First VLC version 0.7.0
Last VLC version -
Operating system(s) all
Description Real-Time Protocol (RTP) input
Shortcut(s) dccp, rtptcp, udplite

The only supported format for rtp-dynamic-pt is theora.

SRTP

The module supports RTP with encryption (SRTP) through srtp.c using libgcrypt (gcrypt manual). There are no sub-modules or other shortcuts (in particular, srtp will not work).

Hexadecimal strings are base-16 numbers. Each character is one of 0123456789abcdef (case-insensitive).

Crypto

Functions of interest (defined in srtp.c and srtp.h) lie in rtp.c between:

#ifdef HAVE_SRTP

and

#endif

In summary:

  • SRTP sessions are one-way and re-keyed periodically
  • To set or reset the master key and master salt for an SRTP session int srtp_setkey (srtp_session_t *s, const void *key, size_t keylen, const void *salt, size_t saltlen) is called
  • The setkey values are currently hard-coded as AES in counter mode authenticated with HMAC-SHA1; the salt with PRF-AES-CM. There are code comments suggesting this be improved
  • There are explanations (for hackers) in the form of code comments in the files

Options

  • rtcp-port <integer [0 .. 65535]> : RTCP packets will be received on this transport protocol port. If zero, multiplexed RTP/RTCP is used default value: 0
  • srtp-key <string> : RTP packets will be authenticated and deciphered with this Secure RTP master shared secret key. This must be a 32-character-long hexadecimal string
  • srtp-salt <string> : Secure RTP requires a (non-secret) master salt value. This must be a 28-character-long hexadecimal string
  • rtp-max-src <integer [1 .. 255]> : How many distinct active RTP sources are allowed at a time default value: 1
  • rtp-timeout <integer> : How long to wait (in seconds) for any packet before a source is expired default value: 5
  • rtp-max-dropout <integer [0 .. 32767]> : RTP packets will be discarded if they are too much ahead (i.e. in the future) by this many packets from the last received packet default value: 3000
  • rtp-max-misorder <integer [0 .. 32767]> : RTP packets will be discarded if they are too far behind (i.e. in the past) by this many packets from the last received packet default value: 100
  • rtp-dynamic-pt <string> : This payload format will be assumed for dynamic payload types (between 96 and 127) if it can't be determined otherwise with out-of-band mappings (SDP) default value: NULL

Source code

This page is part of official VLC media player Documentation (User Guide • Streaming HowTo • Hacker Guide • Modules)
Please read the Documentation Editing Guidelines before you edit the documentation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.