3

In situations where the consumer doesn't trust/control the workstation and the network, can consumer safely do potentially sensitive activities (like making a payment or transferring confidential documents) over the internet when HTTPS is used?

For instance: when I use my employer's computer and am on the company network, or I am in an airport and use a public kiosk there, is there a way to keep them from spying on me?

Naturally, IT administrators in these circumstances are in full control of CA management, and could potentially use a proxy and load the proxy's certificate into the trusted root list, so my browser would show everything being fine.

My current understanding is that as long as I can verify that the cert isn't spoofed and is signed by a well known CA, I can be assured that there's no one eavesdropping on the traffic.

Now if my previous statement is correct what is the best way to verify that cert? I understand that I can just open it up and inspect the CA's name, but are there any extra steps I can take? For instance, could I somehow export the cert I'm receiving from the HTTPS site and submit it to some service for verification?

0

4 Answers 4

3

Validating the certificate will be the least of your problems if you're using a computer that you do not have full control over. If you are really worried about security, the bigger problems would probably be:

  • web history buried deep within the hard drive (depending on the way information is accessed)
  • keylogger software
  • forgetting to log out of accounts

As for the certificate, other signs you can look for besides the name of the CA being a known, trusted organization are that the domain names match and that the certificate is not expired, both of which the browser is built to do. However, this aspect could be tampered with as well since the administrator of the computer can create an intermediate certificate and add their fake CA to the list of those trusted by the browser.

8
  • 1
    This is just wrong! A good admin can install his own certificates in any browser, so that you almost can't check if it is valid or not. I could open my own CA and call it e.g. Verisign and change all real Verisign certs on a PC with my own, and afterwards I can intercept any SSL-Connection and the browser would show a valid cert from verisign.
    – Tokk
    Commented Feb 20, 2015 at 10:20
  • You are absolutely right. Basically, you can't definitively trust nothing on a computer you don't control. I updated the answer.
    – Anonymous
    Commented Feb 20, 2015 at 11:46
  • This sounds better, downvote removed.
    – Tokk
    Commented Feb 20, 2015 at 11:58
  • Fair enough that answers the question. Let's narrow the scope of the question. If I'm an administrator on a computer I could potentially install a fresh copy of a browser remove all CAs from that browser and manually install just the one CA certificate that I have obtained from a trusted source right? Commented Feb 21, 2015 at 0:51
  • @ambidexterous Well, theoretically that would work, unless the computer has some sort of software installed on it that automatically attaches itself to the browser and makes modifications without consent. When using someone else's computer, you are at the liberty of what has been installed and how the computer is configured. Under normal circumstances, however, I highly doubt that a computer would have such convoluted plots set up.
    – Anonymous
    Commented Feb 21, 2015 at 1:15
2

On an untrusted computer, you cannot know that no one is eavesdropping. This is just a fact of security -- TLS can protect against a man-in-the-middle, but nothing whatsoever can protect you against someone with administrative access to your computer. Even if you have public key pinning for the site, which means that a rogue CA can't create a fake certificate for it, you have no way of knowing that there's not something installed on your computer that is recording the screen and logging keystrokes (such spying software isn't that uncommon). There are ways to mitigate an untrusted network. There are no ways, and can be no ways, to deal with an untrusted OS besides not using that OS.

TLS is designed to handle specific types of attackers -- specifically, active and passive attackers between you and the server, as well as people impersonating the server. It is not designed to protect against your situation; in general, implementations actually support the ability for an administrator to install their own root CA and MitM the traffic (Chrome will actually make an exception to public key pinning in this situation, because it requires admin access to the machine and there's no way of stopping an admin from doing what they want anyway).

1
  • That makes sense. What if you're not interacting with a service via means of keystroke interactions - say you're just sending some binary data? It's easy for someone with admin privileges to install a utility (spyware) that will log all bits that are exchanged between the OS/file-system and say a browser? Commented Feb 21, 2015 at 1:17
0

In short, if you have untrusted computer, you're screwed up. But if you have trusted machine you can still use untrusted network safely, depending on the security implementation of the applications in your system. TLS/SSL is designed specifically to allow trusted machines to connect through untrusted network.

Good browsers would have to validate certificate chain to a trusted root, check for revocations, allow only strong certificates, strong ciphers, prevent downgrade attacks, and disable compromised root certificate. The user, on the other, hand, are responsible to install only trustworthy applications/browsers, downloaded from trustworthy sources, through trustworthy channels on a trustworthy machine.

If the machine is compromised, there's nothing that a browser can do to ensure your privacy. Compromised certificate trust store is the least you have to worry about.

There are systems where the risks of using untrusted machines can be managed. For example, many sites uses a one time password sent to a trusted mobile through text message. Typically the text message also contain a description of the action to be done, which you have to verify. This ensures that the untrusted machine can only do the requested action and nothing else. There are also banking systems used hardware token with challenge response system that produces the OTP without the need for mobile network.

I've also seen travel debit card (Travelex), which allows you to login by inputting part of your password to access the website used to manage the card. I think the thinking goes that correctly inputting the part sufficiently proves that the user know the password, without necessarily giving the machine the entire password, thus limiting the damage an untrusted machine can do. I believe the thinking goes that travelers are likely not carrying their devices while traveling or might have lost them during travel, and thus might be forced to use some random internet cafes or other public machines.

These systems aren't foolproof, but they're set up the way they're setup due to their unique requirements.

0

"as I can verify that the cert isn't spoofed and is signed by a well known CA"

And how exactly would you do that? Carry around a printed set of certificate hashes for the CAs you think trustworthy? Still not secure, although it does raise te barrier a little, since what you see on screen is a representation of the data - and hence that can be faked too.

And as others have said, even with a valid certificate and secure communications between the comuter and the service, there other places where someone with access to the PC can capture and inject data.

1
  • Yes you're right it wouldn't be practical for an internet cafe scenario or for many services that could be using different CA's. How about a case where you're the admin on the computer (still other admins may access your computer), you only need to verify that no one is intercepting traffic at that one specific moment in time for that one specific service you're interacting with. You could verify the integrity of the certificate chain manually and be sure that there is a secure tunnel between the browser and service right? Commented Feb 21, 2015 at 1:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .