it seems TOR is better/more secure since it doesn't use DNS, and it doesn't rely on CAs
Just as it's ultimately the user's responsibility to verify a TLS certificate before accepting it, it's the user's responsibility to verify that an onion address is the intended address. By starting with
- (a) I know an onion address
- (b) I know a regular domain name (f.ex. "google.com")
you are stating, by hypothesis:
- (a) I have solved a tricky problem
- (b) I have yet to solve a tricky problem
and (a) directly implies more security than (b) because of the stronger hypothesis.
But stating (a) actually means "I know how to solve tricky problems" so you should be able to also solve (b). IOW, if you can reliably obtain an onion address (f.ex. over the phone from someone whose voice you know), you should be able to reliably obtain a TLS certificate fingerprint of the website by the same provider.
But you are probably relying on some Internet resource (website, Usenet message, email...) to learn the onion address:
- (1) do you trust the claimed author of the message?
- (2) do you trust that the message was really written by this author?
Maybe the message was found on an HTTPS website, and you are back with:
- (a) verifying that the owner of the website is the person you trust
- (b) the website you see is the real website, IOW that the TLS certificate is valid.
Maybe the message was found in an email, and you have to check the PGP/GPG (or S/MIME) signature. Then you are back with: who owns this PGP/GPG/S/MIME signature? In any case, you need a trust anchor.
No cryptographic protocol or tool alone solves this problem, because it isn't an algorithmic matter, it's a matter of fact checking, facts like "this key really belongs to this person", and in most cases trusting others to do the fact checking, unless you can meet the guy in person and ask him his key fingerprint, which honestly is rarely the case (I tried with my bank and they had no idea what the fingerprint of the key was).