How secure is encrypted voice chat?

:abacus: This is going to be technical:

I just enabled “Channel voice data encryption” and according to the Knowledgebase article the encryption type is “AES based” which means that both the client and the server must know the key for encryption / decryption, which in turn means there must be a way to exchange the key between the client and the server.

I noticed, that I didn’t have to choose a passphrase for the encryption so I wondered what key is used for encrypted voice chat.

My first thought was that the server password might be used (which IMHO would not be very secure but still better than nothing). But I tried removing the server password and I’m still able to enable encryption. So it must be something else.

Another option would be, that it is hard-coded into the client / server software, which I refuse to believe as it would be fatal and effectively no encryption.

The third option I can think of is that an asymmetric key exchange (like RSA) might be used, which would be fine.

Could some developer or otherwise eligible person please confirm which method is used for AES key exchange?

6 Likes

I’ll speak to the council of wizards about this and get back to you as soon as I can.

image

8 Likes

5 Likes

Hope to get a reply ASAP

I’m interested in that too :smiley:

When voice encryption is being enabled we use AES-256-EAX to encrypt the voice traffic. For key exchange we use ECDH with ed25519 as curve. Both sides generate a new keypair on every connect and exchange them. There is also a identity validation that is based on ECDSA with prime256v1 as curve.

10 Likes

thank you for your reply

How do I verify that I didn’t connect to a malicious server if I’ve never connected to a specific server address before? TeamSpeak only detects MITM attacks if I’ve already connected to that server in the past.

When will you encrypt file transfer? What encryption do you use for text chat?

2 Likes

@maximilian.muenchow

You are right, there is no MITM protection on the first connect, only on following connects. Adding a PKI would probably be overdoing it. We use the same encryption (AES-256-EAX) for the text chat like we use for voice chat, except that it is not optional.

There are internal plans for adding encryption to the filetransfer, but these will probably be part of a mayor overhaul of the filetransfer that will not be backward compatible. There is currently no time tables for these changes.

4 Likes

I know this is a feature request, but it affects the privacy and security, so I’ll send that to you. Please remove the ability to disable voice encryption because a lot of the ts providers charge extra money to use voice encryption. This is like a webhoster charging extra money for https. Since a lot of the users do not want to pay extra money for that, their traffic will stay unprotected. It is not acceptable to have the most intimate and private conversations exposed to ISP, backbone providers, police etc. Especially in more restrictive countries like china, etc., users privacy is the highest good.

@maximilian.muenchow

4 Likes

@maximilian.muenchow Thanks for the detailed explanation :green_heart:

I very much understand your sentiment, the voice encryption had been made optional because of the cpu load it generates. Since the ts3server is still being used on sometimes rather weak hardware, i do not think we can remove disabling the voice encryption. What i think that is realistic is that we can change the defaults for new servers, so that voice encryption is being enabled per default going forward.

For that i will have to talk with a few people internally if they are okay with it, so no promises :slight_smile:

6 Likes

Well the thing is that cpu power is definitely not a problem for teamspeak hosting providers. Maybe you could at least force them to encrypt the traffic.

1 Like

On this point, I think HTTPS is now more of a give in.
You would have to give a reason to not want HTTPS…
Especially with Cloudflare providing free cloud to client HTTPS

Quick idea regarding that: (might be stupid since I don’t know the technicalities of TS)
Would it be possible to implement some sort of certificate like used for HTTPS in browsers?
We probably won’t need to go as far as building an entire certification-structure with root-certs etc. since we’re “only” talking about one closed-source program, but the ability to create child-certificates might be useful for hosting providers in that regard (so they have their primary cert that you could approve on your client to trust all child-certificates used on servers hosted by them).

You would have to give reason to not want your voice traffic encrypted
It simply is default to encrypt everything that you send through the internet because this is the only way to make sure that no one is spying on you.

You should ask that someone who has more knowledge of IT security, all I can do is speculate or tell what i personally think :wink:

twitch instagram twitter facebook