
-->
Here's random stuff related to what I am working on or interested in during my work day or in my personal life. I'm a nerd. The content will be nerdy.
Understanding Certificates and SSL/TLS long ago became an IT fundamental.
Somehow, the industry seems to have not noticed. In my quest to take fewer calls on this stuff, here is my attempt to help demystify all the certificates involved in Client SSL/Mutual TLS. I seem to be spending 2+ hours a day on the phone talking web and server admins through this stuff.
The reason I am doing this is because Google failed me. There are a lot of docs that focus on all the other aspects of the SSL/TLS negotiation, but none of them focuses on the certificates and what they do for us. Microsoft has one of the better papers on SSL/TLS, but there is a lot lacking around the certificates and the SSL/TLS handshakes are overly summarized.
Here is the handshake that MS shows us.
While this may be a four message handshake, there are a few different conversations taking place, simultaneously, in the handshake. The conversations and their certificate requirements are more easily understood when they are pulled out of the stick context of the message format.
I will say that I am doing a bit of summarizing. SSL/TLS has four major components: authentication, message integrity, key negotiation and encryption. This post focuses heavily on the authentication aspect. I am lumping SSL and TLS together as the basic functions of the negotiations are the same, only the implementation details vary a bit. I am also leaving out a bit about session key generation.
I break the handshake down into 4 different conversations.
A. Hellos
a. The client tells the server that it wants to go secure and offers the suite of ciphers it supports.
b. The server selects a cipher from the list.
c. No certificates are involved here.
B. Server Certificate presentations
a. The server sends over the SSL certificate AND the chain.
b. The server must have the private key for the SSL certificate.
c. If the chain, (CA hierarchy) is not sent, negotiation MUST fail.
d. The client SHOULD perform full cert and chain validation against these certs, making sure they chain to a Root CA that is trusted explicitly by the client.
C. Key Exchanges
a. The client and server exchange data that allows the negotiation of session encryption keys.
b. If EDH is used, then the RSA/DSS key is used to block MITM of the key negotiation.
c. If RSA key negotiation is used, the client encrypts its initial key material with the public key on the server SSL certificates, assuming cert and chain validation succeeded.
D. Client Certificate presentations
a. The server issues a Certificate Request. This lists the key types allowed on the certificate and a list of Distinguished Names (DNs). These DNs are used as a hint to help the client determine which of its many possible certificates is the “right” one.
b. The client selects a certificate, for which it MUST have the private key, and sends the certificate to the server.
c. The client sends data that is signed using its private key, proving it holds the certificate in question.
d. The server checks the signature. If the signature passes, the server may be configured to pass/fail the client based on data in the certificate. Often the certificate serial number or Subject DN must match a static list, or the certificate must be one that is on file. The decision to pass/fail the client cert is not specified in any RFC.
More below
Certificates Needed
|
Client |
Server |
A - Hellos |
None |
None |
B - Server Certificate |
Root CA Cert for Trust |
SSL Cert and Chain to send |
C - Key Exchange |
Public key from Server Cert |
Private key for Server Cert |
D - Client Auth |
Client Cert and Private key |
Client cert for explicit trust or CA cert to implicit trust. Cert values MAY be checked. |
Client and Server Perspective
One often forgotten part of this is that when there are two parties, the role of client and server may change. For instance, let's say A pushes a full DB copy every night to B, and then B pulls deltas hourly during the day. In this scheme, at night, B is the server, but during the day, B is the client. This means that both parties need a cert and a server cert with chain, and they need to know how to implicitly or explicitly trust other clients, and they need Root CA certs so they can trust the server cert when they are the client.
Summary
Take the time to understand how your connections are established and it is fairly easy to figure out which certificates are used when. When it comes to figuring out what is wrong, you can usually figure out the issue by where the handshake fails. The handshake failures usually can only be seen via packet captures.
This is a post that is long overdue. The IT industry went through a revolution and most people in IT missed it and are still missing it.
If you are in any form of IT related job, you are in the information security field.
You may say, “No, I’m just an IT Project Manager (analyst, whatever), security is another team”. You are wrong and your career is heading towards a cliff.
It only takes a tiny bit of Googling to realize that everyone is getting hacked. Even the biggies, RSA, Microsoft, Facebook, Symantec, and Apple aren’t immune. There are too many actors with too many motivations. If it is connected to the web, there is either money in hacking it, or it can be used as a foothold to hack for money. If it’s connected to the web, there is probably someone with a social or political agenda that makes it a target and if not, it is a platform for the hacktivists to leverage. On top of the myriad of highly skilled and motivated attackers, there are thousands off wannabe hackers simply looking for low hanging fruit to test their skills or to get a thrill. Even if you don’t have a penny to your name, your computing power is a commodity if it can be added to a botnet. Hopefully, you already know that it’s a given that everyone is a target. If you still need persuading on this point--don’t worry, there are plenty of Wal-Marts that need greeters. Get your app in early. (That’s “app” as in “application”, which is a paper form you will fill out with a pen. You won’t need LinkedIn for this.—The Editor)
So, why is security your job? Every day (week if you are a slacker?) you make decisions that impact security. It doesn’t matter if you specialize in a niche, like UI or UX; or something broad, like program or project management. If you are working with data in any way, that data has value to your organization. There will certainly be negative impact if the data is compromised or corrupted. Even if you run or maintain a static website in which the content is public and can easily be restored if lost, you don’t want your system to be a foothold into your important systems or take part in a DDoS attack.
Your Role
Backup Operators – Don’t lose the data and don’t lose those unencrypted backup files. This role should be a no brainer. This role has Confidentiality, Integrity, and Availability components.
Systems Administrators – Once again, this is a no brainer. SAs have all the access themselves and they configure access to ALL of your data. Remember, all of your applications sit on a host that an SA “owns”.
DBAs and DBOs – Please, for the love of all that is good, you guys MUST know you have to protect that data. Do you??
Project and Program Managers – I know lumping you guys onto one line will get me all sorts of hate mail. You guys decide things like what use cases exist, for what users, accessing what data. You decide whether to engage formal security teams for assistance. You decide to cut product or project scope, and everyone knows security is the first to get cut.
Developers – You guys are the worst. Yeah, I’m saying it. Inventing your own “cryptography”, passwords in log files, backdoors, assuming users will use your apps the way you want them to, and on and on. Seriously devs, get your acts together.
Network Engineers – I think this is the only role that most folks actually think of as a security role. In fact, this role is the least interesting in terms of security roles. Read those manuals and change those default passwords. And stop using self-signed certs. Can you really not remember how a MITM attack works long enough to say to a manager: “Wait, we need a real cert on that appliance admin portal page”? You know what, if you can’t explain to a manager what a MITM attack is and why your choice of cert matters, you’re part of the problem.
Your day to day job may be focused on something else, but it is only a matter of time until IT folks start getting fired for massively bad security lapses. If it is on the OWASP Top 10 or the SANS Top 25 and you don’t know a bit about it, you may want to pick up that Wal-Mart job app. No one is asking you to figure everything out about security, but you need to at least understand some basics and keep your eyes out. If you do run a system, you’d better become a security expert in the context of that system.
Level
|
Group Policy Name
|
Sends
|
Accepts
|
Prohibits Sending
|
0
|
Send LM and NTLM Responses
|
LM, NTLM,
NTLMv2 Session Security is negotiated |
LM, NTLM, NTLMv2
|
NTLMv2
Session Security (on Windows 2000 below SRP1, Windows NT 4.0, and Windows 9x) |
1
|
Send LM and NTLM—use NTLMv2 session security if negotiated
|
LM, NTLM
NTLMv2 Session Security is negotiated |
LM, NTLM, NTLMv2
|
NTLMv2
|
2
|
Send NTLM response only
|
NTLM,
NTLMv2 Session Security is negotiated |
LM, NTLM, NTLMv2
|
LM and NTLMv2
|
3
|
Send NTLMv2 response only
|
NTLMv2
Session Security is always used |
LM, NTLM, NTLMv2
|
LM and NTLM
|
4
|
Send NTLMv2 response only/refuse LM
|
NTLMv2 Session Security
|
NTLM, NTLMv2
|
LM
|
5
|
Send NTLMv2 response only/refuse LM and NTLM
|
NTLMv2,
Session Security |
NTLMv2
|
LM and NTLM
|