I'm wondering if it would be possible to implement this functionality with a trusted but transparent third party (maybe an Ethereum smart contract?):
Bob has an encryption key. Alice has the encrypted data and wants to buy the key from Bob.
Bob sends the key to the smart contract (SC).
Alice sends some ether (and perhaps the encrypted data or some function on it) to the SC.
The SC verifies that the key decrypts the data properly. If it doesn't, it halts.
The SC sends Bob the ether, and Alice the key.
The main issues I'm finding when I'm trying to think of a solution are:
- How does the third party verify a decryption is correct?
- Is it possible for the third party to verify this decryption without revealing it, since it is transparent? I know of zero knowledge proofs, but am not sure of how they could apply here.