Ok, so only the holder(s) of the merchant's privkey can verify that the signature is a hash of the Payment Request. The merchant's certificate cannot be used to do this. Is this right?
If so, I still fail to understand the necessity of hashing the Request Details and signing that. The end user cannot verify that the hash is a result of such a hashing operation, and they are the only recipient of this signature. Only the merchant should be able to ascertain that the signature is generated by signing a hash of the Request, and they have no apparent need to verify this, being as they presume to have collected the details in a direct https session with the user.
Why use the Payment Details, which the merchant should be confident of anyway?
No, in DSA systems, the signature is verified with the public key, but created with the private key. This way, only the private key holder can create a signature, but anyone can verify it. The certificate is a jumble of stuff, but at heart it is a carrier for the public key and information related to the public key.
This is really the whole point of digital signatures, and the reason why DSA is always done with public key cryptosystems.
I'd just like to make the general point that if we were all perfectly aware of every factor that affects this new introduction pertaining to all wider contexts, then there wouldn't really be anything to discuss. Sort of a general principle to the concept of discussions, really.
Those that complain about me and others being ignorant of everything that they themselves already know should get a grasp of the limits of their own perceptions. Your expert level of understanding is by definition exceptional. Opening it up to discussion, but making any reasonable discussion conditional on us all being versed in everything you know is clearly never going to be productive. We do need to get your comments on the implications of this proposal, your comments are the most relevant of all contributors, seeing as you guys know this software better than anyone else. Some don't trust your motives for the introduction, others like me don't know either way and would like to take the opportunity proposed by the creation of this thread to, as described, discuss the proposal. It seems as if the very idea that broaching subject of whether this protocol endangers the privacy or identity of the user is being taken as an offense, and I am sorry if that's how you feel, but it's unavoidable given the wider circumstances. If you know you're acting with the best intentions, then having your integrity questioned by those that do not understand the whole as completely as you do must be frustrating. This is no excuse to behave unpleasantly towards those who pose the questions, especially when my own such questions have been posed entirely on the basis of the technical aspects without bringing any aspersion on the good character or technical competence of the core developers who choose to answer the questions. It seems that not all devs can say the same about their own conduct in this thread.
I propose that we should be concentrating on improving the understanding and acceptance of this protocol, not indulging in one-upmanship as a diversion from the topic matter. Anyone would think that this proposal is already reflected in the title of this thread, which is not "Where everyone tears strips off each other to prove who's the biggest computer science know-it-all, under the pretense of discussing some protocol or other". The outcome of the overall consensus of this discussion should be more important to us all than the way this has played out so far.
(plaudits to kjj for writing some good posts overviewing the relevancy of the SSL PKI, a far more useful response than just saying "read up about the entire thing from this overarching article")
I'd like to point out that this is not an expert level discussion, not even close. This is basic stuff, "Introduction to Cryptography 101" level. In short, this is stuff that you should already know to participate in discussions in Dev & Tech.
I don't say that to be insulting. I don't want to drive anyone away. I don't want to discourage anyone from learning. I don't want to prevent anyone from contributing to the conversation. Quite the opposite on all counts, actually. I have very little time to devote to bitcoin, but most of the time that I do have is spent helping and teaching others, at the expense of time I'd rather be spending on my own projects.
But if someone comes in here and their understanding is not sufficient to making meaningful contributions, they really should spend a lot of time reading silently, or asking very polite questions and reading the answers with great care. What they should
not be doing is repeating nonsense they heard elsewhere or arguing with the dismissive answers they get when they do.
Now let me explain why I'm so hostile to piotr_n. For the last year or two, there has been a deluge of FUD. Virtually all changes that have come to public discussion have come under relentless attack, typically by people "asking questions" and spreading misinformation. Piotr is a good example of this. Go read his post history and you'll find a fairly complete catalog of recent changes to the bitcoin system. He is opposed to every single one of them, he thinks that Gavin is the puppet of the Illuminati, and when pressed, he doesn't know a fucking thing about anything he's ever talked about.
But he isn't alone.
Dozens of him have come and gone. I don't like to assume malice while incompetence is still a viable option, but after a while even the least paranoid among us starts to wonder exactly who wants to undermine the development team and process, and why.
So, again, I apologize to anyone* that has ever been dismissed or answered less than politely. But no one here is here to educate you, particularly not about the basics, and if you show up saying the sorts of crap that we've been dealing with nonstop for the last year or so, the odds really aren't in your favor.
* With a few exceptions.