Bitcoin Forum
May 14, 2024, 03:09:39 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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ... 195 »
501  Bitcoin / Development & Technical Discussion / Re: The use of Guy Fawkes Signature in case of ECDSA zero-day exploits on: October 29, 2013, 07:04:31 PM
Protection against a potential weakness in ECDSA has been included since day 1.  Don't reuse keys.

It doesn't help, if someone can crack the key before your tx gets confirmed and has a better access to miners.

Use your imagination, mr bitcoin elite.

Also, in reality, a sudden catastrophic break in ECDSA is pretty much unimaginable.  There have been zero sudden breaks of that magnitude in modern cryptosystems.

How is it unimaginable when the trapdoor is based on math we think is hard? "It hasn't happened before, ergo..." is a logical fallacy. "Modern" cryptography has been primarily based around symmetric crypto which is much simpler and does not rely on trapdoors.

Quote
There may be some value to adding this to the system in advance of the need to use it.  It may even enable some other useful things.  But it would be a fork.

There is definitely value in additional protection.

Old systems were broken suddenly because they sucked.  No one knew they sucked, because no one was looking at them.  Anyone can design a system that they can't break.  Our systems don't suck any more.  They aren't built in the dark.  Everyone looks at them.  In fact, a decent fraction of the intellectual power of the human race is devoted to examining cryptosystems.  The really bad ideas are gone now.

I understand full well that the history of modern cryptography doesn't absolutely preclude the chance of a sudden break, but it certainly relegates it to the domain of extreme long shots.

If you feel strongly enough that the threat is so great that we need to take action now, feel free to do so.  All of the source code is publicly available.  Design and implement something.  Test it out, prove to the world that it works and is safe.  Convince everyone that the risk of changing the system is small enough that it outweighs their estimate of the risk of a catastrophic break.  No one will stop you.  Plenty of us will even help you with design and implementation.

Just don't expect to make any friends by telling people that they must do your work for you.

However, I have to agree with hashman that it is essentially the end of any trust in bitcoin as there will be many unprotected addresses, especially a lot of the early coinbase tx that will never be protected by anything added to the protocol later.

Dormant keys are protected by dormancy.  Unless in this hypothetical world SHA-256 is broken at the same time as ECDSA.
502  Economy / Speculation / Re: Qoheleth's strategy on: October 29, 2013, 06:35:25 PM
They run away from success and towards failure.
How so?

To keep things in balance, you have to sell the winning asset and take on more of the losing asset.  This is a good way to protect against a sudden drop in one side, but does not seem to be a winning strategy for the long run.
503  Bitcoin / Development & Technical Discussion / The imperfect mixer on: October 29, 2013, 04:04:58 PM
I think that the quest for the perfect mixer has greatly hindered the deployment of imperfect mixers.

What we need is a simple system.  A very simple server that can operate over many protocols (HTTP, telnet, IRC bot, etc.), including tor versions.  A very simple set of scripts that run on the client that interact with it.

When the client connects to the server, the server advertises what sizes it is willing to mix and how many participants it wants.

If the client meets those needs, it sends an address that it wants included in the next batch.

It then checks back from time to time, and when the server has enough participants, it sends back a transaction that pays to the list of participating addresses.

The client sees the address it wants in the output and signs it with SIGHASH_ALL + SIGHASH_ANYONECANPAY and sends it to the server.

When the server gets all of them back, it assembles them into a full transaction and broadcasts.

Lots of things can go wrong.  None of these nodes provides any security because the node can de-anonymize the transaction by providing all of the other inputs and outputs involved.  Batches can fail because any participant fails to sign.  People can attack the system by intentionally signing up and then failing to pay.

But imagine a network with hundreds or thousands of these nodes running.  Literally anyone can set up a node.  Imagine clients constantly churning coins through them.  Each cycle adds between zero and full anonymity, so many cycles should, on average, work pretty well.  People could even build chains through the system, using the output from one cycle to feed the next.
504  Bitcoin / Development & Technical Discussion / Re: The use of Guy Fawkes Signature in case of ECDSA zero-day exploits on: October 29, 2013, 03:30:56 PM
This solution has flaws, but is better than nothing.

The concerns about a possible weaknesses in ECDSA are serious and not addressing them ASAP is irresponsible, to say the least.

Protection against a potential weakness in ECDSA has been included since day 1.  Don't reuse keys.

Also, in reality, a sudden catastrophic break in ECDSA is pretty much unimaginable.  There have been zero sudden breaks of that magnitude in modern cryptosystems.  What really happens is that they weaken gradually over many years.

Should such a thing happen, the method described in the first post appears, at first look, to allow migration, and the world would implement it or something like it very rapidly.

There may be some value to adding this to the system in advance of the need to use it.  It may even enable some other useful things.  But it would be a fork.
505  Economy / Speculation / Re: Qoheleth's strategy on: October 29, 2013, 01:33:13 PM
I've never been a big fan of balancing strategies.  They run away from success and towards failure.
506  Economy / Speculation / Re: Gold collapsing. Bitcoin UP. on: October 29, 2013, 01:30:25 PM
Colored coins are unworkable in the real world.  Mastercoin is a scam.

We need a bitcoin-like chain for securities and shares.  We'll get there.  Brokerages will transition to acting as interfaces between the bitcoin chain and the security chain.
507  Bitcoin / Development & Technical Discussion / Re: the bs "Satoshi:0.8.99" on: October 28, 2013, 07:48:30 PM
Uh. NTP is pretty much completely insecure in practice. And if you have free control of time you can inflate bitcoin randomly.  At the same time, nodes don't really need precise time.

There is insecure, and then there is insecure.  Are there any real world attacks that don't require the attacker to be in a position where they could do much worse?

Also, note that the time data used by the bitcoin network is also totally unauthenticated and insecure.  Our pseudoclock is adjusted based on the version message timestamp, which is trivial to modify.  We even potentially reject blocks (which contain a somewhat secure timestamp) based partially on data collected from the totally insecure timestamps reported in the unauthenticated version messages.

Hell, for all we know, the bogus timestamps from these nodes are a real world attack test.

I know that bitcoin doesn't need an accurate clock, but every node on the network has an accurate clock available anyway.
508  Bitcoin / Development & Technical Discussion / Re: Dust/Transaction too large, how to solve ? on: October 28, 2013, 07:31:00 PM
Small transaction management is hard to do in a way that works for everyone, is safe, and doesn't leak privacy.  One or two of those are easy enough, but getting that third one in there is a bear.

It gets much worse when you try to preserve coin age and priority for the free transaction calculation.  Someone with an unhealthy attachment to their old satoshidice in-band notification payments isn't going to be happy if their whole wallet is tied up in new coins when they have to pay a fee for a trivial spend.
509  Bitcoin / Development & Technical Discussion / Re: strip the reference client to a border router on: October 28, 2013, 07:18:25 PM
Is it possible to build a "no dependency" client? Just integrate all (and only) necessary external codes, e.g. SSL, so people can build it without depending on any package.

Just FYI, I routinely make static-ish builds.  My mining distro is based on Debian, but the bitcoind binary on it is build on an ancient slackware box with wildly different libraries.  Fudging the makefile for a static build gives me a binary that will run just about anywhere.

On the original topic, rather than a fork, why not build options?  This would reduce the maintenance delta to a hopefully manageable level.  It is even something that could be done incrementally.
510  Bitcoin / Development & Technical Discussion / Re: the bs "Satoshi:0.8.99" on: October 28, 2013, 07:05:25 PM
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.

We should have fixed the time nonsense in bitcoin long ago.

Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock.  If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately.  If I don't have a good NTP lock and I connect to a node which does, that node should kick me.

I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago.

Emphasis on if

Unfortunately we can't just ship bitcoind out of the box with NTP support, because then whatever NTP servers we use - even if we use a whole bunch - suddenly become a central point of control of the whole Bitcoin network. This is made even worse by how NTP isn't authenticated.

Maybe we could get away with abusing https and timestamping servers based on the logic they won't want to be proven to be lying, especially the latter, but ultimately we really just want users to set their damn clocks right.

It's ugly and there's no good solution to the problem unfortunately. Satoshi should have picked something more like a six or twelve hour window, rather than two, but widening that window now is a hard-fork even to SPV clients.

Why would we need to include NTP?  Is there some OS out there with network support that can run a bitcoin node, but not NTP?

No one should be doing serious work on the internet without a solid clock, and money is about as serious as serious gets.

After a while, this really degenerates into the SSL debate.  SSL sucks.  Why does everyone use it?  Because everything else is worse.  NTP sucks.  Why does everyone use it?  Because everything else (including bitcoind's crappy pseudo-NTP) is worse.

We were smart enough to avoid creating our own PKI in favor of the existing system that is good enough.  Why aren't we smart enough to avoid creating our own clock synchronization system?

P.S.  pool.ntp.org.  The Air Force could probably mess with it if they were willing to crash some planes, but I doubt that anyone else could do much damage.  I know we have some timekeeping enthusiasts around.  Is the NTP pool more vulnerable than I'm aware of?

Edit 2013-10-28 19:32: removed an extra "a"
511  Economy / Speculation / Re: The Imputation Problem on: October 28, 2013, 06:51:59 PM
Imputed data isn't.  Ditto for interpolated.

If your model involves anything resembling regression, cleaning the data in any way will cause your model to vastly overestimate the certainty and accuracy of the output.

This kind of thing is a pain to model.  The spreads between the exchanges distort the price signal that you are looking for, but not totally.

You could use (sign,magnitude) of changes instead of absolute values, which will remove the pure-arbitrage signal from the price signal, but that distorts the price signal.  (sign,log(magnitude)) might help a bit, but that's hard to say too.

Or, you can ignore the arbitrage signal, and just mash the prices together as they really are.  But that will result in a price that is constantly too high by a factor related to the difficulty of moving stuff around.

You are going to hate this, but the most valid way to go is to model each exchange and the relationships between them.  You'll have to give up on the notion of "the bitcoin price" and instead work with "the bitcoin price at locations X,Y and Z".

Oh, and I forgot that the arbitrage issues are not linear.  Your model is going to get screwed every time the real world factors that cause the spreads change.
512  Bitcoin / Development & Technical Discussion / Re: Suggestion: change the encoding for compressed private keys on: October 28, 2013, 05:59:05 PM
The ambiguity of the hex forms is one of the reasons for the encoded forms.  Hex is not suitable for interchange, only for internal temporary use.

Avoid ambiguity internal to your program by attaching metadata.
513  Bitcoin / Development & Technical Discussion / Re: the bs "Satoshi:0.8.99" on: October 28, 2013, 05:53:11 PM
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.

We should have fixed the time nonsense in bitcoin long ago.

Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock.  If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately.  If I don't have a good NTP lock and I connect to a node which does, that node should kick me.

I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago.
514  Bitcoin / Development & Technical Discussion / Re: How to verify the ownership of Bitcoins? on: October 28, 2013, 05:30:37 PM
Most of the people have their Bitcoins in wallets spread across multiple addresses, right? How would a single tx be sufficient to verify the ownership? This wouldn't work for paper wallets either, right?

I guess this problem applies to verifying by signing as well. Also, I'm not sure how well signing is supported by hosted wallets and how well Bitcoin users know this feature. But signing would work for paper wallets, correct?

Signing doesn't cost anything other than time to do it. So just have them sign a message with multiple addresses.

You can sign as long as you have access to the private key. In the case of a paper wallet you will need to load it into a client and then sign using that. In the case of hosted wallets it depends on whether they give you access to the private key or not. blockchain.info does let you sign messages. Exchange wallets don't.

I take a very slight exception to this.  Signing a message, which is all that a transaction is, has a cost.  One, it requires you to publish your public key, and two it requires you to publish a signature.  Publishing your pubkey is a huge hit to the security of the key, as it entirely strips one layer of our elaborate defensive structure (the hash) from that key.  Once the pubkey is widely known, the incremental cost of publishing another signature is slight, but not zero.

These are very tiny, but real, costs to the security of that key.  We believe that our system is secure against key-reuse, but history teaches us that multiply used keys are the first to fall when a system starts to show weaknesses.  The problem is even worse with low quality keys, which I consider all so-called brain wallets to be, and those are the very ones that people are most likely to use to store their largest stashes, and the ones they'll most likely be tempted into weakening in this way.*

A user should not publish their public key until they are ready to stop using it.  Signing a message to prove that you control the key that controls some coins is not the final use of that key and should not be encouraged.

The safe way to prove ownership of a key is to transfer it all funds available to that key to a new key/address with an unpublished pubkey.  This is how gox proved the safety of their stash a while back, and this is how the FBI proved confiscation of DPR's wallet.

* I see proof of address systems mainly used as e-peen comparison tools.  Perhaps I've overlooked some serious usage?
515  Bitcoin / Development & Technical Discussion / Re: Exchanging pubkeys for multisig on: October 28, 2013, 04:04:40 PM
To create a P2SH multisig address, some entity in the process must be in possession of all pubkeys.  Pubkeys are generally considered safe to share, publish, etc.  That's why they are called public keys.

WIF works perfectly well for keys used in multisig.  You can import all of the keys into the client if you want, or you can specify them in the RPC signrawtransaction call, and whatever infrastructure you create to support your system had better be able to read them too.

When redeeming, signatures are also safe to ship around.  Signatures are big, coding them in base58 makes them bigger.  No one is going to be processing them by hand.  Signature problems will just show up as an invalid signature, and they can find the problem and try again.  It isn't like a key or an address where an error can drop coins into a black hole.

Look at BIP 10.  It is about shipping signatures around for multi-party transactions, but it looks like it would work perfectly well for P2SH multisig too.
516  Bitcoin / Armory / Re: Armory - Discussion Thread on: October 28, 2013, 01:19:37 AM
The real issue being brought up by kjj is simply that you may not be getting full entropy out of the rolling if there's any subjectivity involved.  However, even if you aren't rolling dice properly, you are still getting entropy, just not full entropy.  Consider that you roll a die 32 times, and you don't properly re-roll it and you get the exact same number as the last roll half the tie.  Well, then you got 16 dice-rolls-worth of entropy instead of 32.  Not ideal, but you're still producing nice analog entropy -- just not as much as you thought.

How much less than full entropy is "good enough"?

If used properly, even a shitty key can be good enough, just as long as it isn't too shitty.

But, key abuse is rampant in bitcoin.  You also can't constrain the future use of the key when you make it.  Since you can't be sure that you won't, some day in the far future, abuse your key, you should endeavor to make your keys as securely as possible.

The only advice I'm ever willing to give people is to pack as much entropy into their keys as they possibly can.  If they want to cut corners, that's on them.

The modulus trick is great.  I don't know how I missed it in my travels through the FIPS manuals.  It seems like a very effective way to blend extra entropy throughout the entire key.  I'm going to steal it for my offline paper wallet generator.  Since I haven't yet made a geiger tube collector, I'm always skeptical of my entropy sources.
517  Bitcoin / Armory / Re: Armory - Discussion Thread on: October 26, 2013, 03:27:28 PM
That makes me wonder, isn't it "easier" to just toss a coin 256 times? Sure, you may get bored in the process Smiley but you get rid of all those considerations about 6s vs 9s, or which face is up. Or use 4 coins of different value and read them always in the same order, for a total of 256/4 tosses.

There are fewer places to screw up, but still not none.  Again, use a cup, try tossing it the same way each time, don't look at the coin before/during tossing, use a flat tray with a marked border, write down exactly what comes up even if you don't think it looks "random enough", etc.
518  Bitcoin / Armory / Re: Armory - Discussion Thread on: October 26, 2013, 01:28:33 PM
Can I ask why you want to use dice as a source of entropy?

It's easy and nothing should be able to go wrong. I mean a lot can go wrong while setting up some sort of space noise receiver.

Uh, actually it is surprisingly easy to fuck up dice rolling for entropy.  Any attempt to extract entropy from gross physical processes that requires human work is prone to failure.  Just ask everyone that tried it during World War II.

Ideally, you should build a machine that shakes the dice in a cup and tips the cup into a flat, level tray.  At the very least, use a cup, try to tip the cup the same way each time, and for the love of god, don't look in the cup while shaking or tossing.  The tray should have a line painted in it about 1.5 die radiuses away from the wall and you should ignore any rolls where any of the dice touch or cross that line.  Also reject any rolls where the dice are touching.  Since dice touching can be somewhat subjective, it is also a good idea to reject any rolls where the dice end up within some objective threshold of each other, 1.5 radiuses perhaps.  Build a gauge block of the appropriate width and taller than the dice and try to slip it between the dice if they are even remotely close.*

Next, all of your dice need to be different and distinct colors, and all faces must be instantly distinguishable (that means you need dots or lines on both 6 and 9, not just one).  You must always assemble the rolls into your number in the same way.  Print a data collection sheet with boxes, and color code the boxes to match the dice so that you don't mess up the ordering.**

And finally, never, ever, ever reject throws for subjective reasons.  You must be extremely vigilant about this.  Your natural tendency will be to reject throws that don't look random enough, or just don't look right in some obscure way.  You must fight these thoughts and write down the data collected, exactly as it comes up, regardless of your personal feelings.

You'll note that most of my advice is in the area of removing your own judgement from the system.  Your brain is a shitty discriminator of entropy, and if you let it interfere with the process, you will get shitty entropy out.  During World War II (and the cold war, for that matter), office staff on all sides of the war were trained to generate encryption codes and pads by using physical systems like dice.  They usually failed (and their codes were cracked, and people died) because they would have unhelpful thoughts like "that's too many 7s to be really random.  I'm going to change a few".  And that was generally after being trained specifically not to do that, and that lives depended on the quality of their work.  Odds are very good that you will do at least as poorly as they did.

* The common theme here is to reject any rolls where the dice might be leaning on the wall or on other dice, which is to say when they might not be completely flat, which is to say when human judgment might possibly come into deciding which face is up.  Setting the margin wide and using objective measures reduces the temptation to occasionally fudge things.

** Again, remove human judgment.  If the die only has 6 or 9 marked, you will occasionally write the wrong number down.  If you don't have a defined order, you will write them down in the order that "looks" most random to you.
519  Bitcoin / Development & Technical Discussion / Re: Invoices/Payments/Receipts proposal discussion on: October 26, 2013, 03:59:23 AM
Lets back up now, this why we have SSL, we can kinda prove that the page we had with the address came from the valid source we want to pay.

No you can't.  The authentication in SSL is ephemeral.  At no point do you ever possess a document signed by their key.
520  Bitcoin / Development & Technical Discussion / Re: Invoices/Payments/Receipts proposal discussion on: October 25, 2013, 08:09:48 PM
And so the message must be sent to the user, unhashed but encrypted in an SSL session, between the merchant and the user. Otherwise the process described above couldn't work. Ok.

No, it doesn't need to be encrypted.  Encryption protects the privacy of the message.  If the parties wish to keep the communication private, it should be encrypted, but encryption isn't necessary for authentication, which is what DSA does.

Because any change to the message will invalidate the signature, the message has become tamper-proof.  You simply reject any messages that don't have a valid signature, so any messages that aren't rejected are known to have come from the signing key without changes.

Or in the case of someone who illegitimately obtains the private key and certificate of the merchant, someone you possibly or definitely cannot sue (successfully, anyway). I see though how this means zero direct communication with the CA for the user.... even the list of valid (and revoked) certificates must get updated with browser and/or OS updates, and so again, not directly from the CA.

That will generally leave a trail.

Also, we have CRLs and OCSP to help us keep track of which certificates are no longer valid, despite having a trusted signature.  CRL is a batched process that involves just downloading the current list from time to time (this is technically communication with the CA, but not of the sort that gets anyone riled up).  OCSP requires communication with the CA, but this can be done by the server instead of the client (stapled OCSP), and at no time involves sending message details to anyone (the protocol allows enough data to identify the certificate, only).

It's certainly the case that the 1-1 SSL connection where the unhashed Payment Details are sent to the user is a weak link. It would be interesting to know what can be done to mitigate the risk of this part of the scheme being eavesdropped on. Certainly the purpose is to prevent the information being changed by a MITM, but I understand it's still possible to read this information despite the SSL encryption. Or is this also wrong? The technology press has reported otherwise, but it would be nice to hear a different take on what the risks of this are.

Well, SSL certainly has weaknesses, but in general, SSL really does allow secure (private) communication.  But it turns out that PKI is really, really hard.  Corporate proxies can use wildcard certificates (signed by actual CAs in some cases) to actively MITM all SSL connections passing through.  Governments can do the same thing, and some have speculated that they might use (or have used) their power to, ahem, request that CAs sign bogus certs that look perfectly correct.  If you run into a situation like that, or if you are merely careless and fail to notice that you've been hijacked by a null-suffix certificate, you can end up having a totally secure communication with an attacker instead of whoever you thought you were talking to.

This comes up a lot in debates about how browsers should handle self signed certificates.  How does a user know that a certificate that has been presented is the right one unless a CA has signed it?  Unless the fingerprint has been sent out of band, and then actually checked, they have no way to know.  See here.
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ... 195 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!