0
$\begingroup$

With public/private key encryption you must trust the central authority correct?

What can you do if you don't want to trust the centeral authority? Are there any ways around that?

for example in a chat app

I imagine, no matter what, you will have to make the client open source so as to keep it known you are not saving the users private keys.

$\endgroup$

1 Answer 1

2
$\begingroup$

With public/private key encryption you must trust the central authority correct?

Not quite. The honest parties must have an authenticated (but not necessarily confidential) channel to obtain each other's public keys. A central authority that both parties trust is one way of fulfilling that requirement, but is not the only one. For example, public keys could instead be exchanged through a face-to-face meeting.

What can you do if you don't want to trust the centeral authority? Are there any ways around that?

for example in a chat app

Apps like Signal and WhatsApp provide two authentication methods:

  1. Use the service itself as a "central authority" that provides you with your contacts' public keys.
  2. Out-of-band contact verification through security codes, which users can compare independently to verify that the central authority is not cheating them.

From Signal's support page on this:

Each Signal conversation has a unique safety number. The safety number gets stored the first time you exchange a private message with a new contact. You will be alerted if a conversation's safety number ever changes. This can happen if someone else is pretending to be them, or if they get a new phone and reinstall Signal.

[...] The safety number on your phone should match those on your contact's phone. If the safety number is identical then you can be sure that you are communicating with the right person. If the safety number does not match, then make sure you and your contact are using updated versions of Signal, open a conversation with just that contact, and then try again.

WhatsApp has a similar feature as well:

Each of your chats has its own security code used to verify that your calls and the messages you send to that chat are end-to-end encrypted.

Note: The verification process is optional and is used only to confirm that the messages you send are end-to-end encrypted.

This code can be found in the contact info screen, both as a QR code and a 60-digit number. These codes are unique to each chat and can be compared between people in each chat to verify that the messages you send to the chat are end-to-end encrypted. Security codes are just visible versions of the special key shared between you - and don't worry, it's not the actual key itself, that's always kept secret.

If this is something that concerns you at all, you should be at least on occasion checking your conversations' security codes when you meet your contacts in person. For such services not to be abused for mass surveillance, a small but significant percentage of users need to periodically exercise this kind of vigilance.

$\endgroup$
1
  • $\begingroup$ If the client used to communicate (I.E. the chat mobile application) was open source, would that provide a greater assurance of security? Is it a worry, that the application might attempt to save your private key in a database or something? $\endgroup$ Commented Mar 21, 2018 at 0:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.