Bitcoin Forum
May 27, 2024, 04:15:14 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 [5] 6 7 8 9 »
81  Bitcoin / Development & Technical Discussion / Re: A vulnerability in olalonde's implementation of gmaxwell's proof-of-solvency on: October 07, 2014, 10:28:21 PM
My reading of iwilcox's post (well, my reading of the big diagram with nodes circled) is that the preimages of the child-node hashes (just the preimages of the hashes actually in the path from user's account to root --- the whole tree is not expanded of course!) are given to the user, so the user can verify this. I haven't verified that that's what olalonde's code actually does, but I'd expect it to be the case.
82  Bitcoin / Development & Technical Discussion / Re: A vulnerability in olalonde's implementation of gmaxwell's proof-of-solvency on: October 07, 2014, 09:31:00 PM
Hi charlescharles,

Good catch. This actually addressed in iwilcox's writeup --- grep for "similar customer pairing trick". In fact this is safe, since the sum for each node is part of its hash. This means that if you tried to zero out one of the children, that child's hash would change. So even though the unsummed child amounts are not explicitly hashed, the are committed to as part of the child nodes' hashes. I hope that make sense.

By the way, in future, if you think you've found a security/crypto bug, it's best to bug people in private (in this case olalonde or gmaxwell would be appropriate -- or go on IRC #bitcoin-wizards and ask to PM somebody). Especially if there is a possibility of loss of funds (if the wrong people know about something before it's fixed) responsible disclosure is critical.

Thanks for auditing code!

Andrew
83  Bitcoin / Development & Technical Discussion / Re: Preventing Asic mining [fork] after next halving would solve a lot of problems. on: October 07, 2014, 03:58:28 AM
The only way to avoid this expense, is to fade out PoW mining altogether, and change to a PoS system.

Proof of stake has been shown to be unusable as a distributed consensus mechanism.
84  Bitcoin / Development & Technical Discussion / Re: Preventing Asic mining [fork] after next halving would solve a lot of problems. on: October 05, 2014, 07:19:15 PM
Seems like they have at least the same understanding about the words I was using before and not like the ignorant guy DannyHamilton.

DannyHamilton has gone above and beyond the call of duty for a number of years now, providing detailed, thoughtful, consistently correct advice on this forum. He has a wide understanding of Bitcoin's operation and explains things in great detail, often even to users who are clearly unwilling to invest a fraction of the time reading his posts that he spends writing them. There is an overwhelming amount of repetitive and ill-advised material on this board and it handling it would be far more hopeless without him.

It is easy to become frustrated in such a situation, and also difficult to communicate tone through a text-based medium, so I hope you will give him the benefit of the doubt in future. And do not call him ignorant. That is not only untrue, but uncivil conduct. This sort of behaviour is why more knowledgable people won't take the time to participate on this board, and is detrimental to everyone.
85  Bitcoin / Development & Technical Discussion / Re: Preventing Asic mining [fork] after next halving would solve a lot of problems. on: October 05, 2014, 05:52:11 PM
Sigh, ASIC hardness has been discussed ad nauseum. It is neither possible nor desirable.
86  Bitcoin / Development & Technical Discussion / Re: Can side-chains be used to achieve optimal network security / transaction fees? on: September 27, 2014, 03:34:02 AM
When you unlock coins on the mainchain, all that it sees is a SPV proof of ownership on the sidechain. It would look for things like the amount of coins being proven in some standard location. So it'd be easy for the sidechain to put some amount different from the "real" amount to simulate a changing exchange rate. Since this amount would change in a predictable fashion with each block, it could be a consensus rule on the sidechain, so it'd be just as secure as the ordinary case.

So your idea is definitely workable.

But notice the economics here -- users are moving their coins to a sidechain which will cause them to devalue, rather than directly paying fees. I think the effect from a user perspective is actually the same -- so if users don't want to pay fees, they won't want to use this sidechain either. (Maybe there is some economic argument about inflation versus direct fees, I dunno.)
87  Bitcoin / Development & Technical Discussion / Re: BTC fees and micropayments on: September 23, 2014, 12:15:09 PM
@andytoshi: I truely respect your work and don't want to be a troll with you; but, seriously, what does the concept of "a transaction making sense to everyone around the world" have to do with the protocol ?

Because every transaction must be stored by every archival node forever; it must be validated by every full node; its outputs must be stored by every full node at least until they are spent.

Quote
Does a transaction for buying a house make more sense than a transaction for a latte  ? Why ?

Well, no, this is a good point. It would be better to have privacy such that the network could not distinguish between these transactions, but the fact would remain that one is an infrequent permanent transfer of land for a significant amount of funds, while the other is a sale of a consumable which happens millions of times a day and nobody cares if individual transactions go through or not. To be a useful network, Bitcoin needs to be able to handle the first without fear of fraud or reversal. The second is not so important.

Quote
Let's just admit that, because of scalability & financial incentives, micropayments can't work directly on top of the bitcoin protocol and require an intermediate layer for clearing.

I'm not sure about "an intermediate layer for clearing". Probabilistic transactions don't feel like an intermediate layer, for example.
88  Bitcoin / Development & Technical Discussion / Re: Alternative ways of spam prevention on: September 22, 2014, 09:43:10 PM
How would it be if the spam transactions are prevented not by transaction fees but by a method like Hashcash's e-mail spam prevention? Then the transaction fees may be set to zero. Isn't it possible?

The problem (and also the problem with using Hashcash for email spam) is that attackers are always willing to invest more on dishonest behaviour than honest users are willing to invest on honest behaviour. They can buy dedicated hardware, use botnets, etc., meanwhile honest users will be trying to build transactions on slow devices with low battery capacity.

Also, unlike email "spam" in Bitcoin can be produced by honest users simply because there are so many of them relative to the limited blocksize. So for a hashcash-like system to actually filter transactions to the degree necessary, it would need to be turned up so high that users could not do the computation on their own devices. So then they'd pay some third party and you're back to the fee situation, except now the people choosing the transactions aren't the ones receiving the fees, so you have an incentive mismatch.

Quote from: RawDog
Why don't we just track the fuckers down with Roger Ver's new system and then just beat the holy shit out of them until they can no longer operate a computer?
Please take this garbage elsewhere.
89  Bitcoin / Development & Technical Discussion / Re: BTC fees and micropayments on: September 22, 2014, 05:37:54 PM
The Bitcoin protocol is perfectly capable of handling micropayments. Most nodes will not relay transactions with tiny outputs because they are not interested in storing and indexing them, they are not compensated for doing so, and if there was somehow compensation, it would overwhelm the amount of the micropayment.

Since I started typing this, a somebody (actually several somebodies) in Bejing purchased a cup of coffee. It does not make sense that everyone around the world should need to be aware of this, let alone store and validate information about it.
90  Bitcoin / Development & Technical Discussion / Re: Hard-Fork to make us have a have a FREE Universal lottery system on: September 21, 2014, 03:53:34 PM
Well, I mean to originate a transaction signed by the private key to which that  address corresponds. I'd rather not play word games here. It will only confuse the discussion.

Signing a transaction with a private key to which an address corresponds is nothing like "sending from an address" the way than any English speaker would understand "sending". Did you read the linked article?

Quote
The miners would have to include the new extra lottery coins (minted) to the address of a winner that burnt their coins in a previous (confirmed) block.

How many blocks back? From which block(s) are you extracting randomness? Can you describe the ways that various parties would try to game this system and what the costs to them would be?

Quote
The important thing is that you can burn the coins and that the coins burnt cannot be spent. I'm not sure in what sense it would be different with provable unspendable outputs. Can you please clarify that?
Provably unspendable outputs do not need to be stored by every single full node on the network for eternity. Non-provably unspendable (but unspendable) outputs do have this property.

Quote
I have no idea why you say the probability distribution I chose is so that the ones near the front of the list are more likely to be selected than ones on the last.
Do you care to explain why do you say that?
Suppose the blockhashes were to lie in [0, 9] rather than [0, 2^256-1], and that there were nine participants. Do you see why taking RNG([0, 9]) mod 9 will result in zero appearing twice as often as every other number?
91  Bitcoin / Development & Technical Discussion / Re: Hard-Fork to make us have a have a FREE Universal lottery system on: September 21, 2014, 02:21:42 PM
There would be a change in the protocol so that a specific address
Addresses do not appear in the protocol.

Quote
could not be used to send coins. It could only receive them.
This is already the case.

Quote
This way it could be used to burn coins
You can burn coins by use of provably unspendable outputs.

Quote
and everyone would be sure that no one could ever own that address and spend those coins.
It is possible to create addresses for which "everyone is sure" that nobody owns corresponding key material, by use of nothing-up-my-sleeve numbers or "hashes" with too much structure to have possibly been found by searching. But you cannot make them provably unownable, so doing this is strictly inferior to using ordinary provably unspendable outputs.

Quote
Then - for every block - the amount of coins that were sent - during that 10 minutes in between block creation - to that "burn address" would be given as a reward with coins entering circulation

This is already the fee semantics, and has nothing to do with addresses.

Quote
, making it a lottery.

Fees are not a lottery. You later indicate that this new reward has a fixed miner-independent destination determined by the protocol, so I suppose I am misunderstanding. In future, I advise you to not use the term "reward" to describe coinbase outputs which are not miner rewards, since this will only cause confusion.

Quote
The winner of this lottery mining would always be ruled by the following:

For every amount sent you would have that number of satoshis sent make you have your bitcoin address

Who lists your address? Every validator, I suppose. How do they know it? Was it encoded in the burn address somehow?

Quote
virtually listed in an ordered list of all the participations as many times as satoshis sent.

So for example if 1KyDtBCT6Vj7VdRP32reeNycrGnVvEjNDV sent 0.00000005 BTC, and after 1n6mSy5xptF8NpF5Nvoy3k1p1vapmZJb3 sent 0.00000003 BTC, and after 112adnFHbxDD9F72gRECPfxL3j62Ktrcm1e sent 0.00000009 BTC

The list with the entries of participations would get to be:

<snip>

It would then be computed:

LAST_HASH_VALUE Mod N
How is the ordering of these addresses determined? Why have you chosen a probability distribution so that the ones near the front of the list are more likely to be selected than ones on the last? (The difference is negligible, but totally unnecessary.) Also, miners would always take this reward since they control what goes into the list of addresses, so the distribution is irrelevant.

Quote
<snip>
This would allow for a universal lottery with the bitcoin network.

Have you investigated any of the other research into trustless lotteries? For example this one?

Quote
<snip>
Even, if it won't happen with bitcoin, maybe it could be implemented in some altcoins.
Wouldn't surprise me.

92  Bitcoin / Development & Technical Discussion / Re: Is it possible to create a message readable only to the owner of an address? on: September 16, 2014, 08:12:49 PM
Yes I believe I understand that.  I thought that by comparing the hash time-stamped in the message-notification TX to the hash of the encrypted message, that the receiver could immediately reject all modified messages (so that the response of a decryption oracle to any attack would be silence.)

Not quite. The receiver needs to decrypt the message before checking the hash, which creates a difference in timing for "valid hash, bad message" and "invalid hash" so it is potentially possible for an attacker to guess messages and use timing to glean information. If there are error messages or observable behavioural differences, these could be used instead of timing. Also there are possibly things like length-extension attacks on the hash function. In fact, regardless of hash function strength, by exposing a hash of the message to the public, you run the risk of predictable messages being found by brute forcing a preimage of the hash. Using an HMAC (a) blocks potential regularity problems in the hash function, e.g. length extension, (b) doesn't give the public any information about the message, regardless of its predictability, (c) allows you to put the authentication on the ciphertext, avoiding the timing problem above.

Note that timestamps are low-entropy and can probably be confined to a small range using public information for most applications.

Quote
Agreed.  It's important to be rigorous with proposed cryptosystems to avoid serious problems if such systems are implemented haphazardly and without proper peer-review.   You, Greg and several others here do a very good job with that.  I think that the discussions like this are still useful because it helps people learn about this interesting field, and perhaps we might make a bit of real progress from time to time too. 

Thanks, glad we're on the same page Smiley.
93  Bitcoin / Development & Technical Discussion / Re: Is it possible to create a message readable only to the owner of an address? on: September 16, 2014, 07:12:48 PM
Right.  But what if Alice includes a hash of the message in the OP_RETURN-you-have-a-message TX [I probably don't have enough bytes in the OP_RETURN, but let's ignore that for now].  Wouldn't any message that gets scrambled by an attacker be detected since its hash wouldn't match what's embedded in the message-notification TX timestamped in the blockchain?  And an attacker clearly can't fake a message-notification TX without knowledge of Alice's private key.  

Is this CCA-secure? (I dunno ... I would guess so in the random oracle model, but I wouldn't build a cryptosystem based on a guess.) Rather than using a plain old hash, an HMAC keyed with the shared secret would be better. This lets you apply authentication after the encryption, to avoid running afoul of "encrypt-then-MAC, never MAC-then-encrypt" as well as to avoid using multiple channels for a single message (which increases your attack and analysis surface significantly). Using a MAC-then-encrypt scheme is a very dangerous idea, so don't do it.

Quote
I apologize if I'm being dense and missing something obvious; it sounds like there's still a weakness I just don't really "get it" in the sense that I can see a practical attack against this specific implementation (rather than what seems to be a theoretical attack that involves oracles).    

These aren't theoretical attacks. Any reaction to a marred ciphertext except outright immediate rejection will be used in a real attack. The only "theory" here is modeling the attack using a decryption oracle, but that's just a formal way of describing "any reaction to a marred ciphertext". Cryptography is broken unless proven secure, and if it has been proven secure, it should be assumed broken until it has been both audited by experts and used in the real world.

I'm describing problems with your scheme to give you an idea of the subtleties involved in designing cryptosystems. I'm a finite being and you should have no problem designing a system that will satisfy me by simply running through all the concerns I can think of. This will not give you a secure cryptosystem. It will give you a system that is as secure as I can design while communicating over the English language (which is very lossy) and without devoting any time to working through the details. So I can't give you specific attacks on specific implementations...this is unfortunate from a didactic perspective, but says nothing about the security of your system.

Edit: To be clear, you aren't being dense. This is really tricky stuff. But I want to say "these are the things you should be thinking about when thinking about crypto" without saying "it's safe under any circumstances to create your own crypto".
94  Bitcoin / Development & Technical Discussion / Re: Is it possible to create a message readable only to the owner of an address? on: September 16, 2014, 04:59:35 PM
It's still not completely clear to me why, if the goal is to send the message to the controller of a bitcoin address rather than to "Bob," we can't view this as an authenticated channel.  I suppose it comes down arguing security along the lines of "oh, well, as long as the user only does this, or the attacker can only do that, or..."

The idea is that the attacker could modify the message along it's way from the messenger to the address controller. Or more likely, snoop the message off the wire or the blockchain or wherever, tweak it, and submit it separately. In either case the attacker can submit a message he doesn't know (except that it is a real message corrupted in some predictable way) and observe the address owner's response.

Note that even with a CCA-secure encryption scheme, messages should have a timestamp or nonce or something to prevent simple replay attacks.
95  Bitcoin / Development & Technical Discussion / Re: Is it possible to create a message readable only to the owner of an address? on: September 16, 2014, 01:54:49 PM
Greg told me that this method is insecure, but I still don't understand why.

In academic cryptography you want well-defined security against arbitrary adversaries with well-defined powers. To make these useful in the real world, we try to make the definition of "security" as strong as possible: typically you want "indistinguishability", meaning that if the attacker gives you two messages of his choosing, and you reply with the encryption of one, he cannot tell which one with probability significantly different from 1/2. Here "significantly different" roughly means "goes to zero very quickly as you increase the bit security of the cryptosystem".

Two standard sets of adversary powers are
  • Chosen plaintext adversary (CPA, "semantic security", "passive attacker"): The attacker has access to all the public parameters and public keys. He can therefore encrypt whatever he likes before and after submitting his two messages for encryption.
  • Chosen ciphertext adversary (CCA, "active attacker"). The attacker also has access to a decryption oracle. Here before and after submitting two messages for encryption, he can also submit arbitrary ciphertexts for decryption to see what he gets back. The only rule is, after receiving the challenge encryption, he can't submit this to the decryption oracle!

These are deliberately very general. If you are arguing security along the lines of "oh, well, as long as the user only does this, or the attacker can only do that, or..." then you've got two problems. The first is that it's probably really hard to argue security rigorously under such an ad hoc definition. The second is that the security of your system now depends on exactly the way that it's used. This means that every change to the surrounding context of your system (e.g. how is the message transmitted, which messages are legal, who has access to what keys, etc., etc.) is now potentially a security bug. Nobody can do this kind of analysis continuously so you are screwed. A classic example of this sort of problem is the crazy mess that is TLS. That blog post also talks about encrypt-then-authenticate vs authenticate-then-encrypt, which is actually a instance of this CPA security being used where CCA security is needed.

Roughly, what CCA security means is that given a ciphertext, there is somehow a way to prove that it is a "real" ciphertext. (Not a way to prove that the ciphertext came from the right person, mind you, that is what Crowex is talking about. Just that it's not deliberately mangled in an effort to learn about its contents. As a simple example, suppose your cryptosystem was "derive an ephemeral shared secret C, then coerce the message M to a curvepoint and the encryption is CM". Believe it or not, simple multiplication like this is the basis for most CPA-secure systems --- you can see, if C is random to the attacker, then CM will be too, so the attacker sees the encryption as random data, and therefore cannot learn about the message well enough to tell one from the other with probability different from 1/2. But in the CCA game, this is easily broken. As the attacker, this is what I do: submit two messages M, M' and receive an encryption C. Submit 2C to the decryption oracle and receive a decryption P. Then P/2 was the original message.

What's interesting is that given a CPA-secure encryption system it is basically always possible to "bootstrap" this into a CCA-secure system. For example the Naor-Yung system (gzipped postscript --- anyone have a PDF link?. Maybe try Naor's website which has a link at "Public-key Cryptosystems Provably Secure against Chosen Ciphertext Attacks", but this is broken for me.) works by encrypting the same message twice using different public keys, and providing a zero-knowledge proof that they are the same message. The trick is that the zero-knowledge proof requires knowledge of the shared secret (more specifically, knowledge of the random nonce used in the encryption --- it is not relevant to Naor-Yung that this randomness is used to generate an ephemeral shared secret). So when I try to do something sneaky like taking a ciphertext C and submitting 2C, I won't be able to make a new zero-knowledge proof, and the decryption oracle will simply reject the ciphertext.

This is cool: it means that CPA-secure systems are still interesting, even if their direct use is limited to pre-authenticated channels. So a good exercise is to head to IACR's eprint archive, find some CPA-secure systems, and try to break them in the CCA game. This is almost always possible --- sometimes as easily as I described above, sometimes not.

So here's your problem: with an unauthenticated channel (like broadcasting encryptions) you need CCA security. Otherwise an attacker can submit arbitrary ciphertexts, and depending on the details of the system (remember, this dependence is deadly!), will be able to get some sort of decryption oracle. Maybe this is simply "output an error if the message is not well-formed, or its padding is not well-formed, or whatever". No matter how weak the oracle is, it's still outside of the CPA security game under which the cryptosystem was proven secure. (In fact, error messages are exactly how the original TLS timing attack I linked earlier worked!) In any case, the result is that the security of your system is basically an accident of the exact way you set it up and the exact way your users use it. So in the future, they will do something weird, and the system will be broken as a consequence.

I hope this helps clarify the original message.
96  Bitcoin / Development & Technical Discussion / Re: Implementing Secret Sharing with an Encrypted Bitcoin Wallet on: September 16, 2014, 12:13:15 AM
What are you trying to do?
Split up the encrypted wallet's private key with ssss and distribute it to several people. Basically, I want multiple people to have to consent to a BTC transaction before the wallet is unlocked. Capisci?
You may be interested by another multisig schema proposed by @oleganza and called Blind signatures.
Hope it helps.

Oleg's scheme is also inappropriate because it gives no ability to the blindsigner to check what he is signing. (And if you give him enough information to verify this, he'll have enough information to sign anything he wants, so again you fail to have a threshold consent scheme.)
97  Bitcoin / Development & Technical Discussion / Re: Implementing Secret Sharing with an Encrypted Bitcoin Wallet on: September 15, 2014, 07:18:44 PM
Then use multisignature transactions. SSSS is inappropriate because the secret dealer has access the entire key, and once all parties recreate the full key any one of them can do anything at all, they do not need to agree, just race each other.
98  Alternate cryptocurrencies / Mining (Altcoins) / Re: ASIC-resistant Proof of Work on: September 15, 2014, 12:35:05 PM
https://download.wpsoftware.net/bitcoin/asic-faq.pdf

Questions 2.5 and 2.6 cover the obvious problems with this proposal, but almost the entire document is applicable.
99  Bitcoin / Development & Technical Discussion / Re: Implementing Secret Sharing with an Encrypted Bitcoin Wallet on: September 13, 2014, 08:50:38 PM
What are you trying to do?
100  Bitcoin / Development & Technical Discussion / Re: What will be considered Bitcoin 1.0? on: September 13, 2014, 01:31:53 AM
1. thoroughly solve 51% problem
2. eliminate the risk of accepting zero confirmation
3. reward mechenisim of  the long term full node owner

Can you cite a single core developer suggesting that any of these are targeted or even solvable problems?

Quote
4. allow user to run a SPV intellectual node

What does this mean?
Pages: « 1 2 3 4 [5] 6 7 8 9 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!