Bitcoin Forum
June 23, 2024, 12:05:56 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 [167] 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 »
3321  Bitcoin / Development & Technical Discussion / Re: Elliptic curve math question on: December 09, 2011, 08:41:34 PM
I suppose that if I offer a two-party key scheme, I might do well not only to use multiplication, but to insist on a mutual commitment of public keys via exchanging hashes first, so that neither party has the opportunity to base their public key on the one they received.

It doesn't hurt, but I'm not sure how much it helps.  The multiplication scheme (DHSS) is used all the time with with pre-published, persistent identities/keys on the internet, all the time.  I think the point here, was, that DHSS is established and you can feel comfortable using it in the ways prescribed by NIST, etc (which doesn't recommend any precautions with respect to public key exchange).  If someone was smart enough to find a mathematical hole in DHSS based on public key exchange, then they're smart enough to realize that there are much more profitable targets to be exploited around the globe than a $3,000 casascius gold bar...

3322  Bitcoin / Development & Technical Discussion / Re: PyBtcEngine: BTC backend in Python (with C++/SWIG) on: December 09, 2011, 03:25:54 AM
Watching this, thank you for your contribution, i like python.  Grin

Ditto.  Development has been remarkably fast and efficient since I "finished" the C++ blockchain code and have been able to work in python 100%.   It is delightful Smiley

Oh, I forgot I also added light networking to Armory using twisted -- connection to localhost bitcoin/bitcoind only, but can broadcast tx and retrieve tx not in the blockchain Smiley
3323  Bitcoin / Development & Technical Discussion / Re: PyBtcEngine: BTC backend in Python (with C++/SWIG) on: December 09, 2011, 03:17:24 AM
Big Updates!

(1)  I just found a huge oversight in the way I was scanning the blockchain for wallet-relevant transactions.  I just optimized the hell out of it and got a full wallet-scan down to 0.75 seconds once the blockchain is loaded!  Sure, my computer is decent:  i5-2500K with 8GB RAM, but this is down from 5-15s it was before.  So, I can now get all the transactions for a set of wallets from a cold start in less than 20 seconds -- that includes reading blk0001.dat, indexing all the data, organizing the blockchain, and finding all transactions for my wallet.  That is FAST.

(2)  I have finished all sorts of crazy new features, but have forked my own project to Armory and been continuing development there, where I should be finishing a new client before the end of the year (alpha version).  I forked the project because I needed to merge the python code and the C++/SWIG code into a single, hybrid library, but I didn't want to disrupe the pure-pythonness of the original pybtcengine module.  So, if you are looking for pure-python, keep using PyBtcEngine, but otherwise you should start following Armory instead.

Teaser:  Armory will include multiple encrypted wallets, watching-only wallets, easy address-import, and will support multi-signature transactions (experimental)!   And that's not even all of it, but I have to keep some things a surprise Smiley

I'll be posting more in a new thread about this soon!  GUI development is slow, though...
3324  Bitcoin / Development & Technical Discussion / Re: Elliptic curve math question on: December 08, 2011, 02:08:06 PM
Wow, nice work bwagner!  It sounds like the flaw has to do with the fact that point addition is easily invertible, allowing someone to "invert" your public key before using it.   They would have to have your private key (or solve a discrete log problem) in order to do the same thing in DHSS.

3325  Bitcoin / Development & Technical Discussion / Re: Elliptic curve math question on: December 07, 2011, 07:34:02 PM
I suppose I could've gotten out pencil and paper and done exactly what you did, instead of ranting about it.  Your proof looks valid, using a typical proving method:  if this was insecure, so would ECDSA, so it must be at least as secure as other ECDSA operations.

But I still don't know why you wouldn't use the DHSS method, since it is established, and you don't need convince someone "I'm pretty sure this proof is correct."  Anyone can look up DHSS and see that it is an accepted method for doing what you are trying to do.  It's no harder to apply than point addition and even has a little bit of extra anonymity.

-Eto
3326  Bitcoin / Development & Technical Discussion / Re: gettransaction for non-wallet transactions? on: December 07, 2011, 07:18:57 PM
Not true, you don't need a rescan to find an arbitrary transaction, if you have the block chain database. It's just not implemented.


My bad.  I thought you asked about looking up transactions for a given address.  It sounds like you have a tx hash and you want to retrieve the tx.  Yes, that should be an easy modification to bitcoind.
3327  Bitcoin / Development & Technical Discussion / Re: Elliptic curve math question on: December 07, 2011, 05:49:15 PM
I agree that your proposal would also work for the coin application.  But since your only objection to the proposed point addition method is based on the incorrect assumption that it requires that one or more of the public keys be kept secret do you now agree that the proposed point addition system will also work?

That's embarassing, I rushed through the thread and totally misunderstood the proposed solution.   My apologies.

You're right it doesn't require keeping public keys secret, but it doesn't change my objection to it.   As Mike Hearn suggested, it's a mistake to not use "established" techniques for any cryptographic protocol.  Is point addition an established technique for a secure system (I'm not familiar with it, but maybe it is)?   Just because an insecurity isn't obvious doesn't mean it's not there.  There's all sorts of creative math that has been used to break crypto schemes, and the only way to "be sure" is to use established techniques.

And the fact is there is already an established scheme:  which is using point multiplication as described multiple times before.  Diffie-Hellman shared-secret techniques have been established as secure, and if you have ECC-math module on your system, you can use it just as easily.  There's no reason to risk using point-addition when there's a widely-accepted alternative that gets you the same thing.  (In fact, the point multiplication adds a little bit of extra anonymity, since the tx with point addition can be identified with anyone having both public keys.  The multiplication tx can only be identified by someone with one of the private keys.)

Publishing private keys or other secrets after a transaction is a standard part of some sound cryptographic protocols.  For example, Off-the-record messaging protocol publishes secret MAC keys as soon as those keys have expired (allowing deniable authentication).  Similarly, a Bitcoin contract for trading across chains publishes a secret to finalize the transaction.
...
All cryptographic protocols can be ruined by things going wrong.  A bad Bitcoin implementation might accidentally broadcast private keys on IRC.  That doesn't mean the Bitcoin protocol is flawed.

The examples you speak of are protocols where your keys are expected to be revealed at the end of the exchange.  But, up to this point in Bitcoin, people reuse private keys all the time with the assumption they remain private.  Removing that assumption changes the security model for application developers and users.  As an app developer, I don't want to have to deal with simultaneously maintaining a set of private keys are okay to reuse, and a set of keys that are a guaranteed fail if I re-use them.  Sure, it can be done, but it's extra complexity in security-sensitive software.


3328  Bitcoin / Development & Technical Discussion / Re: Elliptic curve math question on: December 07, 2011, 02:33:26 PM
Finally had some time to look at this, and I'm not impressed with the talk of point-addition:   as ByteCoin suggested, there is not a "robust" way to use point addition to secure anything.  Point addition on a given curve (where everyone knows the parameters, like secp256k1) is easily invertible.  Point subtraction is only slightly slower than point addition.  

Additionally, it is very unwise to rely on any method that requires keeping public keys secret.  This goes against the grain of cryptography, and creates a headache for those of us client developers that justifiably leave public keys unencrypted in wallets.  You can argue that some special CONOPS (concept of operations) designed for this application will help, but it's just not good cryptography.  Don't do it.

Going back to casascius' original idea:  you CAN use Diffie-Hellman shared-secret techniques to SECURELY create a shared key.  If Alice has (a, a*G) and Bob has (b, b*G), then by publicly broadcasting their public keys, Alice and Bob can both compute the elliptic curve point (a*b*G) and no one else can.   This gives us two options (in general):

(1)  (A and B)  Alice and Bob create the point (a*b*G) from each others' public keys, and use the result as a new public key.  They calculate the address hash and put it in the TxOut field of a transaction.  Then when the money needs to be spent, Alice or Bob can send the other one their private key, and then the combined private key can be computed and used to sign the inputs.  This is perfect for casascius application, but not many other applications (see below).  

(2)  (A or B)  Alice and Bob create the public key as above, and then use the x component (or combination of x and y components) to derive a new private key.  This private key can be converted to public-key/address that can be included on a transaction, and then Alice or Bob can sign for that transaction.  This isn't relevant for casascius' application, but it is cryptographically secure, and has plenty of other useful applications.

The problem with (1), in general, is that it's a terrible idea to create a crypto process that relies on exchange of private keys.  While a wallet/app will attempt to use a different private key for every transaction, there's a possibility that things go wrong -- someone else sends that private key money, a bug in their client (or someone manipulates their client)  to reuse private keys, multiple clients using the same wallet don't realize the key has been used, etc.  And a problem like this would go unnoticed by the user until someone has already exploited it.  This is in the same vein as requiring public keys to be kept private -- private keys should never have to be made public.  

Except for casascius' application:  his CONOPS already involves exchanging private keys and his software is specialized to do this correctly.  For general multi-signature protocols over the internet with untrusted parties (1) should never be used.  (2) could be used cryptographically-responsibly to replace 1-of-2 multi-sig transaction types, but that's for some other application.

P.S. -- I am very interested in ways that an (A and B) transaction could be created using "responsible" cryptography, but so far no one has suggested a way.  Such as a way for Alice to only compute the combined private key with her own private key and Bob's signature (or vice versa)...
3329  Bitcoin / Development & Technical Discussion / Re: gettransaction for non-wallet transactions? on: December 07, 2011, 01:26:16 PM
Your bitcoind would have to do a full rescan of the blockchain, which it is probably prohibitively slow in the Satoshi client.  I'm sure the client could be hacked to do this, though.
3330  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 06, 2011, 05:33:31 AM
Joint,

I did send you a BTC.  I didn't feel that it was worth 2 BTC, though, as it's a very generic font mainly and reusing the Bitcoin logo itself.  I know you put effort into it, but I cannot consider that as a logo for a serious organization.

Please PM me if you would like to discuss further.
-Eto
3331  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 06, 2011, 05:02:13 AM
Hey folks, I'm realizing that i have no idea what I want.  I'm putting this thread on hold while I reconsider some of my branding ideas -- not just design, but perhaps the name, too.  I'll restart this thread when I have better direction. 

Thanks for the attempts!
-Eto
3332  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 05, 2011, 07:59:25 PM
Hello etotheipi,

I messed around a bit and come up with this:



You can click it to see a larger image. Basically its a concrete-looking padlock with keyhole is shaped like the bitcoin symbol. The text is spiky (like bard wire, thorns, etc) to give an added sense of protection. Let me know if you like it or think of any modifications, etc.

If this has been useful to you:
1Mb8jENnC1FfdxEE6L21Y28keHXShTve5Q

Hi bitcoinbitcoin113,

I like the idea, but there's something about your specific design that isn't sitting right with me.  Perhaps the lock is too big and text too small...?    Or maybe it's the gold Bitcoin on top of the padlock.  Perhaps if it looked like a regular padlock, but with a distinguishable (non-gold) BTC keyhole, that would sit better with me.  Though it might be tough to get such a thing to look right...

I think this kind of logo (with the name as part of the graphic) nice to have, but I'd prefer to also have a logo that has the "BitcoinArmory" outside, next to the graphic (like btc_artist has).  If I had both, that would be good/versatile, but I think I definitely need the version with big text next to the graphic.

Thanks for the attempt:  2 BTC sent!
3333  Bitcoin / Development & Technical Discussion / Re: [Bounty] BIP 0011 on: December 04, 2011, 07:39:38 PM
1. Guys, please make sure we are not breaking anything with this...
2. I lost track of all this "stack & signature" stuff a while ago...  So if there is Jack, Peter and Sanda (3rd party). Sandra can NOT pull money out of escrow alone.. she needs one of the guys to co-sign.

It wouldn't be much of a "multi-signature required" transaction if one party can pull out the money alone.

I'm assuming the OP_CHECKMULTISIG works (with the extra stack-pop), and if so, everything else will fall into place -- if the tx is accepted by the network, it will be tough to get it wrong (unless you plug in a 1 instead of a 2 for a 2-of-3 tx...).  I got some GUI development to do, and testing my multi-sig construction methods on the testnet... but otherwise, I'm not far off.  I got all the other pieces in place.  Smiley
3334  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 04, 2011, 05:42:39 PM
2 BTC sent!    

One idea my girlfriend just came up with was a shield with a "BA" in it in appropriate 12th century font:

Code:
-------
| B   |
|   A |
-------

(except inside a shield instead of a square)  I kind of like the idea, and it fits the name pretty well too.  I noticed that such a think might fit well on the top of your building instead of a circle.  Or perhaps the shield could be the logo itself.  It could even be planted in a pile of money/BTC...?  Just rambling at this point...

I should've known to go looking for free icons.  Those links are perfect.  I still wouldn't mind a few specialized ones (and pay for them, too), but it does seem that most of what I need should be there...

Thanks!  And keep the ideas rolling.  
3335  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 04, 2011, 06:06:34 AM
Can I try only an icon? I'm pretty good at pixel art, so a 64x64 might not be too bad.

By all means, I just don't know yet what icons I will need until I start laying out the UI.  However, I'll probably need stuff like send-button, money-recieved icon, money-sent icon, locks for encrypted/locked wallets.   "please wait" icon.   (I really don't like the 0.5.0 icons).

Is 64x64 a good icon size?  Could there be a problem with scaling down to a smaller size?  Perhaps, try scaling your 64x64 down to 24x24 and see if it still looks good.  If not, maybe make provide a good-looking smaller one along with it?  I'll throw in an extra 0.2 BTC for that Smiley
3336  Economy / Marketplace / Re: [BOUNTY 20 BTC] Graphics Artist - Client logo and icons needed on: December 04, 2011, 05:23:31 AM
Hi btc_artist,

I really like the gist of the design, and you definitely deserve a few BTC for it.  I assume I should use the address in your signature?

Two things:
(1) While I know an "armory" would typically be "bigger", I really like the idea of having the building with less aspect-ratio, so that it will also fit nicely as a desktop/window icon.  Of course, that would probably break the symmetry of it, but I think the ability to iconify the non-text part of the logo is a huge benefit for my "brand."
(2)  It's really minor, but do you have any other ideas for font?   I actually like this one, but I'd also like a few others choices. 

I will wait for a few other submissions before picking one (and thus sending anyone the bounty), since I still have some time before I finish my first release. 
Thanks!
-Eto
3337  Bitcoin / Development & Technical Discussion / Re: [Bounty] BIP 0011 on: December 02, 2011, 02:15:35 AM
And I wasn't clear, because I'm just thinking out loud:  I meant take two big 256-bit random numbers (call them n1 and n2) and then produce three keypairs, where the private keys are n1, n2, and n1*n2.  Thinking a little further, a 2-of-2 with that key arrangement gives a kind of "a and b OR c" ...
I guess I don't fully understand yet (who's creating the big numbers? who is multiplying them?)... but I concede to the next paragraph and can save the details for an IRC discussion (or you can point me to some logs where you've already had this discussion--I'm very interested).

Anyway, my point was that with some cleverness I think lots of things become possible with just what is proposed with BIP 11, and I'd like to give people time to explore what can be done and figure out how to make this stuff easy to use before thinking about even more complicated transaction types.
This is a good point, as I never realized before that there was more to M-of-N transactions than the obvious uses.  Unfortunately, the possibilities are limited to the ECDSA math tricks, not a generic scripting language like OP_EVAL...
3338  Bitcoin / Development & Technical Discussion / Re: [Bounty] BIP 0011 on: December 02, 2011, 01:18:29 AM
Okay, take 2:  I responded before I had thought this through:  

You are saying "product of private keys" which I interpretted to mean what is used in Diffie-Hellman shared-secret process:  I have private key a and public key a*G.  You have private key b and public key b*G.  If we have each other's public keys, we can both produce:   a*b*G, which is a point on the secp256k1 curve that only you and I can calculate.  That point could be used to create a new private key, and that is converted to an address to be included in a TxOut script.  Then a signature for that address can be produced by me or you.

That is the only way to "multiply" private keys without actually handing the other person your private key, which I don't think is ever a good idea.  I'll think a little more about how it would be possible to get an A-and-B address transparently into 20-bytes.
3339  Bitcoin / Development & Technical Discussion / Re: [Bounty] BIP 0011 on: December 02, 2011, 01:07:17 AM
Ack, please don't tell me we're allowing recursion in OP_EVAL?  Or at least, unbounded recursion...?  I'm envisioning someone finding a bug in OP_EVAL which causes every node on the network to hit the recursion limit on their system and crash the moment the tx hits the network...

Quote
Just thinking off the top of my head: what interesting things could you do if you create 3 keys, where the private key for the third is the product of the first and second?  If you make them a 2-of-3-to-redeem, is that the same as an (a and b) OR c transaction?

Your C address would be a "diffie-hellman shared-secret" private key, which can be produced by either A or B (using their own private key and the others' public key).   I presume you mean, calculate the public key for that private key and make that address C?    Then technically, a transaction that ONLY includes C can be spent by A or B, IF they have each others' public key and know about it.  

Therefore, making a C-or-D transaction using the C just described and third party D, would be one way to make an (A-and-B)-or-D transaction that fits into OP_CHECKMULTISIG protocol.  It will just require A and B to exchange/notify each other of public keys, and an extra step to produce the shared private key before signing the tx.

EDIT:  Ack, I botched the conclusion here... C-or-D would be the same as A-or-B-or-D.... clearly not what we wanted...
3340  Bitcoin / Development & Technical Discussion / Re: [Bounty] BIP 0011 on: December 02, 2011, 12:38:28 AM
Is the BIP on github the most up-to-date one for 0011?   
I think the version on the bitcoin wiki ( https://en.bitcoin.it/wiki/BIP_0011 ) is a little more up-to-date, but you should check with genjix, he's the BIP-meister.

Pull request for BIPS 11 12 and 13 is here:  https://github.com/bitcoin/bitcoin/pull/669
Unless I hear objections, I'll probably pull it tomorrow.

Just for clarification to make sure there's no confusion:   the upcoming changes for supporting multi-sig transaction as "standard" in the network will have one-and-only-one form--the form that uses public keys only, and OP_CHECKMULTISIG.  As such, an 2-of-3 transaction might look like the following:

TxOuts will look like:
Code:
2  PubKey1  PubKey2  PubKey3  3  OP_CHECKMULTISIG

And the associated TxIn scripts will look like:
Code:
OP_0  Sig1  Sig3

Then, when the scripting engine reaches the OP_CHECKMULTISIG symbol, the stack will look like (for the 2-of-3 tx):
Code:
OP_0  Sig1  Sig3  2  PubKey1  PubKey2  PubKey3  3 

Also, these are the only multi-sig transactions that will become standard? What about (A-and-B)-or-C tx types?  And the only options for (M,N) are {(1,2), (2,2), (1,3), (2,3), (3,3)}?   Are 1-of-1 transactions (as silly as they would be) considered "standard"?


Pages: « 1 ... 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 [167] 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!