When Is a Self-Signed SSL Certificate Acceptable?
UltraLoser writes "When is it acceptable to encourage users to accept a self-signed SSL cert? Recently the staff of a certain Web site turned on optional SSL with a self-signed and domain-mismatched certificate for its users and encourages them to add an exception for this certificate. Their defense is that it is just as secure as one signed by a commercial CA; and because their site exists for the distribution of copyrighted material the staff do not want to have their personal information in the hands of a CA. In their situation is it acceptable to encourage users to trust this certificate or is this giving users a false sense of security?"
SSL certificates provide one thing, and one thing only: Encryption between the two ends using the certificate.
They do not, and never been able to, provide any verification of who is on either end. This is because literally one second after they are issued, regardless of the level of effort that goes into validating who is doing the buying, someone else can be in control of the certificate, legitimately or otherwise.
Now, I understand perfectly well that Verisign and its brethren have made a huge industry out of scamming consumers into thinking that identification is indeed something that a certificate provides; but that is marketing illusion and nothing more. Hokum and hand-waving.
I've fallen off your lawn, and I can't get up.
"and because their site exists for the distribution of copyrighted material the staff do not want to have their personal information in the hands of a CA"
So it exists for the distribution of copyrighted material, right? Just like, say, Amazon? Or like SourceForge? So what's the problem of the CA knowing their personal information? After all, the domain registrar already knows the correct data, right?
Or are you saying that they exist for the distribution of copyrighted material illegally, in which case we all couldn't really care less what their problems are, and you should report them to the appropriate authorities instead of helping them break the law?
Now, back to your main question:
"When is it acceptable to encourage users to accept a self-signed SSL cert?"
The answer is: Never.
What is the point of being sure that no one can intercept your communication all the way from your browser to the server if you don't know who you are talking to in the first place?
If someone knocked to your door and asked for your money would you give it to him because he has a bulletproof truck so the money will be safe all the way to whatever it is going to? Or would you trust the guy in the truck because he showed you a self-signed document saying: "I am authorised to do what I'm doing. Signed: me." Of course not!
Self-signed certificates are pointless, because you are confident than no one is listening but you have no idea who are you talking to. It means the possibility of a man-in-the middle attack and many more problems that should be obvious to any self-respecting, computer-literate, intelligent person.
But what is even more important is the problem of getting people used to trusting incorrect, i.e. "self-signed" certificates. When they later are victims of phishing attacks everyone on Slashdot is saying to blame the victims because they have entered the fake bank website with an incorrect SSL certificate, while at the same time forcing equally incorrect certificates down their throats and saying that it is ok to trust it, because it is "self-signed" (which means that it is signed by itself, for those not familiar with the SSL lingo).
And these are the most important problems caused by self-signed certificates. False sense of security, and getting used to the browser complaining about incorrect certificates and ignoring it later.
Karma: Positive (probably because of superiour intellect)
It's only giving a false sense of security if people do not trust your web site. If the certificate authority is setup well, the server certificates are created from it like they should, and the certificate authority server is secured well enough (ie: not accessible from the outside in any way) the setup is in no way 'less safe' or trusworthy than using a known certificate authority. It's not like anyone can fake your CA or the client certificates.
Are you talking about the SSL certificate for "the Pirate Bay"? In that case, yes, it is fully understandable why they can't afford to apply for a proper certificate. And I guess the audience doesn't mind either.
In all other cases it's a big NO NO
http://revj.sourceforge.net
In a world of National Security Letters, can a commercial CA located in the US be trusted?
How can we tell if a CA is confirming government man-in-the-middle attacks as being a valid endpoint?
Are you really connected to your site via SSL/TLS, or is there an automated system intercepting traffic and analyzing it using a compromised CA?
In such a world, self-signed certificates, or hosting your own root CA is the more secure option.
I cannot confirm that CA's such as Verisign, Thwart, etc., can be trusted.
Geez, I bet none of you even RTFA before you posted;)
http://greenobyl.com/ please.... think of the children!!
IE 7 on Vista and Firefox 3 on Windows will only accept certs using RSA encryption from trusted authorities. The process for adding a trusted root authority in either browser is not particularly user friendly. So if you want anyone but geeks to actually use your site with modern browsers, you really have to get your cert signed by one of the default trusted root authorities.
Step out the front door like a ghost into the fog . . .
...O.J.'s "If I Did It, Which I Didn't, But Could Have, And Might Have, And Probably Did, But You Can't Prove It, And After All The Bitch Was Really Asking For It, But That's No Big Deal And I'm Going To Go Play Some Golf" manuscript.
No links, no research, no facts, just a gripping headline that has nothing to back it up other than claiming that "a certain web site" did something.
That's some great detective work, Lou...
Self-signed certificates are acceptable if you can spread the root public key *yourself* in a secure manner.
Simple, no ?
In any exchange between 2 known parties for example, it is *always* preferable to have self-signed certificates.
Only internally, when you have rolled out your trusted root cert to all the users who might access you site (in a secure manner of course).
Or during testing when you have dev.mywebsite.com that you are giving selected users access to for debug and testing purposes. But the cost of a dns validated cert is so low that you might as well just fork out the $$$ and put a proper cert on it anyway.
I'm a software developer and will often create my own certificates for testing purposes, and in my test lab people will trust them, however out in the wild there is no excuse for not getting a proper certificate signed by a proper authority.
Not only is this coming across as the company trying to do things on the cheap it has the possiblity of unraveling the trust of SSL for places you actually care about. If this becomes wide spread just think of the phishers create a copy of A Bank's site make their own SSL and put a note on the login screen "Dont worry you have to do some work to trust this certificate everything is alright honest guv."
Personally I normally trust self signed SSL certificates for sites I visit if they have them as i know the risks, but to potentially undermine for general users is just mad.
In my opinion SSL mixed two requirements, identification of site owner and secure communication.
This meant that many sites applied for SSL certificates just for secure communication. Some certificate authorities virtually issued certificates on request.
To get round they introduced extended validation certificates, which means we really, really validate this site.
They should have allowed secure communication without certificates, and had properly authorised certificates to start with. Since they didn't we have the situation where people have to self-sign
..the most stupid reader's question ever to get posted.
IMO, self signed certificates can be more secure. And for the site in question there's a risk of governments strongarming the certificate authorities to provide signed certificates so the government can launch MITM attacks.
I have a https website on my home machine that occasionally I connect to from work.
Now I get a popup about how the certificate issuer isn't recognised etc.
If someone at work (who controls the browser, the proxy, the network etc) decided to sniff all SSL traffic - which they could do with a MITM attack because they control at least one of the allowed root certs in the browser - my popup would disappear (unless they were very careful)
Likewise, my mail servers all use self signed certificates. Again, someone trying to attack me by getting verisign (or whoever) to sign a certificate, will not work.
Self signed certificates don't prevent attacks but they do mean that the attack cannot easily be automated.
(Actually I have a single self signed root cert that I then use to sign all my other certs rather than each cert being self signed)
It's swings and roundabouts. Verisign et al have built a whole industry out of convincing people to trust them more than the person's own bank.
I'm surprised we don't already see spam attempting to get people to install new root certs. (Or maybe we do - almost all the spam I get gets stopped by greylisting or caught by spamassassin)
Tim.
God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
http://what.cd/ - the private music torrent tracker that spawned after oink.me.uk/.cd was taken down by the British police last year.
I find a self-signed certificate is useful on many occasions. I use it for my own squirrelmail service. I have set them up for "extranet" applications for small business clients.
This is just fine. I give them a hard copy of the key signature and tell them to verify it before the accept it.
Someone above says the a CA adds nothing. I don't agree with that. They add identity verification *to the extent* that site visitors actually *read* the certificates and evaluate their level of trust in the CA.
Quick: Tell me right now how many CAs are in your browser's trusted certs list. Now tell me where that list came from. Tell me why you trust it.
In other words, the signed certificate system can provide excellent security, but most of us simply trust our browsers when they don't complain. That isn't security. You really should check certificates every time. View the details, check the signatures, verify the integrity of your trusted CA list. But who bothers?
So while I don't agree that CA signed certs "add nothing," I do agree that hardly any users (including me who theoretically knows better) do their due diligence that would make that system truly work.
If someone does an inside job of compromising a bank's certificate, how much time would you think the certificate would be on the wild without being revoked? I bet enough time to do a lot of damage.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Accepting a certificate ultimately comes down to trust. For example, most people trust Verisign. Therefore, if a certificate is signed by them, most people will think: "Here is a legitimate site with identifiable credentials accepted by Verisign."
A self-signed certificate encrypts your data just as well as any other. However, you need to trust the website you are at (and hence the signing authority). The reason people trust sites like Verisign, is that it is often difficult to know how legitimate/secure/etc a particular website is. Also, a website could be faked.
I'd trust a self-signed certificate from my bank. But I wouldn't necessary trust that the site I am at is actually my banking website (instead of a cleverly copied phishing scam).
Also, even if I trust a site, I wouldn't necessarily trust the people they trust. What I mean is that if a certificate is signed by an external CA, or with a mismatched domain, I would have to know and trust that CA or other domain before I would accept that certificate.
Considering that most people just click "OK" when something pops on their screen, I would say that Verisign and the like are useful for now. But I have nothing against self-signed certificates in principle.
Unity in Diversity
I've noticed that Firefox 3 is much less forgiving of self-signed certs than other browsers. There's a lot more hoops that one has to jump through to get a page to load.
I've found it rather annoying, since all our internal web applications are served via SSL.
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
If all you want to do is encrypt data then a self signed cert is fine, the trouble is the general public don't know this so when that pop-up appears in their browser they worry and you lose their trust.
As earlier posters have said, there is absolutely no reason to trust a commercial CA - you've never met them, you don't know who they are or what they are doing. The only reason to buy one of their certificates is because it keeps your customers happy.
An alternative, if it can get enough support? cacert.org
If you try to fail and succeed, which have you done?
A SSL certificate, even if not from a trusted party has a stable fingerprint you can use to verify it. Hell, the threat of verifying the fingerprint it often enough. Like in this case, TPB don't need to be certified to any real person or organization. They just need to have the fingerprint published well enough people will agree this is the real Pirate Bay(tm) and not some MITM attack. And don't forget that SSL, unsigned or not protects against an attacker that can only read and not write data.
Live today, because you never know what tomorrow brings
A symmetric cypher combined with a random key provides the encryption. The rest of the system is only there to ensure that the parties who have the key are actually the endpoints, and that necessarily includes the authentication of their identities. The possibility that the certificate owner may not have been sufficiently diligent with his secret key is a problem which all cryptographic systems share. Nevertheless, identity verification is important for protecting against trivial man-in-the-middle attacks and certificates or trust-webs are ways to perform that verification. They're not perfect, but they're the best we have for encryption between mutual strangers. If the other party cannot be trusted to properly handle cryptographic keys, you might almost just as well not encrypt at all.
If you store the public key, then a verifiable signature is still important when the web site's public key changes. (That includes the first connection when you change from no key to the current public key of the web site.) The alternative would be to establish a different trusted channel for key verification. That could be a phone call, if it's sufficiently unlikely that you'll end up talking to the same man-in-the-middle who tries to pass his key as the web site's key. Just reading the self-signed certificate and clicking OK? You could be talking to a third party and would only notice when they stop intercepting connections between you and the web site.
So your concern is that you can't trust a self signed certificate from a pirate website?!?!? There's an interesting cognitive dissonance present in the very question...
What do you mean "control" of the certificate?
The certificate isn't secret information, it's sent publicly at the start of every ssl request.
The private key is the part that means only the proper person can establish an SSL connection certified by that certificate. Incompetence aside there is no reason that should fall in to the hands of someone unauthorised.
If you add an exception for a self-signed certificate then you basically have to trust that the first time you hit a site you aren't being hit by a man in the middle attack.
With a CA-signed certificate then you are basically trusting the CA has done at least some (even if it's only domain control) authentication.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
A self-signed certificate doesn't detract from the security, this is true. But a real certificate does place an (admittedly low) barrier to entry against fraudulent sites.
Windows has spent the last 15 years encouraging people to click away the dialogue box without reading it. Encouraging the use of self-signed certificates will lower this barrier to entry by encouraging people to think "ah, it's still secure so it's OK".
It depends on two factors:
1. What are you protecting
and
2. Against whoom.
When you know the answer to those two questions, you will know the answer to your initial question,
echo '[q]sa[ln0=aln80~Psnlbx]16isb572CCB9AE9DB03273snlbxq' |dc
For simple websites, why not, but for complex service-oriented systems, absolutely not as working around eronious certificates requires you deliberately code exceptions for.
Bad licences ultimately give you a bad testing environment, and seeing how SSL certs aren't expensive, I would say get SSL certs where possible.
throw new NoSignatureException();
How so? Both are susceptible to a man in the middle attack. In the self-signed certificate scenario the man in the middle merely needs to generate their own self-signed certificate.
That's slightly more complicated but not enough to deter anyone if the information is even vaguely snoop-worthy.
I agree however that the certifying authorities are largely rip-off merchants.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
Using self-signed certificates inside an enterprise is fine so long as all the clients have the certificate authority's public certificate installed. Key distribution mechanisms like group policy make it simple.
Sadly Firefox makes it less secure because it uses its own key store rather than the host operating system's, so users must manually import the certificate before attempting to visit an SSL-secured website.
PirateBay, is that you?
In that case, I see no problem with a self signed cert, all you want is the encryption.
It seems that the google adsense site also uses an unsigned certificate ...
In my opinion should browsers support self-signed certs by default because there are thousands of intranets for private use where there is no need for a CA certified cert. Like somebody said before secure web mail access is a important issue. For me is it important that the cert is coming from the same server where I'll try to log-in and nothing more. If the browser could detect that and only hint that this is not a CA certified cert - not to pop-up some warnings - would be just fine. I'll see also benefits for a CA certified certs. Like for pay-pal, banks, government sites I'll need certainty that the information I am currently posting isn't going to wrong hands.
This is timely, as I'm looking at implementing SSL for a web system at the moment, and I'm seriously pondering using self-signed certificates. Paying for a certificate from an authority is, quite frankly, a rip-off. The companies don't need to do anything for that money, and the notion that they provide some service where you can trust the site for the issued certificate is laughable. The only reason for doing so is so that peoples' browsers don't complain when they come across a certificate they don't recognise.
The cynic in me believes that Firefox and IE are giving you all sorts of 'helpful' warnings these days, not to protect a user's security, but to push website developers into buying certificates.
Using certificates is about one thing - encrypted communication between browser A and server B. That's it. Certificates have never given you any guarantee as to the integrity of the site that you're visiting, and it gives no guarantee whatsoever of who you are talking to, as some people are stupidly claiming around here. To give a guarantee like that, further technology is needed.
As a rule of thumb, if you have a finite number of users logging into a system then a self-signed certificate is OK, and even preferable. If you have some kind of site where the users you can have can be anyone (shopping site for example), then it's preferable to buy a certificate - if nothing else, to keep people from getting infernal warnings popping up in their browser.
The alternative to accepting individual certificates, is for 'Hypothetical Piracy Enablers' HPE to create their own CA, and for you to accept their CA certificate as a trusted signer.
There's nothing technically difficult about becoming a CA. OpenSSL can handle the bit-twiddling aspect with no problem. The hard bit about being a CA is all the authentication that's supposedly done before signing a certificate, and the risk and liability responsibilities taken on.
It sounds very convenient to accept HPE's CA certificate -- but wait -- that would mean that if some crook could persuade HPE to sign a certificate for (say) hsbc.com, your browser would accept it every time.
So, in this case, since you probably don't trust the signer all that much, it's better to accept the self-signed site certificate.
1. Test box
2. When you have a smaller user base of users that actually know you. Like a workgroup that might uses a web front end to a database that isn't usually public facing but for whatever business reason isn't behind a firewall.
3. When you are cheap.
Blah blah... price of everything... cost of nothing... blah blah...
I had a flame... but she had a fire.
*COUGHpiratebayCOUGH
The problem with SSL, and the tension between ID verification and simple encryption, is not so much a technical issue as it is a "people, on average, cannot be trusted for anything more complex than tying shoelaces". With depressing regularity, studies show people with no clear idea of what the "lock icon" means, no understanding of the fact that a picture of a lock displayed on a website and a lock icon in a browser are two vastly different things, and no real idea of how certificates work, or what a Certificate Authority actually is.
To compensate, browsers have ratcheted up the warnings given about self-signed certs to extreme levels, making them essentially useless for any site or service catering to the general public. This, then, creates a demand for cheap certs, which leads to shoddy verification, which defeats the purpose, which leads to E.V. certs, which are what certs are supposed to have been all along, only more expensive and with a snazzy green bar that nobody understands. Fan-Fricken-tastic.
What we really need is a clear distinction between "identity" certs and "stability" certs. Identity certs would essentially cover cases where trust in a given entity is a function of official verification; e.g. when I walk into a bank, my level of trust is based on the legal status of the bank, is it an FDIC member, where is it incorporated, are its financial data properly disclosed, etc. In this case, an assigned SSL cert is just one more official aspect of the entity.
The stability cert is different. It maps roughly onto the class of interactions that are based on reputation and patterns of behavior. You don't trust your best friend because you've checked his official ID, and you know that he is who he says he is, you trust him because you have been able to observe his behavior and interactions over a period of time. For this case, you don't need an SSL cert that is tied to a real world name, you need one that shows continuity over time. For example, knowing my real name would be of essentially no use in deciding whether or not to trust something I say in a post. Knowing that I am the same fuzzyfuzzyfungus who has posted in the past allows you to read my old posts and decide if I am reliable or not.
The solution to this need is not CAs in the classic sense, that verify identity then hand out a cert; but public repositories wherein people can deposit self-signed certs at a certain point in time and have that event on file, among a number of repositories, for anybody who asks. Then, if you go to my website, you can look at my cert and, rather then getting something useless like "certificate for foo-barr.org was issued to Mr. foo barr by Verisign", you can see "foo-barr.org has operated under the same entity's certificate for x years." From this, you could then judge the entity based on their last x years of activity.
The trouble with this notion is that it would require a subtler set of distinctions than the current setup, which people are, on the whole, already uselessly befuddled by. Oh well.
The question about if a certificate is self-signed or signed by a CA isn't really the issue, it's ensuring that end-users don't get certificate warnings in their browsers. An end-user should NEVER have to click through a certificate warning. That means the name in the certificate has to match the site, the certificate hasn't expired, and the certificate is trusted by the clients browser. If your application is internal to your organziation then you can distribute the certificates. (For example, we distribute our self-signed root cert to Windows machines through group policy.) When you are dealing with the Internet and customers, then there is no excuse to have an invalid or untrusted certificate.
Bravo, bravo!
http://maotest.buanzo.org/ (some stuff with OpenPGP for HTTP, secure session initiation, etc)
Buanzo Consulting - 15 Years of GNU/Linux experience, for you.
Personally, I use CAcert certificates for all my personal stuff. It's a bit easier than creating one's own CA or doing one-off self signed certs.
The underlying reason for the use of a self-signed certificate in this case is probably due to legal issues. Because this "site" is distributing copyrighted material (without the expression permission of the copyright owner) this could be viewed (and in some areas is viewed) as a crime. This will mean any certificate issued for the "site" for this "purpose" would breach the Certificate Policy of the any issuing Certification Authority. This could make the Certification Authority liable for the actions of the site (they have vouched for the activities of the site, after all).
Bottom-line: No legitimate Trusted Third Party would vouch for a "site" that conducts "criminal activities". Imagine what would happen to their repuation.
If a large number of people complain that a company is not who it claims to be or a certificate is compromised the CA can potentially blacklist the certificate.
I guess this is a potential advantage of a CA, even though they are generally pretty useless.
Signed certificates provide exactly one additional protection versus no certificate at all: sessions so protected are not vulnerable to a man in the middle attack. With a self-signed certificate, someone in the middle can create a new self-signed certificate, decrypt and log your communications and then re-encrypt them with the site's real certificate. As the user, you won't know because it all looks the same to you.
That having been said, SSL with a self-signed certificate is MUCH more secure than no encryption at all.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
ideally on your website
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
- User receives a certificate fingerprint under separate cover, such as mail or phone, along with the following instructions.
- User visites SSL site and gets warning message.
- User clicks show certificate.
- User compares certificate's fingerprint to the fingerprint sent under separate cover.
- User clicks "accept certificate permanently".
What part of this process significantly changed from Firefox 2 to Firefox 3?If someone you know is setting up a website for personal reasons and the use a self signed certificate. Would it not be better to accept the self signed certificate? If you do not accept the certificate CA the you will be constantly prompted to accept the certificate and if there is a change in the certificate or you are redirected you will never know.
Anyone capable of implementing the man-in-the-middle attack that signed certificates protect you against is also capable of modifying you web pages in flight so that the checksum the user sees matches the certificate they created.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
While at DEFCON working the Wall of Sheep one year we discovered that someone had setup a WEB site on the network to bet on the outcomes of the hacking contest - they used a self signed SSL cert. Now some people, being paranoid on a VERY hostile network, turned down this certificate and promptly created\used the WEB site sans SSL - exposing their creds clear text. We promptly snarfed these and posted them on The Wall. 0wned!
All they had to do was accept the cert and they would have been protected. But I guess since seeing that pop-up was out of the ordinary and being on a network that was so nasty they thought they would play it safe and say NO, how stupid....
Build it, Drive it, Improve it! Hybridz.org
He is spreading misinformation. The Internet and its security mechanisms were never meant to verify real-world identity (whatever that means: photo, street address, SSN?) or good intentions. Yet SSL does, however, validate the site's Internet identity... it ensures that the domain name you see in your address bar represents the actual server(s) registered to that domain name. As others here already pointed out, this prevents MITM attacks.
Thus, when you conduct critical business on the Internet, it is important to get the service's URL right from the horse's mouth. Otherwise a slightly-misspelled domain could amount to an attack of a different kind.
Self-signed certs are OK if you have a decent way to distribute the certs to others. For instance, if you can get the cert's fingerprint listed on various other sites... people can then check the fingerprint through alternate channels of the cert they downloaded and imported into their browser/client. Distributing in-person among trusted individuals also works.
OTOH, having a domain name mismatch would make me doubt whether the link could stand up to MITM attacks or if the cert I received wasn't a fake. Perhaps verifying the fingerprint is enough to satisfy most people, but for me it raises doubts about the site's technical ability.
It was a joke.
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
First, keep in mind that we do not trust an end certificate, we trust the issuer.
Second, There is no requirement that the Common Name match (or be a suffix of) the system's DNS name (but there is the common usage).
Apart from the roots, a self-signed certificate is identical to a publicly-signed certificate.
So... the *SINGLE* issue is the key distribution problem: how do you verify the self-signed you received is indeed the self-signed you *should* have received?
For example, remember the "VerySign" certificate that used to be shipped with a famous package some years ago...
However, that is why Https security has to stand on a 'tripod' from the users' point of view:
1) The lock icon appears in the address bar (while a picture of a lock on the page doesn't count).
2) The domain name in the address bar is spelled correctly (because the lock is saying that the cert 'matches' the domain).
3) No certificate warnings appear from your browser.
If any one of those 'legs' is missing, then assurance of link security falls down. Otherwise (barring your computer being infected/compromised, or having a massive bug) you can be sure the link is both solid and also not a phishing site.
The public key of the self signed certificate should already exist in the browser's certificate store. If it doesn't the link is not secure until it is possible to prove that the certificate came from the entity you want to communicate with.
If the certificate is not already known the browser should say the link is insecure and probably switch back to using http.
A self signed certificate can and should be installed into the browser but only after you've manually validated it.
Once validated it may be more secure than a global CA issued certificate because there no certificate chain that may have been compromised. However, most users wouldn't know how to validate the certificate or even that they should.
When you sell any kind of hardware with an embeded web server for remote usage and administration. You want to allow SSL encryption, as the administration of the box requires a login you want to protect.
One thing you can't do, is to put your own private key corresponding to a certificate that identify you inside this box. It would be a nightmare to ensure it can't be retrieved, as anyone buying your product has a physical access to it.
So a self-signed certificate is the only solution, but your customers will have an ugly warning.
They no longer have a trusted third party, so you should validate the SSL certificate as you would an ssh known_hosts entry. One remembered, it affords the same degree and type of protection as known_hosts. A very easy and direct comparison.
XML is like violence. If it doesn't solve the problem, use more.
In this case, the end user does not care who is publishing the material, only that nobody listens.
It's more like a random stranger has offered to send you money either in the bulletproof truck, or slung in the back of a pickup.
"Those who cast the votes decide nothing; those who count the votes decide everything." (attrib. Joseph Stalin)
Isn't the idea of Location and Security independent from the certificates point of view?
What I mean is that even with a CA, the CA will simply issue a certificate to anyone who requests one and can prove they are from said location. A self-signed certificate OR a CA generated certificate need to be installed on the root of the server/web site so that any traffic coming to it will be encrypted using the keys held within. Whether it is self signed or CA generated, it won't affect the actual direction of the traffic or redirect traffic to a man-in-the-middle attack.
The problem appears to be that because there is a certificate on the web site, people will assume that it comes from a legitimate source (ie. Because https://scam.barclays-2339.ru/ has a https, it's gotta be Barclays Bank!) If anything, it's just breaking the ability to hide links behind text, so this link here Barclays Bank must display the link (ie. for example here [SCAM.barclays-2339.ru].
Infact, I've just realised, it's like the way slashdot has formatted my links here!!
But I think you should remember that the warning dialog actually provides an opportunity for the user to import self-signed certificates.
Rather, if more sites simply made a habit of posting their cert's fingerprint elsewhere on and off site, then people could make the most effective use of self-signed certs with the current browser behavior in place.
I'm the first to notice: There is actually no link in the summary.
A lot of places use self-signed certs. I just wish there were an easy way for me to say "Yes. I verify that this is the correct hash of this certificate." so that I don't have to worry about CAs or accepting some place as a CA so that I can use their certs. Some programs do this, and others *always* throw up error flags on self-signed certs and/or mismatched domains.
I want more programs to allow me to say "Yes. I verify that this is the correct certificate even though it is self-signed, and even though there is a domain mismatch." Then I would feel better about some of the self-signed certs because I would know that everytime I get a cert from that location, the program will check it against the cert that I got in the past and accepted as the correct one.
I'm talking in general here, but one of my main beefs is w/ fetchmail. Fetchmail doesn't allow me to say "Yes, I know that mail.mydomain.com mismatches with a.lot.of.subdomains.here.dreamhost.com, but I want to accept this self-signed IMAP/POP certificate as the correct one for mail.mydomain.com. Verify all further SSL connections to mail.mydomain.com against this certificate."
The only ways to really tell with a self-signed cert is to 1) personally get a copy of the cert from the site's operators; or 2) lookup the site's fingerprint from an independent channel you trust and check it against the fingerprint your browser shows when you click on the lock icon.
While the article does ask about web sites, the kids should know that SSL is not something whose use is exclusive to websites and web browsers.
The relevant Transport Layer Security Wiki article would be a good start.
Is there any work on SSL-type functionality, but based on a PGP web-of-trust rather than a top-down I-trust-the-CA-so-I-trust-any-certs-they-issue style?
Get your own free personal location tracker
Where was that bug of mozilla and the so very free SSL Cert-CA?
When a hacked link or poisoned DNS cache redirects your browser to a hacker's server for processing of your credit card details, you will be none the wiser because the hacker has purchased a certificate from . On the other hand, I will be warned by my browser because I have deleted all of the commercial root certificates. If I am satisfied with the credentials presented then I need only click once on "accept this certificate permanently" and will never see the message again. The point is that the only acceptable "trust authority" is me and once I am satisfied by the authenticity of the site then my browser may continue to communicate with it. I have no interest in whether or not the site has given money to a CA and certainly don't view this as a reason to "trust" it. Consider, for example, the links to "ads.doubleclick.net" that you are probably viewing while reading this. On encrypted pages those images come from a server that has a commercial certificate. I don't see those advertisements but you are irritated by on-line dating services and people who just want to be your friend whilst having your bandwidth reduced and download limit consumed by them.
The choice is yours, of course but I say "delete those root certificates now" - you know it makes sense.
Users of MS-Windows (whatever that is) should note that they need to retain a Microsoft certificate if they want to allow Microsoft Update to continue to automatically erase all of their device drivers and quarantine the one piece of really useful software that they run.
I know I'm just a horrible gutless AC (For various reasons, hopefully someone can put that aside for now and get me a helpful reply?) but I'd always thought they had pretty obvious and useful applications.
In my case, main use is in having secure e-mail client-to-server, with a self-signed cert on the server end.
Yes the Thunderbird/Outlook/whatever warnings are annoying until you hack a way around them, but if you have a known IP you're connecting to and a self-signed cert how is this not providing useful and simple security? Or am I missing the point in a big way, does SSL not add any security to the connection?
I'm seriously quite interested as I'd always thought of it as a quite handy (And free!) security bonus.
i tend to find it comes down to a matter of customer base. for example, my internal mailservers, wiki's, and webservers all use self-signed certificates, as by and large we just want an encrypted channel to pass credentials and email. public webservers, oracle transaction servers, and credit card processing pages however always have the shiniest and best VeriSign (C) certificates. it makes people feel good if their browser gives tacit approval of the safety of the online transaction at hand, and the identity of the institution involved. I've also been told by the legal department it is an unwavering mandate that we have certs from someone like VeriSign.
Good people go to bed earlier.
You can't just ignore man in the middle attacks because there are other potential attack vectors (an inside job or a compromised server). No one security measure is going to provide ultimate protection from all attack vectors, thus the need for layers of protection.
Certificates help protect against a certain set of attack vectors and have value because of it.
They are overly expensive, especially from some vendors and for wildcard certs, but ultimately cheaper and easier than other methods of verification (such as manually verifying self signed certs over some other mechanism).
Boffoonery - downloadable Comedy Benefit for Bletchley Park
I think self signed SSL is ok in an intra net. It will still encrypt the connection and everyone in the company should know it is a intra net server. Maybe have a browser rule that ignores SSL warnings in the intranet zone.
Again this assumes the IT determine does not allow rogue webservers on the intranet and has control of the network.
I do not get the reasoning in the post for copyright reasons. I think it would be cost because a CA cert costs $$
I just bought an SSL cert for a site through godaddy.com for $26 for 2 years. The CA root authority backing this has 99% placement in browsers distributed in the last 2 years.
Pony up a few bucks and shut up...
I've often wondered whether any viruses/trojans have tried to subvert the browser's list of certificate authorities... if they could add one without the user knowing, they could then hack the user's DNS or hosts file to divert the browser to their spoofed bank website without any security alerts being generated.
It all comes down to, can you determine that you are using the same crypto key that the server is? The reason for signing certificates and the like is to try to detect when you are being hit with a man-in-the-middle attack. In a nutshell, that attack is when you try to open a connection to your 'known' IP address, say, 123.45.6.7. Even though you are connecting to a 'known' IP address of a server you trust, doesn't mean you can necessarily trust traffic from that IP address. Why not? Because the Internet works by passing data from router to router until your data gets to it's destination. Every router in between is an opportunity for malicious code on that router to re-write your packet, and you'd never know the difference, unless you have some way to *verify* that the packet is from the trusted server.
A crypto key, if you have the *correct* key, can verify for you that the data hasn't been tampered with. The problem is, however, that before you can begin encrypted communications, you must do an *unencrypted* key exchange, where the server gives you it's crypto key. Here's where the man-in-the-middle has an opportunity. If your traffic is going through my router, I can intercept the self-signed key from the server, and generate a new self-signed key with the same server name, etc in it, so that it *looks* like the self-signed key from your server, but which allows me to decrypt the communications between you and the server. My router then establishes a connection to the server using the *correct* key, and as data passes between you and the server, I unencrypt the data using the real key, then re-encrypt it using the 'fake' key. So, the data is encrypted between me and the server, and between me and you, but gets unencrypted in my router, giving me the opportunity to spy on your data, or even alter if if I want.
The point of a CA-signed certificate is to give slightly stronger verification that you are actually using the key that belongs to the server you are trying to connect to.
Yes, self-signed keys have some uses - in particular if you happen to know the real key's fingerprint (a fingerprint is a numeric or hex string which identifies a cryptographic key), so that you can verify yourself that you are using the correct key for SSL. If you don't happen to know the fingerprint, it's probably still fine to use self-signed certs on a LAN, where you control all the equipment, so don't have to worry so much about a man-in-the-middle (although, arguably, on a LAN you might not even need encryption).
So, in summary, yes, SSL adds security to the connection, but ONLY if you can verify that the correct SSL key for your server is being used, and not a different key that a hostile router has injected.
Hacking Exposed, Owning a Continent. One of the best hacks I use as a security pro. is owning companies PeopleSoft installs when they use self signed certs. I can setup a proxy, copy their self signed cert, and capture usernames and passwords ALL DAY LONG! I recently seen a article here on the dot about how insiders are less of a threat now-a-days than outsiders...completely FALSE!
"My immediate reaction is "WTF? What kind of moron doesn't make things 64-bit safe to begin with?" Linus
You maintain the CA and have it hardened and secured on the network. I wouldn't use it , let's say, if it was used on an e-commerce site. But typical in-house ssl vpn connections should be ok, as long as you follow what I said earlier.
Correct me if I'm wrong, but I believe that all the major browsers allow you to view info about the certificate that was presented, including the key fingerprint. If you know enough of the fingerprint, you should be able to verify that it is the fingerprint of *your* self-signed key, and accept it, without having had to manually install the key into the browser.
The answer to you question is that you can use a self-signed certificate anywhere you can use one signed by a CA, public or not. However, to ensure that you are always talking to the web server and not through a MITM, you must distribute the self-signed certificate or the certificate thumbprint (and then verify it!) through some trusted means.
Using a public CA like Verisign buys you is that since their public CA certificates are already distributed in browsers, any certificate issued by them should just work. Oh, and make sure the host name matches the common name.
Does the user trust the CA? That's all it boils down to.
A self-signed certificate is useless if you want to prove your identity to other people. It is, however, useful if you simply want to offer encryption to people who already trust your identity. As an example, I use a self-signed certificate on my mail server. I'm not terribly worried about anyone spoofing my mail server but I do like to be able to encrypt my credentials when I log in. The self-signed certificate works fine in that case.
Well, from my point of view, the self signed certificates, would be a nice way to provide secure login/access to system like blogs or wikis for example, but not for banks that the user really need to verify the authenticity of the host. This is not provided by a self signed CA. But for non critical sites you can simple use the self signed to provide ENCRYPTATION between the two sides.
When your money is on the line, it's just NOT OK to accept a self signed cert. Otherwise, it really just depends on what the risks are and how much due diligence you are willing to put up.
Why not just accept them, because it's less secure?
Well, yes and no.
It can be pretty much as secure as any "professional" cert, but the thing is that you have to do some due diligence. With a professionally signed cert, you only have to decide whether you trust the CA and their processes. It's the verification you have to do on your own if you trust a self signed cert.
For instance: I run a small server with about half a dozen family email accounts and secure webmail. Everything going in or out is encrypted, meaning if it's not SSH, HTTPS, IMAPS, it has to be HTTP, SMTP or DNS traffic or it's blocked. Now, for the HTTPS and IMAPS traffic, I use certs signed by my own self generated CA. I do it this way because you can write the CA up to expire in 20 years, and just sign the certs a year at a time - or shorter. I then convinced my family members that they could trust my CA because they didn't need to verify my identity.
Now, keep in mind, there's little more than some personal email at stake, which given the majority of what my mom sends me, is about 2 gigs of religious tearjerker stories, silly jokes, prank pics, and videos of what not to do when you <insert anything here>.
Now, I'd accept such a cert from pretty much anyone I could verify to some degree that coincides with the value of risk.
Would I accept this from my bank? No freakin' way. I want to know that my money is secure, and that the folks holding it aren't running a half-assed operation. I want it to be professional.
It is for this reason I think most of the argument here is redundant. Remember everyone, the question was "when is it OK?" not "how do they do that?" or "what does secure mean?".
Now, if you're putting personal information up on that site, you need to know that it's the right site. It is perfectly acceptable to ask a sysadmin to email you the public key, the one you'll get from the webserver anyway. You can then match that and go from there. Easy and painless.
Another option is to assume it's a bogus site at first and enter an incorrect password. Sometimes you'll see something you don't expect. Still, that's getting a little on the paranoid side if you're just trying to grab an ebook.
Bottom line, it's ok if you're comfortable with it. If not, then you have to decide it's not. The cert exists to assure you that you've got the right place, not the site admin.
Ok, yes the traffic will be encrypted, yes the communication is safe. However, this sets up users to accept *anyone's* cert for that site. If the dns is hijacked or something, and the users are redirected to an attacker's server, the users will already be used to just accepting any certificate and they may accept an attacker's certificate and log into a malicious site, not realizing that the site is counterfeit and being operated by malicous people who are collecting their logins or worse. The whole purpose of using signed certificates is so that you know the site owner is who they say they are because Verisign checked them out. This is a very "ghetto" way to do things and I'd personally not use the site, since I have no way to verify it's really their server on a day to day basis. This is especially important when expiration time rolls around since the users will have to accept a cert again. How do they know it's really the same site operator and not an attacker? The attacker could just add a notice to the site: "Our cert has expired, please accept the new one and add an exception.". The user (who's done this once already) will think nothing of accepting the new one regardless of who it really belongs to. While not dangerous from a technological point of view, it is dangerous from a social angle. This is the whole reason certificate authorities exist, so users can verify who the site owner is, hence the name *Veri* sign. The op should have summoned the power of google for this info. -Viz
Don't kid yourself. It's the size of the regexp AND how you use it that counts.
It opens you up to a man-in-the-middle attack, but sometimes all you care about is that the traffic isn't going in the clear over random wifi connections.
The better way, but less lazy since there's another step, is to create a CA yourself and sign the cert with it's key. And provide a way for users to add that CA to their browser's list of trusted CAs, that way the man-in-middle attack can only happen at that one initial request and actual requests to the SSL site will work as if it was a commercially signed cert...
In case you all haven't figured it out...he is referring to The Pirate Bay...
and since they are signing it themselves they probably can offer higher bit encryption, like going up to 1024. it would be even better than bought certificates. most of the ssl certs sites buy from CA's are generally 256 bit due to the price tag involved. so you may be safer with pirates with an unsigned ca.
Read radical news here
In the real world, all identification used by individuals to prove who they are is issued by governments. How far would you get trying to prove your identity using ID from some self-appointed "identification authority". Why should the latter be trust-worthy in the electronic world? Especially from a company like VeriSign who are the same nimrods who foisted "SiteFinder" on us???
I'm reminded of a quote I once read: "A certificate authority will protect you from anyone from whom they won't take money." IIRC, it was made by Paul Vixie on the NANOG mailing list.
Self signed certs are the only ones you can 'trust'.
You just have to go and verify the cert in person (or at least out of band) before using it for identity authentication on the Internet.
Can use in two-way SSL where the client certificates are signed by your self-signed CA and your webserver/reverse proxy verify the client certificate.
I'll avoid the pissing contest about the CA/certificate vendor business model and concentrate on the technical question asked.
A self-signed SSL certificate should not be used.
The reason for this is that the IETF RFC's that define certificate path validation [see RFC5280] do not specify how to validate an 'end-entity' self-signed certificate. Each browser vendor implements their own logic in this area and _even_ if one assume they all do something reasonable the differences could cause a support nightmare.
A better solution is for the web site to run their own CA. This is very easy and there are many free or mostly free CA products to choose from. Openssl for example would work fine. Distribution of a new root CA is something all the browser's and operating systems support and one has a hope of making that work correctly.
Of course, as others have noted, the "proper" distribution of a CA certificate is debatable. Getting your new CA certificate shipped with the browsers is of course the approach CA/certificate vendors use. It is probably best but cost prohibitive and of course inappropriate for this scenario. The web site is best off if they can widely distribute their CA certificate or distribute it using an existing certificate from a CA vendor (ha!).
Simply distributing it on their own web page puts them squarely into the 'ssh' model wherein the first time somebody connects they get the CA certificate and from ever on they shouldn't have to go through that process again (if they do have to do it again it is a sign of a possible mitm attack). This is a well recognized model and arguably the web browsers should include UI to help support it -- but they do not.
Which means the users are being expected to handle and understand these issues. At which point perhaps the customers would appreciate it if the web site vendor spent that small sum of money and just bought a certificate from an established CA.
The way I handle this, at work and on my home server for friends, is to self-sign a certificate signing certificate. I can then give my users a way to download and verify that certificate separately from the web site.
Then, my web site presents a certificate signed with that signing certificate, just like you'd get from a regular CA. If you've loaded the certificate signing certificate into your browser or system certificate manager, then no more dialogues.
This has the additional advantage: I can issue client certificates and tell my server to accept all client certificates signed by my signing certificate. I'd need to get a signing certificate to do that with VeriSign or that lot, and that's getting seriously spendy.
But if all you're using https: for is data hiding, then it doesn't matter, does it?
The browser and the intended URL which I AM SURE is a SS page negotiate the connection when one clicks submit. NOT the page on which you entered the information.
The current page has nothing to do with the method of transmission. Only the intended URL counts.
If the intended URL is SS then the transmission is SS!
The legitimate bank is https://www.commerceonline.com/
I create my own domain and get my own certificate for https://www.mybankofcommerce.com./ I then proceed to look like Commerce Bank.
The problem is that the CA does not enforce trademarks, it only enforces that you say you are who your domain is.
When certificate vendors claim they protect ID, they can't make that claim, because they don't have trademark control over DNS or a web site.
This is my sig.
When neither you nor your customers want to deal with annoying pop-up messages stating that you are not a ca.
Just because the form PAGE is not HTTPS doesn't mean the form PUT isn't HTTPS, i.e. a form that doesn't show the little lock icon might still be perfectly secure, but without looking at the page source you won't know about it.
And, ironically, vice versa. I.e. you can have a HTTPS form that actually uses unencrypted HTTP to submit its' data. Your browser is supposed to warn you when you submit an HTTP ("insecure") form and when you go from HTTPS to HTTP within the same site, but after the first couple of times almost everybody turns that warning off.
How's that for security comedy?
I'm a little confused on this certificate stuff.
It sounds like if I make a web site, but set it up to go through https instead of http, users will get an error that I have an unverified certificate?
Why is this?
Why can't I just enable encryption on my web site, without any attempt at proclaiming my identity, and just have the browser start communicating with my web site via an encrypted channel?
In my view the only way we are going to get all these net neutrality and FISA issues resolved is by making it too hard to randomly eavesdrop - and this is done by encrypting everything. Why is this so hard to do?
A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
Just because the form PAGE is not HTTPS doesn't mean the form PUT isn't HTTPS, i.e. a form that doesn't show the little lock icon might still be perfectly secure, but without looking at the page source you won't know about it.
And, ironically, vice versa. I.e. you can have a HTTPS form that actually uses unencrypted HTTP to submit its' data. Your browser is supposed to warn you when you submit an HTTP ("insecure") form and when you go from HTTPS to HTTP within the same site, but after the first couple of times almost everybody turns that warning off.
How's that for security comedy?
(Duped because I neglected to sign in the first time)
There's no reason to continue to use self-certificates today as you can easily get your certificate signed for free by http://startssl.org/
Their certificate authority is included by default with Firefox (you can add it manually with IE)
You can get a certificate recognized by default by the majority of browsers for a few bucks anyway.
Just make sure you have OSCP checking turned on on your browser (because it's so easy to sign a certificate that it has to be revocable easily)
Please also stop to use pre-computed certificates (ie localhost with a private key on a cdrom that everybody can get...) or reuse the same on different servers (in some cases, Firefox 3 now refuses to load them...)
In the case of a local or regional e-commerce website, for instance, the company offering the e-commerce is more well-known and trusted by their customer base than any 3rd party entity could or would ever be.
I would argue that these companies should be able to self-sign their certs without a big RED screen or a warning in the browser.
Some Hong Kong post office is surely no more credible and authoritative than the regional chain of stores wishing to sell their wares to customers online.
I believe browsers should have an easy way of determining when and how the certs were created. An IP address stamp would be as much of a seal of authenticity as anything from Thawte, Verisign or GeoTrust.
Almost everyone in our region knows our company, for instance, but they have no clue what the heck Verisign does.
Spiritual Leader of Green Bay Net
In most cased self signed certificates are enough. In my line of work (communications software) customers generate a self signed cert and exchange with their customer(s). The certificates are compared by finger print, serial number and validity periods. If any of these do not match the communications are not accepted. A third party CA like Verisign doesn't ensure much but does make it harder for someone to create a duplicate certificate with the same serial number and information. For most secure communications like AS2 this is best because no one in the middle just direct communications between the two parties.
http://en.wikipedia.org/wiki/Certificate_signing_request/
So much would be solved if we just had a trusted registry, to say, associate a certificate with a domain name, or an ip with a domain name, in a way that would be VERY HARD to spoof. I guess its a failure of DNS (big surprise). Now, if we just had some domain resolution servers that we could trust the identity and data of, then we could at least push the trust problem back further. The internet needs to be simple for consumers to use it properly (i.e. not neglect the s off the http when logging into their email or banking site). So could we simplify and just worry about the problem of how www.amazon.com resolves to some IP address and some public cert? If we have a trusted registry we don't need to worry about these trust chains any more, and it would solve a lot of the problems we have with DNS too, no?
If you are in the IT department of a small- to medium-sized company or department, it may be worth setting up your own CA.
When you image new machines (regardless of OS), you can install the CA's public PEM file, and so user's won't get prompt. Besides web sites, you can also use things like EAP-TLS for WiFi which greatly improves security.
There's a bit of overhead, but with something like TinyCA it makes things fairly painless.
"Their defense is that it is just as secure as one signed by a commercial CA;" From a cryptographic sense, they are only partly correct. The session data is secure from causal eavesdropping - but they no longer have protection from the "man-in-the-middle" attacks, since their certificate could be forged.
"the staff do not want to have their personal information in the hands of a CA". But I guess it's okay for a domain registrar to have it... WTF?
It's odd, since they use a self-signed certificate to deliver their copyrighted data they are trying to protect. It's not giving the users a false sense of security - it's give THEM a false sense of security.
Of course, if you're going to do a self-signed cert, at LEAST have it match your domain. Not doing that is stupid.
I have my own CA set up for various internal stuff, so any cert either has to be trusted by my CA as well. This way, I can sign my own stuff, but keep the CA protected to prevent cert forgery.
Because provides no protection against man-in-the-middle attacks, so someone who actually wants to read your communications would have little trouble doing so. Of course, there is the catch that they would have to actually be in the middle when the encryption keys are exchanged, and then actively re-encrypt each packet going each way (because the attack basically means the attacker acts as a proxy for the server to the client and as a proxy for the client to the server). This is obviously a lot more work than dumping traffic onto a disk with some filtering for review later, which is already a rather daunting task with the amount of traffic on the internet.
OK, so what you are saying is that it does no good to encrypt end-to-end communications if someone in the middle also was in the middle when the keys were exchanged.
So I have a question (actually two):
1) I thought with public key encryption you only needed public keys available so there was no danger of such MITM attacks? Doesn't SSL use public key encryption?
2) How does a certificate prevent a MITM attack during the key exchange process?
Thanks.
A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
TLS doesn't have to use only X.509 with trusted roots. Get browsers and servers to implement RFC5081 and you can use OpenPGP keys instead. Take advantage of that web of trust.
There are many many more small companies then there are large. Anyone can buy a certificate. If I wanted an extended certificate and I was going to carry out major fraud I would buy a small bankrupt company, create a web site under an ambiguous name then buy the extended certificate.
Furthermore if you need to buy something weird, the company that sells it is probably unknown to you. The only real check is to google their name and see if there are complaints. A CA signed certificate is no guarantee that they are good guys.
Bad guys have broken into sites that have certificates, and used those sites for their own purposes.
CA signed Certificates are also expensive.
I don't see how a CA signed certificate for a small company lowers fraud. Small companies are being forced to buy them because of the scares the browsers and other software generate.
Certainly you can import the generated CA certificate into the browser and avoid the alarmist messages, but it certainly would be nice if the browser vendors would provide a way to register your CA so that it is included in the "trusted" list distributed with their browser. Thus avoiding the hassle of distributing the CA cert. Of course this introduces the difficulty of keeping the trusted CA list up to date on the browser, and the overhead of the registration process on the browser vendor.
Applied Security Technology will always meet the expectations of experience.
http://en.wikipedia.org/wiki/Pretty_Good_Privacy
http://en.wikipedia.org/wiki/OpenPGP#OpenPGP
http://en.wikipedia.org/wiki/Public_key_infrastructure
http://en.wikipedia.org/wiki/Certificate_authority
http://en.wikipedia.org/wiki/Philip_Zimmermann
http://en.wikipedia.org/wiki/Secure_Sockets_Layer
http://en.wikipedia.org/wiki/Secure_Sockets_Layer#TLS_handshake_in_detail
http://en.wikipedia.org/wiki/Hardware_token
http://en.wikipedia.org/wiki/Biometric_authentication
https://www2.sans.org/reading_room/
http://www.giac.org/certified_professionals/practicals/gsec/4993.php
http://www.giac.org/certified_professionals/
http://www.linkmatrix.de/index.php?education=home
http://www.linkmatrix.de/tutorials.php?q=PGP
Those that can DO, read. Those who can read, but not DO, preach.
Readers, fakers, and test-takers always manage to fail.
Hands-On experience and continuous-learners always work for tale (or is that rep).
To many PGP/PKI/CA/TSL... comments are cross-BS technology application comments. Only in politics does mixed pieces of BS function properly or as expected.
In technology as in science it either does, or it don't do. There is working properly or working poorly (with a problem) until troubleshot and fixed. If it never worked or ain't working at all (cannot be made to function fully and consistently as expected) then someone fycked-up bad (miss-applied technology application) perhaps the brown-nose wannabe manager that can only read made a decision.
Unaccountable leaders are masters, and unrepresented people are slaves. How do US and EU fare?
There are a few companies starting up that are creating software to spy on the ISP's customers. The ISP has to install this box into their data center and it collects data for every subscriber to build a profile. This profile is based on your browsing habits. The companies inject ads into your HTML page to spam you. The ISP gets paid by the companies for this. You are basically getting sold out by your ISP to be spied on by a 3rd party company.
One of these companies is http://www.phorm.com/.
SSL would completely block this. If every website, or at least a large percentage of them, used SSL, even if it was just a domain verified one from a CA so the browsers won't complain, these companies would be out of business before they started. There are large ISPs in the U.K. that are rolling this out already. There are also some ISPs in the USA that are beginning trial installations of this hardware.
http://www.cacert.org/ /. http://slashdot.org/yro/04/07/02/0116236.shtml?tid=126&tid=158&tid=172&tid=95&tid=99
Discussed on
There is no right to feel safe thru security vaudeville at the expense of everyone's freedom, privacy and tax money.
If you, the user, can trust the site handing you the certificate to be the one as issued by the owner of the site and not modified by anyone else, then this is perfectly acceptable and is as secure as any certificate provided by any CA.
Now the issue here is that if the certificate has been modified during transit, then your security has been breached. This is something solved with CA signed certificates.
For cases where you're signing on to a system that has its own account/password validation, is it always enough to just use SSL for encryption only.
At that point are cetrificates even necessary, let alone ones signed by a 3rd party?
Posted from my Android phone. Oh, I can change this? There, that's better...
Not really. A phishing site could get its own SSL cert for whatever domain it's using. For example, a bad guy could get a cert for paypa1.com and https://paypa1.com/ would work just fine with a proper secure connection.
The idea is that Verisign or whatever CA granted the certificate should have checked them out, and only give them a cert if they're "good". However, their idea of "good" is completely up to them. You're trusting that whatever they say is good, is good to you also. But what if my name is Bob Paypa and I want to have an SSL cert for my personal domain, paypa1.com? I would hope Verisign wouldn't allow an obvious phisher to get an SSL cert for paypa1.com, but I also think they shouldn't flat-out reject SSL cert requests just because the domain name resembles another business' name.
Personally, I've never trusted the CA verification system. I see an SSL cert as something that guarantees my connection to that server is encrypted, nothing else. As others have said, if you trust a server enough to connect to it, then you might as well trust a self-signed cert from that server. Would I give them all my bank account info just because they have a cert? No. Would I do regular website stuff via HTTPS using their self-signed cert? Sure.
Security is analog, not digital.
Someone else could be in control of the certificate, but they would have to jump over the hurdle of compromising the confidentiality of a private key. Not impossible, but at least there are known defenses.
SSL replaces the insoluble problem of proving identity over HTTP by the multiple problems of
o Appropriate diligence by the CA
o Homophones and lookalike names [Search for "Mountain America Credit Union"]
o Good faith conduct by the CA (*)
o Protection of the CA's root signing key
o Due diligence by the browser vendor in setting up the list of trusted root certs
o Protecting the integrity of the list of trusted root certs on the client machine (**)
o Alertness by the end user
o Appropriate decision-making by the end user
That's just the short list I can come up with in the time it takes to write a Slashdot post. But even with all that, SSL identity verification is still better than nothing.
Isn't security fun?
(*) Bruce Schneier and someone from Verisign once worked out how much it would cost to compromise their master signing key. They figured that organized crime could take over the company in a leveraged buyout for someone in the low eight figures.
(**) It's terrifyingly easy to add a new trusted cert, and at least one piece of "marketing research" software installs its own cert and does a man-in-the-middle on SSL transactions.
Would you know that the certificate had been revoked?
Last time I looked, one popular browser didn't even check for certificate revocation by default, and in the one I'm using now I can't even find the configuration setting to control that.
Now the issue here is that if the certificate has been modified during transit, then your security has been breached. This is something solved with CA signed certificates.
It's also solved by having the browser install the unsigned certificate, which would allow it to go "OK, you're accessing this website through the same certificate as last time, nothing to see here", or to go "DANGER DANGER, the unsigned certificate for this site has changed!"
This is what SSH does with keyfiles, why don't browsers do this with certificates?
Because the certificate authority says they're not supposed to?
Or because nobody's thought of this obvious improvement?
Self-signed certificates work great, provided you require users to install your CA certificate as one of the trusted certs in their browser.
We make our CA certificate available at a simple url (https://www.example.org/ca/) that uses a commercial certificate signed by a "real" CA, and provides an explanation and instructions on how to install our cert. Installation is straightforward in IE and Firefox, a little trickier in Safari.
Once our CA certificate is in the browser's trusted list, all of the other certs are trusted as well. The only thing to watch out for at that point is name mismatch issues caused by domain aliases and the like.
We considered publishing our certificate thumbprints, too, but that just seemed too paranoid.
I assume the site in question is the pirate bay. It all boils down to how much trust you want to put in someone who calls themself a pirate.
>personally verified key signatures face-to-face.
Over the phone is probably adequate. You already know your bank's phone number. Incidents of phone numbers being rerouted are rare, though there are rumors of escort services in Las Vegas redirecting traffic meant for their competitors, and Florida's probation department once had their phone number remapped to a phone sex service in New York.
Over the phone, you'd just have the website operator read you the thumbprint for their cert. You could check it against the value shown in your browser.
Someone more mischievous than me should call up a bank and say "I'd like to verify the SHA1 hash of your X.509 certificate" and report on the results.
A realistic compromise is to note the thumbprint the first time you visit a site, hope it wasn't taken over at that instant, and then make sure it's the same next month when you visit again.
Oh, I see. Thanks Michael...
I'm Starting With The Man In
The Mirror
I'm Asking Him To Change
His Ways
And No Message Could Have
Been Any Clearer
If You Wanna Make The World
A Better Place
(If You Wanna Make The
World A Better Place)
Take A Look At Yourself, And
Then Make A Change
(Take A Look At Yourself, And
Then Make A Change)
(Na Na Na, Na Na Na, Na Na,
Na Nah)
At work we are setting up an internal only application with our internal DNS structure.
We don't have an internal CA and neither does our parent company, so if we need a certificate, we typically purchase certs from Thawte or Verisign.
However in this case our company doesn't have a valid domain structure internally, so purchasing a digital certificate would be redundant. I told them to setup a self signed certificate.
Yes it does encourage bad user behaviour and goes against best practise but given that I've seen far too many internal websites get setup without digital certificates, I felt it was the lesser of two evils.
Sometimes you just have to be pragmatic with your approach to security otherwise people will often take the easy way out and do nothing.
PS: Digital certificates provide two things:
1) Encryption: first and foremost
2) Authentication: It certifies the host is who it says it is.
2) is only useful if the certificate is issued from a trusted source.
Dear Mr. Znork,
Your post is nearly unique in being short, to the point, totally on target, free of extraneous noise.
I wanted to contact you individually, but didn't see how to do it through your slashdot ID, hence this posted reply.
It appears to me (and to a number of other people who have a bit of reputation in security, which I don't), that self-signed records should be the starting point for "identity" on the network.
"For most purposes it's sufficient to know I'm talking to the same guy I was last time."
You have expressed probably the most important observation in the whole area. Furthermore, without the ability to know that all messages in a conversation come from the same agent, you can't accomplish anything else. And self signature is much easier than chain o' trust. Ergo, identity on the network should be founded on a system of self-signed records, with add-on services as they prove worth the trouble. (Roughly as delivery is founded on best-effort IP, with TCP, ..., HTTP as add-ons.)
I was working on this point some years ago, when I got permanently sick. I am unable to finish a publication without a co-author. On the outside chance that you want to do it, please write.
I think that the essential service is a free (OK, maybe just very cheap, but I bet it turns out free) server for self-signed associations of public keys with addresses (presumably, mostly IP numbers). The sponsor of the server should verify nothing about those who post records, and should ostentatiously deny all responsibility for their identities.
Almost all of the functionality is already provided by DNS implementations, where the domain names contain hashes of public keys. Google could provide the service next week (yes, I've contacted my buddies at Google, but they haven't bit on the hook).
To preview my ideas, you can check out
1. Pages 187-215 in the lecture slides with notes for a course that I cooked up a few years ago:
http://people.cs.uchicago.edu/~odonnell/Teacher/Courses/Strategic_Internet/Slides/
(That's at the end, up to but not including the last two pages in case your viewer numbers differently from mine.)
2. a horribly messed up page in progress:
http://people.cs.uchicago.edu/~odonnell/Citizen/Network_Identifiers/
3. A published article: "A Proposal to Separate Handles from Names on the Internet." Communications of the Association for Computing Machinery, 48(12):78-83, December 2005. Slightly longer version:
http://xxx.lanl.gov/abs/cs.NI/0302017
4. An Internet Draft:
http://xxx.lanl.gov/abs/cs.NI/0301011
2-4 describe the application of the same service to provide non-mnemonic free domain names/handles that won't be fought over in court and stolen. During the long wait for the article to appear in CACM, I realized that I should think of it first as Public-Key Infrastructure, with the handle function as a side benefit.
Cheerio,
Mike O'Donnell
michael_odonnell at acm.org
Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
I have seen the assertion that CAs "assume liability" many times, but I have never seen a demonstration that they actually do. Neither a case where a CA provided relief to someone who relied on a certificate, nor the language in which a CA expresses the assumption of liability. I would very much like to see someone post an authoritative description of the actual assumption of liability by an actual CA (followed by an analysis from a competent lawyer).
I have no proof that CAs, such as Verisign, fail to back up their certificates, but all of my experience in related areas makes me assume that they do not. I have very explicit experience with agencies that provide credit reports, and I know definitely that they take no responsibility for the correctness of the reports. I think that the right default assumption for CAs is that they similarly dodge responsibility, until someone presents the evidence that they bear it.
Mike O'Donnell
Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
If you know that you're talking to the proper site, which is verifiable via the key's fingerprint, you can accept that certificate permanently. From that point on, it's as good as a CA signed certificate.
However, if you get a bad certificate the first time around you're hosed.
That said, usually, you'll be fine.
Yes, I am a smart ass; it's better than the alternative.
When you add a self-signed cert, you usually add it to the root store. And if it's generated as a default self-signed cert, it probably thinks it's good for ALL USAGES. If you accept this cert for your little site-that-can't-afford-Verisign, you are opening yourself up to a world of hurt.
Not only can they man-in-the-middle you to any SSL web site (including your bank), but they can sign code claiming it to be from someone else, they can sign ActiveX controls, they can forge email to you with a forged S/MIME signature, etc. It's a huge risk.
I have and will continue to accept self-signed certs when the situation calls for it, but I also set the "Certificate Purposes" to a stripped down list. In this scenario, Server Authentication is all you need to allow. If the web site owner is not malicious, ask them to issue the self-signed cert with only that one use enabled, and match it to the name of the site/domain, and make it not a CA. Then they can still protect the communication channel, but they can't do anything else to you. Better yet, get them to set up a CA that can issue these certs, and get users to install that CA cert, enabled for only Server Auth.
--Jaborandy
I screwed up the rfc number.
It's 4346: "The Transport Layer Security (TLS) Protocol Version 1.1"
GPG 0x1B479C78
SSL is for two things: 1. Encrypting the data going back and forth between user and sever. 2. Proving that the server is who they say they are. #2 is inherently flawed, and really gives you nothing anyhow, as hundreds of comments before mine have pointed out. #1 is useful, and the lack of a lock icon doesn't change a thing. If you already trust the domain, then go ahead and accept the cert. I use SSL on servers that I run all the time, and don't bother to get a CA to sign the certs, since I trust myself to be who I say I am :) Just don't enter your bank info or email credentials unless you really really trust them!
Isaac Z. Schlueter
http://foohack.com
However, self signed certs are useful when you have some means of secure distribution.
For example, I have a webmail client running on my server at home so I can read my mail while I'm at work (my office's evil proxy blocks out secure IMAP). I access the webmail client via SSL with a self signed cert. Since I added the cert to Firefox's list of exemptions while I was at home, on my private network, I know there was no MITM attack. Now I can access my home server from work using this cert no problem. If someone were to try a MITM attack, then the cert would change, and Firefox would complain (and I'd start updating my resume in an attempt to escape my evil IT department. :)
"A CA gets compromised in the way you're discussing, and there's economic hell to pay." I hope that we won't post this assertion too many more times before someone provides at least one example where a CA has paid some "economic hell," or at least a plausible scenario regarding the mechanism by which this "econonomic hell" is paid. I have seen no evidence whatsoever that a failure of a CA will lead to large scale refusal to accept its certificates.
Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
SSH uses a self signed model and yet on the other hand this is typically considered to be "better" than telnet... Why is this given that SSH can be easily subverted by a man in the middle attack just like with self signed certs!
By the arguments of those who claim SSC (self signed certs) are useless then so also is SSH because it fundamentally relies on that first contact where it pops up the warning saying "do you trust this host" is actually talking to the correct remote system. If this was subverted then you are stuffed from that point forwards
I think the point is that people generally consider that it's "hard" to continually perpetuate a MITM attack and likely there will be some clues of certs changing from time to time. I think the same argument could be made for SSC on websites. For logging in to read my email or similar low risk activities I would personally prefer a "probably" encrypted and at most intercepted by a small number of attackers connection than a completely open and visible to all connection.
Sure it's not good enough for big biz sending CC numbers over, but to be honest even there certs are a half arsed solution waiting for the CC companies to finally discover public key encryption... A small USB payment dongle (or cell phone program or whatever) would allow secure payments over an unsecured network...
An example of an incorrectly granted code-signing certificate.
http://www.schneier.com/crypto-gram-0104.html#7
http://www.microsoft.com/technet/security/bulletin/MS01-017.mspx
Don't mess with The Phone Company. Piss them off and you'll be using two tin cans and a piece of string.