Is there a protocol or best practice for trading information between parties where one, after receiving his share of the information from the others, might refuse to answer or might alter his answer, based on the information he just received? Ideally there should be a system where each put in their information, and the system only reveals it after all have posted theirs.

The point is, there are a number of people, not more than ten, who want to use an online system to share information (which, for the sake on an example, resembles trading information. For example, I sell x for y amount of money). It has to be done at most a few times per month. It would be best to use something like a chat room, private forum, an instant messaging group or a plain old e-mail list, and we need to eliminate the possibility of someone altering their answer upon reading what the others have posted. Even if not expecting malice, one can unconsciously alter their part if reading the others beforehand.

I'm trying to hinder any and all kinds of game theory related dilemmas.

There are multiple solutions to the problem, but all have major disadvantages.

  • create a website which handles this: once everyone posted their message, the website will reveal them to all. Problem: if such a public and well-known service existed, it would be the answer to this question. If it doesn't exist, and someone from the group (or someone hired by someone from the group) implements it, how could the others trust that it doesn't leak information to him?
  • meet in person, write it on paper, and read them together. Problem: hard to organize, and costly, especially if the members live far away from each other.
  • Everyone posts a hash of their message. After all the hashes have been posted, all can post the normal message in any order, because an altered message can be spotted. Problem: too ominous, frustrating and time-consuming to do, might make people paranoid, and as they check every time the hashes of the others, it accentuates that they don't trust each other. A full-body scan when leaving a baker's store to check whether you have stolen a cookie would accentuate too much that the baker distrust you. To understand my point with the baker example: putting the cookies out of easy reach and giving them only on demand to the first customer in line is a sensible security precaution, but making a full-body scan is not.

The information needed to be exchanged can be expressed in basic textual form, and is at most a few hundreds of characters long.


2 Answers 2


The answer is no, and it's explained why in the Thomas Pornin answer to another question.

From any system that doesn't require a trusted third party, there's no way to escape, since you can force them to reveal the secret at the same time. So, no matter if you encrypt it, sign it, say it louder, everybody types at the same time in a chat, reveal some hash first, etc., if you're not obliged to reveal the information, you simply don't reveal it, loses nothing, and earn information provided previously.

Publishing hashes before might only assure that the revealed information wasn't changed between the time it was "written" and had the hash calculate, and the time it was really revealed. So you solve the "alter the answer" part, not the "refuse to answer" one.

  • I think I've understood it, and I agree with you that it's impossible to make it completely secure. However, there are a lot of problems which don't have an optimal solution, but suboptimal solutions are still used. A standard bicycle lock is no burden at all against a very skilled thief, but it's still being used, not to deter the world's best bicycle thief, but to deter most random passers-by. I was hoping such a service exists, which doesn't guarantee 100% security but can be useful for cases where the information is not that important that people will go out of their way to hack the system
    – vsz
    Nov 24, 2014 at 22:39

You have intentionally set up an impossible situation:

  • People distrust each other enough that we have to defend against lying-cheating-stealing
  • People are even worried that the subconscious of the other person might betray them.
  • People seek cryptographic grade guarantees
  • All solutions are explicitly forbidden by your examples:
    • People are uninterested in trusting infrastructure
    • People want the illusion of trust, so are unwilling to do even the most basic of cryptographically secure activities.
    • People are not willing to do face-to-face business

That is a perfect storm. You have intentionally demanded the highest information guarantees possible, and demanded that we use none of the tools invented in the last few thousand years to do it. Do they even trust math?

The solution is multiple solutions. Because you want the entire world, you have to do some balances.

  • There should be an option for users to trust the website to "do the right thing," for handling lower value information on the realm of "I don't want anyone to feel paranoid."
  • There should be an option for users to demand a commitment from the other person. Understand that you don't have any proof the information has value (see Zero Information Proofs), so all you are doing is getting a guarantee that the information is what they claimed it was before you paid. Also understand that, if money is changing hands, that is a non-cryptographic activity, so that must be handled separately.
  • Remember, this "revealing" process is probably the single strongest part of the entire concept of information transfer for money between uncooperative parties. Every single other step in the entire process is far easier to cheat. This will not be the weak link.

This is exactly how credit card systems work. For small purchases, you swipe and go. For large purchases (or vendors that prefer a little more paranoia), they ask for a signature.

You must log in to answer this question.

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