Pages:
Author

Topic: re-use of addresses - page 2. (Read 5530 times)

legendary
Activity: 3472
Merit: 4801
May 07, 2014, 02:31:15 PM
#90
I still don't get how a dozen people sending to a single address of mine is protecting their privacy better than if I provide one address per transaction.
Well, suppose you are collecting donations from co-workers for your boss's birthday present. If you give them all the same address, you see the incoming transactions and the total balance, but you won't know who paid what, so they have some anonymity. If you give a different address to each co-worker, and remember who got which address, then you can tie the amount of each donation to the person who sent it. Then you can inform your boss about who didn't pay for her present. Clearly, your co-workers' anonymity has been compromised in a way that affects (some of) them adversely.

By providing a single address, everyone can see the average amount donated per person, and know how many people didn't donate.  Using additional information, it might become possible to make educated guesses about who gave how much.  Now, not only you and the boss, but EVERYONE has information about the donations.

Better would be to print out enough donation addresses so there is one for each employee.  Then cut up the paper so that there is only one address per piece.  Turn then face down so nobody knows what address anybody else gets, and let everyone choose randomly.

Now nobody other than the recipient knows exactly how much each person donated.

Of course, privacy comes at a cost of security.  It is now possible for the person making the collection to lie about the amount that they received, skimming a bit off for themselves.  The group can decide if they want the list of donation addresses to be public or not.

sr. member
Activity: 365
Merit: 251
May 07, 2014, 02:20:25 PM
#89
I still don't get how a dozen people sending to a single address of mine is protecting their privacy better than if I provide one address per transaction.
Well, suppose you are collecting donations from co-workers for your boss's birthday present. If you give them all the same address, you see the incoming transactions and the total balance, but you won't know who paid what, so they have some anonymity. If you give a different address to each co-worker, and remember who got which address, then you can tie the amount of each donation to the person who sent it. Then you can inform your boss about who didn't pay for her present. Clearly, your co-workers' anonymity has been compromised in a way that affects (some of) them adversely.

The above makes sense to me, but I can't relate it to Peter Dushenski's article, so he may have been saying something different. Quite a lot of that article makes no sense to me.

Quote
And I'm more interested in MY privacy than theirs, anyway.
That's your choice. In the above scenario, their loss of privacy is to your benefit. If you were running something like Wikileaks, you might get more donations if you did respect your benefactor's privacy.

Quote
If they want privacy, that's their job to mix or obfuscate -- not mine.
There's not a lot they can do in the above scenario.
legendary
Activity: 1162
Merit: 1007
May 07, 2014, 01:22:40 PM
#88
Peter,

Which language?  It is in the bitcoin-core (QT) sourecode.  Probably in the bitcoin libs for just about any language now.  In general the concept is called "ECDSA Public Key Recovery".  A very cool property of ECC that doesn't existing in all public key cryptography.  In Bitcoin it is only used in message (not transaction) signing.

Thanks DeathAndTaxes.  I was interested in only the math itself and just needed the key words "ECDSA Public Key Recovery" to find it.  For interested readers, the algorithm is on page 47 of this PDF: "Given an ECDSA signature (r, s) and EC domain parameters, it is generally possible to determine the public key Q, at least to within a small number of choices."

Very cool indeed.  Perhaps Satoshi didn't know this was possible, or perhaps he was worried about the possibility of more than one choice for Q given the signature (r, s) and the additional logic needed to deal with it.  


EDIT: I see Gavin supported Satoshi's decision to include the public key: https://bitcointalksearch.org/topic/m.94290
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 07, 2014, 12:59:11 PM
#87
Peter,

Which language?  It is in the bitcoin-core (QT) sourecode.  Probably in the bitcoin libs for just about any language now.  In general the concept is called "ECDSA Public Key Recovery".  A very cool property of ECC that doesn't existing in all public key cryptography.  In Bitcoin it is only used in message (not transaction) signing.

Here is the standard.  Key Recovery starts on page 47.

http://www.secg.org/download/aid-780/sec1-v2.pdf

There is one thing i am unsure about.  The PubKey (in the absence of additional information) has to be found by trial and error (generate possible PubKey from sign, verify sig w/ possible key.  if valid then you have found key, if not try next possible key, if no possible key validates sig then sig is invalid). 

When locating the proper key one iterates from i=0 to i=h (domain parameter).  For secp256k1 h = 1 so the only possible i values should be 0 or 1.  Most code I have seen iterates from 0 to 3 I wonder if that is just an oversight.  If I am right then there will never be a recovery using an i of 2 or 3.

For Bitcoin messages the i value is encoded in the message header so only one recovery and verification needs to be done.  It is encoded as a byte as follows.
0x1B = Uncompressed PubKey, First Even Key (i = 0)
0x1C = Uncompressed PubKey, First Odd Key (i = 1)
0x1D = Uncompressed PubKey, Second Even Key (i = 2)  <- impossible for secp256k1?
0x1E = Uncompressed PubKey, Second Odd Key (i = 3) <- impossible for secp256k1?
0x1F = Compressed PubKey, First Even Key (i = 0)
0x20 = Compressed PubKey, First Odd Key (i = 1)
0x21 = Compressed PubKey, Second Even Key (i = 2) <- impossible for secp256k1?
0x22 = Compressed PubKey, Second Odd Key (i = 3) <- impossible for secp256k1?






legendary
Activity: 1162
Merit: 1007
May 07, 2014, 10:50:23 AM
#86
you must also tell them your public key Q in addition to r and s (and they must know the message, m, that you signed).

Everyone already knows G because it's a property of the secp256k1 curve.  The act of signing and broadcasting a transaction makes your public key Q known because you need to provide this in order for the network to verify your signature.

Actually, the Bitcoin protocol requires you to supply your public key Q, because that's the way Satoshi wrote the program. We all now have to live with it.

If Satoshi hadn't written it that way, it wouldn't be necessary to supply your public key Q to verify the signature.  Given the signature and the message, it's possible to compute the public key. Then by hashing that computed public key, it is possible to verify that the computed public key matches the bitcoin address from the output being spent.

Thanks Danny, your comment has me quite interested.  The algorithm I coded in Mathematica (for learning purposes) to verify ECDSA is the one from the Wikipedia article here.  This algorithm assumes knowledge of the public key Q (in addition to the signature pair {r, s}) in Step 6:

6.  Calculate the curve point {x, y} = u1 x G + u2 x Q

In fact, the first thing the wiki says about ECDSA verification is "for Bob to authenticate Alice's signature, he must have a copy of her public-key curve point Q."

Can you point me to an algorithm that uses only the signature pair {r, s} and the message, m, to calculate Q?  I can see that if you could calculate Q from {r, s} and m, that you could then hash Q to a bitcoin address and verify this way.  That would have been pretty slick  Smiley
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
May 07, 2014, 10:04:55 AM
#85


I still don't get how a dozen people sending to a single address of mine is protecting their privacy better than if I provide one address per transaction.  

It's not, IMO.

If a large number of people are all sending to a single address, that address
becomes conspicuous.  So you are losing a layer of obfuscation there.
In other words, if you were looking at someone's wallet or transactions,
you would more easily be able to spot a well known address, as
well as determine what that address is for.
full member
Activity: 177
Merit: 101
May 07, 2014, 09:51:19 AM
#84
But this view is not universal, apparently:

Quote
Reusing addresses is therefore the preferred method of maintaining the privacy of your sources.
- http://bitcoinpete.com/2014/05/05/on-reusing-bitcoin-addresses

I still don't get how a dozen people sending to a single address of mine is protecting their privacy better than if I provide one address per transaction.  And I'm more interested in MY privacy than theirs, anyway.  If they want privacy, that's their job to mix or obfuscate -- not mine.


That's quite simple. Creating a very secure paper wallet requires some efforts. Dealing with multiple paper wallets requires even more efforts. When you deal with multiple paper wallets there is always a risk that you loose a paper wallet and that means that a single paper wallet might be more safe than many wallets.
legendary
Activity: 2506
Merit: 1010
May 07, 2014, 08:22:59 AM
#83
But this view is not universal, apparently:

Quote
Reusing addresses is therefore the preferred method of maintaining the privacy of your sources.
- http://bitcoinpete.com/2014/05/05/on-reusing-bitcoin-addresses

I still don't get how a dozen people sending to a single address of mine is protecting their privacy better than if I provide one address per transaction.  And I'm more interested in MY privacy than theirs, anyway.  If they want privacy, that's their job to mix or obfuscate -- not mine.

And then further that post reads ...

Quote
And perhaps the ultimate best practise tip, a heuristic for the intelligent use of Bitcoin:

Take whatever the Core Devs say and do the exact opposite.

I don't even.
legendary
Activity: 3472
Merit: 4801
May 07, 2014, 06:41:55 AM
#82
you must also tell them your public key Q in addition to r and s (and they must know the message, m, that you signed).

Everyone already knows G because it's a property of the secp256k1 curve.  The act of signing and broadcasting a transaction makes your public key Q known because you need to provide this in order for the network to verify your signature.

Actually, the Bitcoin protocol requires you to supply your public key Q, because that's the way Satoshi wrote the program. We all now have to live with it.

If Satoshi hadn't written it that way, it wouldn't be necessary to supply your public key Q to verify the signature.  Given the signature and the message, it's possible to compute the public key. Then by hashing that computed public key, it is possible to verify that the computed public key matches the bitcoin address from the output being spent.
legendary
Activity: 1008
Merit: 1000
May 06, 2014, 01:10:49 PM
#81

A bitcoin private key, d is (almost) any 256-bit integer (78 digit number).  To find the associated public key, Q, you need to multiply your private key by a special "number" G called the elliptic curve base point:

     Q = d x G

If you know d (private key) and G, it is fairly straight forward to calculate Q (public key).  Now, if G and Q were normal numbers, we could re-arrange this equation to solve for the private key by division:

     d = Q / G

But G and Q are not normal numbers; they are actually the {x, y} coordinates of points on a special type of curve called an elliptic curve.  Points on elliptic curves can be multiplied by normal numbers (like a private key), but it turns out that it is extremely difficult to "divide" two points on an elliptic curve to get a normal number (to solve for the private key, d).  I use quotes around "divide" because we actually call this problem the "elliptic curve discrete logarithm problem" (ECDLP) and not the division problem.

Now the reason the security is 128 bits when the private key is 256 bits is because you don't need to brute force every possible key.  You just need to find the value of d that when multiplied by G gives you Q.  There is a bit of a pattern that you can exploit, so to speak.  The fastest known algorithms that allow one to solve the ECDLP (baby-step giant-step, Pollard's rho, etc.), need O(√n) steps.  Since n = 2^256, √2^256 = 2^128.  So using the most efficient algorithm to solve for d if Q and G are known, it should "only" take around 2^128 steps, as opposed to the 2^256 steps it would take to try every possible key by brute force.

http://en.wikipedia.org/wiki/Elliptic_curve_cryptography#Key_sizes

Isn't hash function SHA-256 plugged in there somewhere?  where does that fit into this?  And even if you knew "G", wouldn't you still have the hash to contend with?  

In the post you quoted, I was trying to explain elliptic curve multiplication and the discrete logarithm problem in a very simple way.  Elliptic curve multiplication is an example of a trapdoor function that is easy to compute in one direction (multiplying the private key (integer) by the elliptic curve base point to get the public key) but infeasible to compute in reverse (finding the private key given the public key and base point).  

When you produce an ECDSA signature for a bitcoin transaction, you sign a 256-bit hash, e, of the message (transaction), m, and get a pair of numbers {r, s}.  But in order for anyone to verify that the signature is correct, you must also tell them your public key Q in addition to r and s (and they must know the message, m, that you signed).

Everyone already knows G because it's a property of the secp256k1 curve.  The act of signing and broadcasting a transaction makes your public key Q known because you need to provide this in order for the network to verify your signature.  Someone could "steal" your funds remaining in the associated bitcoin address if they can solve the problem:

        Q = d x G

for an unknown d.  But like I explained earlier, it is not presently feasible to find d as the fastest known algorithm still takes 2^128 steps.  If the public key is not known, on the other hand, then someone could "steal" your funds if they try on average 2^160 random 256-bit integers until they find a ripeMD160 collision with your bitcoin address.   I say "steal" because 2^128 and 2^160 are really really big numbers and it's not actually feasible to perform a computation with such a huge number of steps.  


I've seen you express interest in elliptic curves in a few threads now.  How I learned about them was reading the wikipedia articles (many, many times), reviewing the comments by DeathAndTaxes, DannyHamilton, GMaxwell and a few others regarding these curves.  But what really made it sink in for me was writing code from scratch to sign and verify ECDSA.  I did this in Mathematica so that I didn't have to worry about integer size or modulus operations.  After I did this, l had new respect for the weird properties of elliptic curves and prime numbers too--it's really interesting stuff.  







Hah, you too! I have nothing to contribute other than to say that I also wrote my own ECDSA program in Mathematica. Doing this also gave me respect for the serious speed efficiencies that "real" implementations must incorporate (I was using a prime field of only 67 elements).
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
May 06, 2014, 12:46:51 PM
#80
Flawed wallet means PRNG weakness and most of today's wallets depend on OS for that. MS PRNG is weak as we already know (http://en.wikipedia.org/wiki/Random_number_generator_attack#Windows_implementation). So u can safely assume most of today's wallet are actually weak because the source is NOT so Random.

Well there are currently no known issues with the PRNG in Windows Vista or later.   That isn't to say there aren't any flaws but I am not aware of any and the cited link references a flaw which only existed in Windows XP and prior.  Even on Windows XP the flaw was patched (assuming users installed security updates).  The PRNG is closed source and that may hide vulnerabilities, bugs, or backdoors but we can't assume most keys are weak.  Even the flaw found in the XP era PRNG requires the attacker to have access to the machine to exploit it.



Are you sure about the bold part ? Any idea how MS used to derive the random number ? I mean how it is machine dependent ?


Referring to the flaw in XP, if you follow the Wikipedia article to the reference to the original paper about this windows RNG, and read it carefully, you will see the weakness lies in being able to predict what random numbers will come next but only if you know the current state of the machine.  And there is no way to know that unless you have access to the machine.

The machine uses entropy from mouse movements, CPU temperature, etc...so this provides more randomness and makes it machine dependent.  The exact temperaturs, mouse movements, etc...all create entropy and a unique state for the machine, and there are too many variables to know what state the machine is in, and even if you had access to it, it wouldn't be trivial.
legendary
Activity: 2394
Merit: 1216
The revolution will be digital
May 06, 2014, 12:29:15 PM
#79
Flawed wallet means PRNG weakness and most of today's wallets depend on OS for that. MS PRNG is weak as we already know (http://en.wikipedia.org/wiki/Random_number_generator_attack#Windows_implementation). So u can safely assume most of today's wallet are actually weak because the source is NOT so Random.

Well there are currently no known issues with the PRNG in Windows Vista or later.   That isn't to say there aren't any flaws but I am not aware of any and the cited link references a flaw which only existed in Windows XP and prior.  Even on Windows XP the flaw was patched (assuming users installed security updates).  The PRNG is closed source and that may hide vulnerabilities, bugs, or backdoors but we can't assume most keys are weak.  Even the flaw found in the XP era PRNG requires the attacker to have access to the machine to exploit it.



Are you sure about the bold part ? Any idea how MS used to derive the random number ? I mean how it is machine dependent ?
legendary
Activity: 1162
Merit: 1007
May 06, 2014, 11:57:31 AM
#78

A bitcoin private key, d is (almost) any 256-bit integer (78 digit number).  To find the associated public key, Q, you need to multiply your private key by a special "number" G called the elliptic curve base point:

     Q = d x G

If you know d (private key) and G, it is fairly straight forward to calculate Q (public key).  Now, if G and Q were normal numbers, we could re-arrange this equation to solve for the private key by division:

     d = Q / G

But G and Q are not normal numbers; they are actually the {x, y} coordinates of points on a special type of curve called an elliptic curve.  Points on elliptic curves can be multiplied by normal numbers (like a private key), but it turns out that it is extremely difficult to "divide" two points on an elliptic curve to get a normal number (to solve for the private key, d).  I use quotes around "divide" because we actually call this problem the "elliptic curve discrete logarithm problem" (ECDLP) and not the division problem.

Now the reason the security is 128 bits when the private key is 256 bits is because you don't need to brute force every possible key.  You just need to find the value of d that when multiplied by G gives you Q.  There is a bit of a pattern that you can exploit, so to speak.  The fastest known algorithms that allow one to solve the ECDLP (baby-step giant-step, Pollard's rho, etc.), need O(√n) steps.  Since n = 2^256, √2^256 = 2^128.  So using the most efficient algorithm to solve for d if Q and G are known, it should "only" take around 2^128 steps, as opposed to the 2^256 steps it would take to try every possible key by brute force.

http://en.wikipedia.org/wiki/Elliptic_curve_cryptography#Key_sizes

Isn't hash function SHA-256 plugged in there somewhere?  where does that fit into this?  And even if you knew "G", wouldn't you still have the hash to contend with?  

In the post you quoted, I was trying to explain elliptic curve multiplication and the discrete logarithm problem in a very simple way.  Elliptic curve multiplication is an example of a trapdoor function that is easy to compute in one direction (multiplying the private key (integer) by the elliptic curve base point to get the public key) but infeasible to compute in reverse (finding the private key given the public key and base point).  

When you produce an ECDSA signature for a bitcoin transaction, you sign a 256-bit hash, e, of the message (transaction), m, and get a pair of numbers {r, s}.  But in order for anyone to verify that the signature is correct, you must also tell them your public key Q in addition to r and s (and they must know the message, m, that you signed).

Everyone already knows G because it's a property of the secp256k1 curve.  The act of signing and broadcasting a transaction makes your public key Q known because you need to provide this in order for the network to verify your signature.  Someone could "steal" your funds remaining in the associated bitcoin address if they can solve the problem:

        Q = d x G

for an unknown d.  But like I explained earlier, it is not presently feasible to find d as the fastest known algorithm still takes 2^128 steps.  If the public key is not known, on the other hand, then someone could "steal" your funds if they try on average 2^160 random 256-bit integers until they find a ripeMD160 collision with your bitcoin address.   I say "steal" because 2^128 and 2^160 are really really big numbers and it's not actually feasible to perform a computation with such a huge number of steps.  


I've seen you express interest in elliptic curves in a few threads now.  How I learned about them was reading the wikipedia articles (many, many times), reviewing the comments by DeathAndTaxes, DannyHamilton, GMaxwell and a few others regarding these curves.  But what really made it sink in for me was writing code from scratch to sign and verify ECDSA.  I did this in Mathematica so that I didn't have to worry about integer size or modulus operations.  After I did this, l had new respect for the weird properties of elliptic curves and prime numbers too--it's really interesting stuff.  





legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
May 06, 2014, 06:35:49 AM
#77
ok, so I understand that you shouldn't re-use an address
because then people will see the public key rather than
the hex-encoded hash, and it weakens the security
from 160 bit to 128 bit...

But, can you receive multiple transactions at the same
address (as long as you dont send) with no security
compromise?
Private key is 256 bit. Public key is 256 bit too. Hash of public key is 160 bit. How revealing of public key (256 bit) reduce strength to 128 bit? It's reduced to 256 bit ECDSA. I fail to see the 128 bit strength :-)

The bit strength of a key refers to the equivalent strength of a symmetric key of that length.  The key strength is only equal to the length of the key for uncompromised symmetric ciphers (and usually hashing algorithms).  For public key cryptography, the bit strength will always be less than the key size.  For ECDSA it is 1/2 the key length.  For 256 bit ECDSA keys used in Bitcoin that means 128 bit security.  I don't know why Satoshi chose a 160 bit PubKeyHash as a 128 bit one would be sufficient and would result in shorter addresses.

As a side note sometimes people ask why ECC, why not RSA? To achieve 128 bit security using RSA would require a 3,072 bit public key and that would mean very large transactions.
Can you give any links what proves the point please? I can understand that hashing to 160 bit means that there are many ECDSA 256bits what corresponds to an address, but saying that real security of ECDSA is 340282366920938463463374607431768211456 times lower than it's key size sounds... strange.

A bitcoin private key, d is (almost) any 256-bit integer (78 digit number).  To find the associated public key, Q, you need to multiply your private key by a special "number" G called the elliptic curve base point:

     Q = d x G

If you know d (private key) and G, it is fairly straight forward to calculate Q (public key).  Now, if G and Q were normal numbers, we could re-arrange this equation to solve for the private key by division:

     d = Q / G

But G and Q are not normal numbers; they are actually the {x, y} coordinates of points on a special type of curve called an elliptic curve.  Points on elliptic curves can be multiplied by normal numbers (like a private key), but it turns out that it is extremely difficult to "divide" two points on an elliptic curve to get a normal number (to solve for the private key, d).  I use quotes around "divide" because we actually call this problem the "elliptic curve discrete logarithm problem" (ECDLP) and not the division problem.

Now the reason the security is 128 bits when the private key is 256 bits is because you don't need to brute force every possible key.  You just need to find the value of d that when multiplied by G gives you Q.  There is a bit of a pattern that you can exploit, so to speak.  The fastest known algorithms that allow one to solve the ECDLP (baby-step giant-step, Pollard's rho, etc.), need O(√n) steps.  Since n = 2^256, √2^256 = 2^128.  So using the most efficient algorithm to solve for d if Q and G are known, it should "only" take around 2^128 steps, as opposed to the 2^256 steps it would take to try every possible key by brute force.

http://en.wikipedia.org/wiki/Elliptic_curve_cryptography#Key_sizes
http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

Isn't hash function SHA-256 plugged in there somewhere?  where does that fit into this?  And even if you knew "G", wouldn't you still have the hash to contend with? 
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 06, 2014, 03:51:07 AM
#76
Flawed wallet means PRNG weakness and most of today's wallets depend on OS for that. MS PRNG is weak as we already know (http://en.wikipedia.org/wiki/Random_number_generator_attack#Windows_implementation). So u can safely assume most of today's wallet are actually weak because the source is NOT so Random.

Well there are currently no known issues with the PRNG in Windows Vista or later.   That isn't to say there aren't any flaws but I am not aware of any and the cited link references a flaw which only existed in Windows XP and prior.  Even on Windows XP that specific flaw was patched many years ago (assuming users installed security updates).  The Windows PRNG is closed source and that may hide vulnerabilities, bugs, or backdoors but we can't assume most keys are weak.  Even the flaw found in the XP era PRNG requires the attacker to have access to the machine to exploit it.

member
Activity: 63
Merit: 10
May 06, 2014, 03:00:17 AM
#75
Really do not want to use the latest 0.9.1 version,
so while I still insist on 0.8.6 before I had to upgrade
legendary
Activity: 2394
Merit: 1216
The revolution will be digital
May 06, 2014, 02:58:48 AM
#74
I can see the long tech discussions in the whole thread where the outcome is Dont use an address twice. Now just think how bad impact it will have on an average person in terms of use. It is like asking him to create a new email ID for every mail communication. I wonder, if an wallet can solve this problem ? Like the person will only provide a certain unique identity for send/receive and rest will be managed internally that he does not need to bother. Please note, the average Joe is more bothered about ease of use rather than security. And if the security is breached, he'll be the first to yell at us saying Bitcoin protocol is broken and we are all scammer.

Please think about it...

I don't think you read that carefully.

the outcome was:  don't use an address twice but if you do, it probably won't matter as long as its not a flawed wallet.  That being said, many wallets do automatically give you new addresses.

Flawed wallet means PRNG weakness and most of today's wallets depend on OS for that. MS PRNG is weak as we already know (http://en.wikipedia.org/wiki/Random_number_generator_attack#Windows_implementation). So u can safely assume most of today's wallet are actually weak because the source is NOT so Random.
legendary
Activity: 896
Merit: 1000
May 06, 2014, 12:14:11 AM
#73
Well, I got a address which private key have been exposed,so this address is can't be
used anymore
But,never mind,the amount of address is unlimited. so we are not necessary to worry about the old address.
full member
Activity: 177
Merit: 101
May 05, 2014, 11:29:49 PM
#72
Thanks everyone! Seems ESCDA is much less secure than I thought but even with all the weaknesses and moore law we are good to reuse addresses for at least 100 years :-)
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 05, 2014, 11:22:16 PM
#71
Quote
Thanks, that's very interesting!

Do you know most "promising" attack on the ECDSA? (I'll try to google it for now by myself ;-) but maybe you know something interesting about)

I don't know of any promising attacks on ECDSA.  In case you mean what reduces the security of a 256 bit ECDSA key to only 128 bit we need to first look at what makes it have any security to begin with. ECC (the underlying cryptography for ECDSA) is based on an assumption that solving the discrete logarithm problem is infeasible.  That is to say that for a large set (like 2^256) the fastest possible solutions require too many steps on average to make any attack effective.   

The most naive attack would be to attempt all possible private keys until you find one which produces the public key you are looking for.  For symmetric algorithms (like AES) this is the only possible solution which is why we measure security relative to symmetric algorithms.   If this naive solution was the only possible solution the security would be 256 bits.   However there are "better" (but not good enough) solutions for this problem.  The fastest of which require O (sqrt{n}) steps where n is the number of elements.  So 2^256 elements means a solution will on average require 2^128 operations which is equal to the number of operations requires to brute force a public key so we say it has 128 bit security. 

However that 128 bit security is based on currently known solutions.  There may be more efficient algorithms that haven't been discovered yet, and in the future someone will develop one which solves the discrete logarithm problems in less than O(sqrt{n}) steps.  If that happens the security of ECC will be reduced to the complexity of the new algorithm as an attacker would use the best tool available.   It is hard to predict if or when this will happen so it remains a potential uncertainty.   Larger key sizes give a higher confidence.  If for example a new algorithm reduced the security to 100 bit we may want to start migrating to a new solution but any real world attack would be uneconomical.   ECC is less extensively studied than integer factorization (like used in RSA).  Breakthroughs in the efficiency of algorithms used to factor prime numbers have occurred in the past and when they did the effective security of RSA keys (which rely on the assumption that factoring large primes will remain infeasible) was reduced.  At one time 768 bit RSA keys were common place now most applications demand at least 2,048 bits to "compensate". Some of that is due to Moore's law but some of that is due to the better algorithms making the problem "easier".
Pages:
Jump to: