Hi list,
I'm trying to establish what mechanisms are available for encrypting
of TURN / STUN exchanges. I have found it somewhat unclear from the resources
I have found to date particularly wrt. UDP support so I thought it would be informative in my case
(and for future readers) to ask my questions to the list.
In the webrtc codebase (peerconnection.cc) I can see that stun/turn servers can be supplied with the protocol scheme of "stuns" and "turns" which the comments say "Indicates a [STUN | TURN] server used with a TLS session".
my question is: are both TCP and UDP supported here?
in the case of STUN / UDP I know there is a specification for STUN over DTLS:
https://tools.ietf.org/html/draft-ietf-tram-stun-dtlsHowever, it isn't clear if this is implemented in webrtc and I found this issue which suggests it isn't:
https://code.google.com/p/webrtc/issues/detail?id=3644Can anyone clarify this?
Note: I'm using the native webrtc library (in java code) so in my case I am not constrained by what particular browsers support.
I have the same question in relation to TURN, i.e. assuming I disabled STUN entirely such that p2p was not an option and I was only using a TURN relay then how can I ensure that the turn authentication credentials and other user-specific information is encrypted?
i.e. would a UDP flavour of "turns" require the same "STUN over DTLS" capability as discussed above?
If the DTLS approach is not yet supported then am I restricted to using TCP for STUN/TURN if I want encryption?
If so what are the downsides of using TCP over UDP in this case? i.e I'm somewhat unclear about why I would prefer one over the other in the case of NAT traversal.
I'd be very grateful for any feedback / pointers.
Thanks.
RD