Bitcoin Forum
June 20, 2024, 11:15:40 PM *
News: Voting for pizza day contest
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [114] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 »
2261  Bitcoin / Development & Technical Discussion / Re: Is it possible to generate an already existing seed? on: January 30, 2018, 10:42:14 PM
An analogous situation is when a random number generator isn't sufficiently random - the crypto seeds it generates may be a small population.

Correct.  Private keys that are randomly chosen from the entire set of valid private keys are secure.  Private keys that are randomly chosen from a small definable subset of valid private keys can be VERY insecure.

This is why in my own post above, I specified, “with working random number generators”.  This is imperative for any cryptographic software of any kind; if you do not have a working CSPRNG, where the CS stands for Cryptographically Secure, then you have nothing else, either.

The lack of randomness may have insidious causes, for example seeding the RNG with the microsecond timestamp of a keypress. But it may turn out that USB is polled at a rate derived from the same microsecond clock. You may think the timestamp has 10 bits of entropy, but it really only has 3. This may seem to generate unique seeds, but alas, they're not good enough.

Which is why it is generally a bad idea to try to reinvent cryptography on your own without a SIGNIFICANT amount of education, study, and expertise.  When it comes to maths and physics, what "feels intuitive" to someone that has a limited knowledge can often be COMPLETELY WRONG.

In my preferred kernel (FreeBSD), as of last time I read those portions of the code, the entropy harvester does not feed the PRNG an estimate of more than 1–2 bits of entropy for any hardware event.  I am of the school of thought that entropy estimation as a concept is problematic at best; but if and when it must be done, it must be done conservatively.

Estimating 10 bits of entropy off a single instance of any microsecond timer event seems suicidal to me.  Among other problems, this translates to an assumption that all precision below one millisecond in the timing of that event be completely unpredictable in all circumstances—even to unprivileged code running on the same CPU as handles the interrupt!

DannyHamilton is right:  The acquisition of cryptographically secure randomness is not only an expert domain, but a specialist expert domain which invokes both maths and physics.  Even professional mathematicians who are not cryptographers will probably get this wrong.  Almost all working programmers will get it wrong.  Once upon a time, the individual entrusted to maintain Debian’s vendored OpenSSL got it very, very wrong—causing a spectacular blow-up of most cryptography involving Debian systems from 2006–08.  Conventional wisdom gets an awful lot wrong.  There is a high probability (hah!) that you will get it wrong, too.

Worst of all, there is no certain means to prove that you got it right.  Statistical tests can easily demonstrate that a given bag of bits is not random; but no test can prove that one is.  Passing the DieHard suite (or similar) does not mean that your numbers are sufficiently random for cryptographic purposes.  The only way to be sure is to possess a deep theoretical knowledge matched by practical knowledge of real-world cryptanalytic attacks which target insufficiency of entropy.


Don’t take any chances with your randomness!

On Unix or Linux, read() off /dev/urandom; or use whatever special nonportable APIs may be offered to obtain randomness directly from the kernel (getrandom(), a special sysctl, etc.).  On other platforms, find the equivalent.  If writing a web application, use getRandomValues() (for most any current browser) or, if feasible, the generateKey method; then, pray to whatever gods you believe in that the browser is not too stupid.


Do not roll your own.  Do not conflate distinct meanings of the overloaded word “entropy”, then gather “entropy” the same measurements as taken by Panopticlick (!) (!!) (for Bitcoin!).  Also, do not roll your own using C’s rand(), e.g.:

Quote
Code:
/* true_random -- generate a crypto-quality random number. */
static int true_random(void)
{
    /* crap. this isn't crypto quality, but it will be Good Enough */
    srand((unsigned int)(((time_now >> 32) ^ time_now) & 0xffffffff));

    return rand() & 0x0FFFF;
}

Let that horror be a lesson.  For unless you have considerable specialist expertise, you cannot rely on your results being any better.  And I repeat:  If you do not have a working Cryptographically Secure PRNG, then you have nothing else, either.
2262  Bitcoin / Development & Technical Discussion / Re: How do I calculate the Exponent for public/private keys on: January 30, 2018, 08:18:15 PM
Thus in the world according to Anti-Cen, RSA is explicitly “based on” a “curve”.

I asked if it was based on a curve and you seem to have a bit of a metal condition and accusing me of all kind things because like I
so often do I edited a post moments after it was posted.

Quotable.

For the benefit of any newbies reading this—and I mean, people who do not brag about development knowledge or experience, and have never even read the Wikipedia article on RSA—the answer is:  No, RSA is not based on a curve.  RSA is not elliptic-curve cryptography.  RSA is based on the RSA problem, which is closely related to (but not identical with) the problem of factoring large integers.  Elliptic curve cryptography such as Bitcoin’s secp256k1 is based on the elliptic curve discrete logarithm problem (ECDLP).  Bitcoin does not use RSA anywhere for any purpose whatsoever.

I found this on your site "RSA: 0xA232750664CC39D61CE5D61536EBB4AB699A10EE"

Please help me to encode a message to send to the address because so far I've got

yutyurtyurtyurtyutryurtyurtyurtyu4tytryrtyurtrtu
rtyurtyurturtyu-GROW-UP-LITTLE-BOY ttyurtyurt
rtyurtyurtyurtyurtyutryurtyurtyurtyurtyurtyurtyu

And it does not seem to post

After decades of disdain on my part, I finally understand why people use the term “LOL”.  Did you just try to use a PGP public key fingerprint as an RSA key?  Why yes, it seems you did (or at least, you claimed to).

That is a 160-bit SHA-1 hash, calculated as specified by RFC 4880 § 12.2.  Depending on how those bits hashed out, you perhaps may only have slightly more luck finding in it a minuscule RSA modulus plus public exponent than you would using RSA-512 to generate Bitcoin keys.
2263  Bitcoin / Development & Technical Discussion / Re: bech32(1) for encoding/decoding of Bech32 strings & “Bravo Charlie” Addresses on: January 30, 2018, 07:33:26 PM
just stepped through the readme file in the code:

Quote
Software is unworthy of release if it does not have a proper manpage.

This proves, that you are not only from FreeBSD world, you are probably more from the OpenBSD world! Looking at the code of bitcoin, there are too many people, which say "code is doc". Well, I can even remember a thread here, were Greg M is challenging others in reading code and asking to explain. This might prove him be a genius, but in companies you need team capabilities, not single point of failure knowledge. Reliability, combined with fall back scenarios is required. This is why good code is not only readable, but also documented. Otherwise the world would still be in (Z80 ?) assembler.

Thanks, pebwindkraft.  Why yes, I think all the major BSDs have a strong manpage culture.  I myself have much benefitted from that, and I have been inculcuated with it along the way.

I was there speaking to my annoyance at code only “documented” by wikis, webpages, or (for libraries) the output of Doxygen.  If software lacks reasonably complete usage documentation which can be quickly referenced at the tty by typing `man xxx`, without firing up a web browser or even being online, then that severely impairs its usability.

From the producer end, it sometimes occurs that when writing a manpage, I realize that I am documenting a wish for what the program should do, not what it actually does.  Then, I change the code to bring it in line with the manpage.  This happened repeatedly with easyseed.  Different levels of thought are required respectively for writing code, and explaining its external features in natural language.  Exercising both improves the code.

I do believe that the code itself is a form of documentation; and I love reading well-written C code.  For those who wish to modify the code, the code itself documents what it does; and code comments explain why, when that is nonobvious or based on some external specification.  Written specifications are certainly needed for that teamwork you mention; and I judge specifications based on whether or not I need to refer to existing code to implement from spec.  The manpage is most of all for those who wish to use the results; and ultimately, it is the results that count.

Appreciating your code distribution, looking at it, and trying to find out, what to do with it. Thanx for posting.

I hope that you find this utility useful for your Bech32 encoding needs.  Please don’t hesitate to inquire with any questions or suggestions.
2264  Bitcoin / Development & Technical Discussion / Re: How do I calculate the Exponent for public/private keys on: January 30, 2018, 06:20:42 PM
[snip]

(Nothing worth replying to.)

What on earth made you think that I wanted the code to work with Bitcoin given that I often point
out that the design is wrong, hence it won't scale ?  Development here is not just about Bitcoin you know
so stop making yourself look silly with your ramblings

Oh, please.  Just because you’re stupid, don’t assume that I am—or that I was born yesterday.

(And I must ask, why do you post literally an average of 20 times per day on the Bitcoin Forum if you so loathe it?  Why yes, this forum is for Bitcoin development.)

But just in case any observer has any doubt about your transparent, juvenile excuse:  About 50 minutes after you started this thread, you posted substantially the same question in a different thread explicitly titled “Elliptic curve point of R” amidst discussion of secp256k1 (archive; red colour is added to highlight in the following):

With microsoft RSACryptoServiceProvider the Exponent always stays as "AQAB" on 512 bit key
and i need to work it out going backwards from public/private key pairs if I can and i think this
is based on the curve



I don't trust microsoft on anything and really just want something simple to generate
keys and the Exponent that written in C# without having much code.

Thus in the world according to Anti-Cen, RSA is explicitly “based on” a “curve”.

I should also note, anybody who uses 512-bit RSA for any purpose whatsoever is a moron.  512-bit RSA is breakable, not only in theory but as repeatedly demonstrated in reality.

Now, a clarification for those reading this:

Quote
Your reply does compute and you are angry about the price of your coins going down but you should
get out more from the church and read other development forums to see what they are saying instead
of trying to insult people because you lack the skill to debate and don't write code for a living

Just admit the question I asked went over your head and I know this might be hard for you
to understand but you know when I make a post because it usual will have my name at the top of it.

Here, you are replying to your own words which you directed at me on 2018-01-02 11:36:57.  Don’t put words in my mouth.

I quoted you with proper attribution in the post to which you replied.  But you habitually strip attribution from quotes; and it is evident that you here confused yourself.

Regardless—really, regardless—I will handily admit that the question of how to use 512-bit RSA objects for Bitcoin secp25k1 ECDSA keys does indeed go over my head.  Whoosh.


You edited your post immediately after you posted it.  Following is the original version; I replied to the latest version I have seen.  Please be advised that I am archiving this thread.  (Edit:  Thus far, snapshots at web.archive.org: 0, 1, 2, 3 and archive.is: 0, 1, 2, 3.)

Now shoo, go away.

He has now gone from flaunting arrogant ignorance to self-satirizing it.  As if it were not enough to posit that CPUs were useful for Bitcoin mining, which has not been the case for over half a decade:

Not my fault if your in love with an outdated steam engine is it now

Quote
That is one of the stupidest ideas I have ever seen in my whole life; and it has plenty of competition between the four corners of this world.

Hope you liked stalking me, I am cool with it because I eat little me like you for breakfast who's only concern
is their "Investment" playing the slot machine

Quote
Your reply does compute and you are angry about the price of your coins going down but you should
get out more from the church and read other development forums to see what they are saying instead
of trying to insult people because you lack the skill to debate and don't write code for a living

Just admit the question I asked went over your head and I know this might be hard for you
to understand but you know when I make a post because it usual will have my name at the top of it.
2265  Bitcoin / Development & Technical Discussion / Re: Can Lightning network work decentralized ? on: January 30, 2018, 04:02:56 PM
This is not mamma and papa banking ...
no its not, sounds more like a childish behaviour trying to hijack every lightning thread here. 
Anti-Cen! Already me and others complained... You try to put your fud and propaganda in every lightning thread. Nobody believes it, but that's a different topic.

Anti-Cen tries to use 512-bit RSA for Bitcoin keys (archive) (again!).  I suggest that his credibility on any technical topic whatsoever is absolutely zero.

I propose to open a new task, where you state, that lightning is the piece of shit that you think it is, and explain at a very detailed level, why this is what you think it is. And of course, you can put all your weird assumptions into it (like paying high amounts of pounds/dollars/Euros), and also your excellent predictions of the future. And for sure the funny banksters comparisons.

And for sure, explanation of how 512-bit RSA is used in the Lightning Network because Bitcoin developers are ignorant doofuses who lack Anti-Cen’s deep experiential knowledge of distributed databases.

(Your suggestion is excellent, pebwindkraft, as would be known to anybody who knows how to successfully argue a point in a persuasive manner—instead of just starting pointless arguments everywhere.)
2266  Bitcoin / Development & Technical Discussion / Re: Is it possible to generate an already existing seed? on: January 30, 2018, 03:48:51 PM
Hi guys, I'm reading "Mastering Bitcoing" and I'm curious about this topic, I read that with 64 hexadecimal you can generate 10^77 seeds and there is 10^80 atoms in the visible universe, but is it possible that you have a seed that already exist? I'm not focus on the probability, just the possibility.

Theoreticians call this “possible”, because it is indeed possible in theory.  But your question cannot be adequately answered without focusing on the probability:  The precise reason why it is theoretically “possible” is that there is a nonzero probability.  To understand what that means requires discussing probabilities.

Humans generally have a problem grasping large numbers.  That is why comparisons are given, such as to the estimated number of atoms in the observable universe.  Otherwise, the reader may fail to grasp that the number is not only large:0  It is astronomically, unthinkably huge.

On a much smaller scale, this is also the failing which causes many people to buy lottery tickets—whereas a typical large-jackpot lottery typically has on the order of 108 combinations.  N.b. that 1077 is 1069 times bigger than 108.  This difference is itself so vast that it is difficult to explain in understandable terms.

The size of these numbers is why I must draw an important distinction:  Theoretically, it is possible for two people with working random number generators to pick the same keys.  However, in real-world, practical terms, such a thing is impossible.  The aforestated “nonzero probability” is so close to zero that we can safely ignore it.

Aside:

Terminology note:  You refer to 256-bit numbers.  Such numbers indeed have “64 hexadecimal” digits; but computers handle them in binary, that is to say, in bits. 

Also, you refer to a “seed”; I presume that you refer to Bitcoin’s private keys, which are 256-bit numbers.  A BIP 32 seed is 512 bits in total.

Most Bitcoin addresses (excepting the new P2WSH) have “only” 160 bits of substantial information.  Thus there are “only” on the order of 1048 potential addresses of each other type (P2PKH, P2WPKH, P2SH).  That is still an astronomically large number.

If one billion Bitcoin users each generated one million addresses per second for the next thousand years, that would only come to on the order of 1025 addresses.  Granted, at that point, the probability of a birthday collision in the 1048 address space would be non-negligible.  I may consider that a long-term worry when there exist one billion Bitcoin users, each generating one million addresses per second—day and night.


0. My apologies to mathematicians who consider “huge” to start with Graham’s Number.  This discussion pertains to numbers so puny that they can be written in exponential notation.
2267  Bitcoin / Development & Technical Discussion / Re: How do I calculate the Exponent for public/private keys on: January 30, 2018, 01:58:23 PM
I am using Microsoft Windows RSACryptoServiceProvider just to generate the keys for now but it also calculates the Exponent
at the same time and I want to cut RSACryptoServiceProvider out of the loop so I am doing encryption/decryption with BigInt
which I have got working just fine.

strange thing is the keys keep changing with RSACryptoServiceProvider but the Exponent always stays as "AQAB" on a 512 bit key
and unless you set PersistKeyInCsp = false; then the key pairs get saved by spy-master general  so basically just don't trust Microsoft one bit here

The code I use for now in C# to create keys/Exponent is shown below

Quote
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(512);  // Key bits length
 rsa.PersistKeyInCsp = false;
 RSAParameters RParams = rsa.ExportParameters(true);
 this.PublicAddress = Convert.ToBase64String(RParams.Modulus);
 this.PrivateAddress = Convert.ToBase64String(RParams.D);
 this.Exponent = Convert.ToBase64String(RParams.Exponent);
 this.KeySize = rsa.KeySize;

Later I want to generate my own key pairs and compress the size of the public key down without using a million lines of code

Folks, I know that you desire to be helpful in “Development & Technical Discussion”; but please look at who is posting here.

After literally over 900 posts mostly bashing Bitcoin whilst boasting of his superior technical knowledge and extensive development experience, Anti-Cen has—tried to use RSA for Bitcoin.  512-bit RSA, at that (!).


Edit:  And he has done so in multiple threads, including one explicitly titled “Elliptic curve point of R”:

With microsoft RSACryptoServiceProvider the Exponent always stays as "AQAB" on 512 bit key
and i need to work it out going backwards from public/private key pairs if I can and i think this
is based on the curve


I don't trust microsoft on anything and really just want something simple to generate
keys and the Exponent that written in C# without having much code.
End edit.


He has now gone from flaunting arrogant ignorance to self-satirizing it.  As if it were not enough to posit that CPUs were useful for Bitcoin mining, which has not been the case for over half a decade:

Quote from: Anti-Cen (current signature)
Mining is CPU-wars and Intel, AMD like it nearly as much as big oil likes miners wasting electricity. Is this what mankind has come too.

Maybe the development team needs to go back to school and learn what distributed computing is all about because clearly
the development team have dropped the ball and they are going about the fix in the wrong way entirely.

The BC is a linked list so take the headerID and just point that to a list of nodes who have the full block details if you don't hold it yourself
so think about it as storing a reference in <LIST> to other objects. Distributed system is not what they do best and no one can argue that
I am wrong because we know the wheels are falling of the current BTC block-chain

Few people like me have seen what starts to happen to a database when you push the size too high and the index
becomes too big to hold in memory and that's with spreading the DB over several drives.

Quote
You don't know how it works, basically. Please learn, you sound crazy.

I can always tell when I am winning and the other side resorts to insults but you did
not answer my points and want to talk around them so please let me know what
specific point you would like to disagree on and also note that I am not against
Segwit which kinds of brings file compression to the blocks using "Extended blocks" to
store data in BC because short term it is a good fix

You can say that again because Segwit is not implemented for Bitcoin and has been dropped but
it is confusing because I hear about Segwit wallets and I am not talking about Segwit2x here that uses B2X

Bitcoin is free software and any developer can contribute to the project.
The first: Code Review

Bitcoin Core is security software that helps protect assets worth billions of dollars, so every code change needs to be reviewed by experienced developers

I am not so sure that it this easy and Mr J Poon who's running the lightning network project won't answer his emails
and I once tried this "Open Source" approach with firefox and code related to google but they would not take the offending
code out.

My code for Bitcoin Core is only one line long so do you think they will put it in to the project for me

public static money MaxFee=1.5 // Miners that do not like it are free to leave because we have ten timed more than we need

this 200gb problem a year growth in the size of the block-chain will result in having to use a AS-400 computer
to process that amount of data because to balance a wallet you need to walk back down the chain (Link list)
and trace all the part coins in the wallet back to the original mined coins which more or less involves scanning
all 200gb for each transaction and this process gets repeated by all 20,000 nodes on the network.

Distributed systems are not built like this as i am sure many of you here already know and they are not even trying
to clear down the mempool that stands at 115,564,705 bytes and we need to do a bit of house clearing ourselves
and it's time to call out the garbage collector to dump 90% of the full nodes because we don't need this many

if they continue to refuse to implement code shown below
public static money MaxFee=1.50 // Less miners because not enough cream to go around
or
public CONST int32 BlockSize=4 //Just like any decent programmers would use

Then we need to publicly name and shame BTC and it's developers and try to salvage Cryptocoins by backing
one of the other forks because as we speak it's our money and effort that is being dragged down by this mess

Anyone that writes a financial system and needs to protect against a 51% attack needs to find another job as do any
programmers that need CPU-wars between miners to keep Intel and AMD rich along with big oil and the icing on the
cake is Bitcoin will not scale and they knew this from day one, like nine years ago.

80% of the Bitcoin code is about mining, the miners and developers are one and the same and no one works for free
but now they have got greedy and are offering us bread today and jam tomorrow but it's too little, too late IMHO

[...]

I am aware my posts are being watched but they dare not drop by and have it out with me so do they
fear developers that are "Not on the team" and how long will it be before the masses see that huge
transactions fees is the real reason for $6,000 being knocked off the price of BTC

public static money MaxFee=1.50 // Less miners because not enough cream to go around

That is one of the stupidest ideas I have ever seen in my whole life; and it has plenty of competition between the four corners of this world.

Your reply does compute and you are angry about the price of your coins going down but you should
get out more from the church and read other development forums to see what they are saying instead
of trying to insult people because you lack the skill to debate and don't write code for a living
2268  Bitcoin / Development & Technical Discussion / Re: bech32(1) for encoding/decoding of Bech32 strings & “Bravo Charlie” Addresses on: January 29, 2018, 11:58:40 PM
Today ( 1515275048210391 ) I moved some steps ahead ...

Apologies for the delayed reply.  Any luck with getting it to compile on your platform?
2269  Bitcoin / Development & Technical Discussion / Re: How long to hack an address that is used to send BTC multiple times? on: January 05, 2018, 02:24:31 AM
Especially, when you can improve all 3 of those situations by simply generating a new address for EVERY transaction?  A business wouldn't re-use an invoice number, why would you re-use a bitcoin address?

I don't want to diss you but are you from another planet?

The invoice number? A Bitcoin address is more like a customer ID, which remains fixed!

Nonsense.  What DannyHamilton described is not only a well-known “best practice”, but also the actual and longstanding current practice of numerous Bitcoin businesses, both large and small.  Assigning one address per transaction is also the only practical, reliable means of tracking payments and matching payments to transactions; thus, a Bitcoin address works out perfectly as a quasi invoice number—or even an actual invoice number.

I emphasize that this is the common and customary usage.  Forget about discussing your qualifications as a developer:  If you have not seen this as a customer, such reveals that you have rarely if ever used Bitcoin at all.

It would be much more convenient for businesses or individuals, to provide their counterparties with fixed addresses for further use.
 
Otherwise a new one would have to be created everytime someone sends you a payment. What a nuisance! And imagine this is done automatically, and a partial payment is received: CHAOS, CONFUSION and MAYHEM!

Years of the real-world experience of actual businesses flatly contradict your supposition.

What happens if a partial payment is received?  Whatever happens according to the payee’s usual handling of partly-paid invoices—that’s what.  Using one address per transaction makes it easier to track and account for partial payments.

For privacy you would need a new private key (HD) every time anyways.

With your reference to “(HD)”, you are confusing the BIP 32 seed with a Bitcoin private key.  From a single seed, a BIP 32 HD wallet can generate up to 2,147,483,648 hardened or non-hardened private-key/address pairs per derivation path.  That’s over two billion addresses.

At the current rate of transactions per day, it would take about 25–35 years for the entire Bitcoin network to process 2,147,483,648 transactions.  If you had somehow anachronistically created an HD wallet when Bitcoin was first released in January 2009, and every Bitcoin transaction ever made had been spent to you with a new address for each one, then you would have still only used a fraction of your addresses.

Still worried about running out of addresses in your HD wallet?

But if you want privacy, BTC is not the right crypto.

So, if Bitcoin does not provide a privacy suit of armour without special measures, you recommend walking around naked?  (Moreover, given some effort and skill, Bitcoin can be plenty private.)

I guess a company with good blockchain knowledge could try and create 1 private key per customer, then issuing a different address on that key for each invoice. But for the average company/individual that is way too much overhead.

So yes I do think address re-use should be fully supported.

For a lightweight solution, Electrum provides easy merchant features which even the dullest developer should be able to get working and integrate with a shopcart and accounting backend.  It automatically provides a new address for each payment request, and serves up fancy auto-generated payment request pages with QR codes.  For security, it works fine with a cold wallet (no webserver access to funds).  If you can set up a webserver and a basic shopcart package, then you are capable of doing this, too.

Making this work with Core is not exactly rocket science, either.
2270  Bitcoin / Development & Technical Discussion / Re: Keys and such like - can they be rebuilt from partial? on: January 04, 2018, 10:14:26 PM
Now, an attacker has 39 of the digits of the combination.  The attacker can simply set those 39 digits, and work on the other 38.

We must admit that bruteforcing of 128 bit (second part of the key) it's impossible for now. Even bruteforcing 64 bits for ordinary hacker looks like impossible task. You need computer with calculating power like 100 000 GTX 970 (each GTX is about 40* 106 numbers/second) to brute force 64 bit number in 2 years (1,46 years).

Estimating the global average hashrate nowadays at around 8 EH/s (≈ 263 H/s), Bitcoin miners collectively do on the order of 264 work literally every two seconds.  That is, all miners in the world put together.  To do 2128 work would still take them more than one trillion years (l(2^65)/(365.2425*86400))/l(10) ≈ 12.07).  To do 2256 work—forget about it.  What’s 2128 × 1 trillion years?

Adding one bit doubles the amount of work needed to bruteforce.  Doubling the number of bits squares the amount of work needed to bruteforce.  To bruteforce 64 bits of key is within the reach of distributed computing, or powerful entities with supercomputers.  To bruteforce 128 bits is humanly impossible, and likely always will be.  Since it is theoretically possible, cryptographers prefer the term “computationally infeasible” to “impossible”.


I guess my line must be okay, since I've reported over 4000 posts and I'm still at 99% accuracy.

Your report stats as of September 2017 provide one of the reasons why I know to heed your advice on this topic. <g>

The babble of “bitfools”?  That’s a tough call.  Bizarre, essentially substance-free nonsense does not belong on a technical discussion forum.  But if it is here, then somebody does need to step up and point out the stupidity

I agree. The options as I see it are either the post gets removed, or it needs to be responded to.  Ignoring the troll won't work in that particular situation.  There is too much risk that a newbie won't realize it is nonsense, and then they'll repeat it elsewhere.  That's how bad information gets incorporated into "Common knowledge".

Too true.  The Earth is not flat, no compressor can reduce the length of all strings, and Segwit does not remove signatures.  But if somebody has resources to push an agenda, we can repeat ourselves all day and still be drowned out.  Moreover, there must be another line between spiking urban myths in embryonic form, and dutifully replying to nonsense which no reasonably intelligent person would find credible.  Perhaps patterns should be developed of providing brief pointers to concise sources of good information, à la the Usenet “read the FAQ section x.y.z” response.

without any attempt to soften and sugar-coat the response with undeserved niceness.

The niceness isn't for the sake of the fool.  The niceness is to increase the likelihood that everyone else that stumbles across the thread will be receptive to what I say. (I can get a bit snarky or passive-aggressive at times though).

Well, that is a matter of tact; and I suppose we have a difference of style, perhaps even a difference of opinion.  “In real life”, I am formally courteous to a fault; and I have patience, when I deem fit.  But also “in real life”, I am scathingly sarcastic and active-aggressive in giving short shrift to nonsense.  I am not simply a “keyboard warrior”.  I will call a spade a spade.  I hurt people’s feelings, if they deserve it—not people who make occasional dumb mistakes, as does everybody (including me), but those who are blatantly wrong, incorrigible, ineducable.  And I respect those who do similarly.

Some of the leading Core developers are oft criticized for some alleged lack of “niceness”, usually as perceived by people who are wrong.  To me, that shows only that they are strong, self-confident, and uncompromising.  I also don’t mind seeing djb more or less outright call his colleagues idiots in published papers; sometimes, they are idiots.  Though I am not a Linux fan, I do respect the Torvalds management style.  Yes, I am an unabashed elitist.

So as for authors—and so too as for readers.  Perhaps readers who need diplomatic saccharine are not worth convincing.  A reader who sincerely desires knowledge will care only if I be correct, not whether I have been “nice” in pointing out something wrong; whereas a reader who rejects knowledge due to lack of “niceness” to a third party in the discussion is not worthy of my time, anyway.  That is my opinion.

(Etymological side note:  The word “nice” once upon a time meant “foolish, stupid”.  I find that most fitting, a delicious historical irony.)

Note: we seem to have wandered of thread topic here.  This conversation probably belongs in Meta.  I cetainly won't mind if a mod splits this thread and moves this part to Meta for us. (I don't think we can split our posts to a new thread ourselves, can we?)

Good call.  I’ll take this up further, if it gets split or moved; and otherwise, I’ll fully understand if you don’t.  I don’t know any means of splitting a topic.  This thread has already spawned an offshoot in Meta, q.v., to which it may be suitable to move posts from here; and I don’t mind editing and splitting out my above reply to TechPriest, if necessary.
2271  Other / Meta / Learning to Report Abuse on: January 04, 2018, 09:57:09 PM
From my perspective, following are a few tips for intelligent newbies who wish to help keep the forum clean.

The zeroth rule is, give a damn.  I recently reported a year-old copypaste spam.  As seen in the archive, the post immediately after it quoted the spam in its entirety, then replied, “Oh, that's just spamming, man.”  If he successfully identified it as “spamming”, then why did this this person (a “brainwallet”-pusher, by the way) not click the handy “Report to moderator” link?

Sometimes, it is a judgment call.  When I’m unsure, I sometimes reply to a borderline nonsense post (or just ignore it) when I should probably report it.  But if you know that something is spam, please do the right thing.

Use of the report system has been and continues to be a learning process for me.  I started out reporting flagrant spam.  Then I added no-substance posts by apparent account farmers, and reporting of misplaced topics.  More recently, I upgraded to targeting copypasters for permaban.  As you gain experience, you will likely follow some similar trajectory of your own.

Particularly when starting out, reading more than I write has been a useful habit—here as everywhere.  I have carefully experimented with different strategies to raise bad posts to moderator attention, for maximal impact with best use of my time and theirs.  Along the way, tips from Legendaries have been of great assistance; as such, I must thank DannyHamilton for his recent discussion with me, which inspired this post.

Ultimately, as in any endeavour, there is no substitute for experience.  For your hundredth report, you will be faster on the draw and surer in your aim than for your tenth; and I have no doubt, I will learn much more before I make my thousandth report.
2272  Bitcoin / Development & Technical Discussion / Re: How long to hack an address that is used to send BTC multiple times? on: January 04, 2018, 04:47:23 PM
The security of exposed Bitcoin public keys is just fine for general usage.  They cannot be hacked.  Answer to the thread’s subject line:  “A million billion trillion zillion years.”  But there is a different, unrelated reason to avoid address reuse:  Privacy.  Avoiding address reuse gives you a modicum of privacy.  That at least makes Chainalysis work for their pay.  Re-using addresses makes transaction linkage trivial, child’s play.

A public key is called a “public key”, because it is secure when exposed in public.  I publish my PGP public keys (and if I didn’t, PGP would be useless).  I am not worried about that.  Each and every time you connect to an https website secured by TLS, the server’s public key is exposed to you—and your symmetric session key is derived from a key-agreement process based on the hardness of the same DLP as is the fundamental basis of most widely-used public-key cryptography other than RSA.  I am not worried about that, either!  Likewise, I am not worried about the security of my Bitcoin public keys.



Those concerned about bad randomness causing leaked secret key bits need to read RFC 6979:

Quote from: RFC 6979
Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)

Abstract

This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.

Core’s secp256k1 library uses this deterministic, “derandomized” DSA.

I don’t know if Core v0.15.1 uses that library for signing, as of yet; and I am too lazy to grep sources at the moment.  I know that older versions used this library only for verification, where it beat OpenSSL 5–10x in performance.  Does somebody else know off-hand?

If your wallet does not use deterministic ECDSA signing, then—well, I suggest that you should switch software.  This should now be considered a baseline “best practice”.

Of course, if your platform’s RNG is broken, then you have other problems.  Big, bad problems.  But with RFC 6979 signing, leakage of ECDSA private key bits will not be one of them.


The advice against address-reuse is based on the general risk of future breaks against ECDSA, which cannot be ruled out.

Actually, I think the advice against address-reuse is based on the concept that it reduces both your own privacy AND the privacy of everyone that you engage in transactions with.

The slight protection against "future breaks against ECDSA" is an added side-benefit, but not the most compelling reason.

I argue that even mentioning public-key security in the context of address reuse is a terrible disservice to Bitcoin.  To anybody who do not understand the nuanced technical discussion, it FUDs Bitcoin security for no good reason.  In ordinary circumstances, there is one, and only one excellent reason to avoid address reuse:  Making transaction linking less easy.

I call myself “paranoid”; and there is only one use case in which I would be concerned about exposing the public key:  Long-term storage of funds for decades.  Yes, in that case, I want the extra security of reducing my attack surface to the Hash160.  That will guard against unforeseen cryptanalytic breakthroughs, hypothetical quantum computers, ECDSA-cracking unicorns, the arrival of superintelligent space aliens on Earth, etc.  So if I make a cold-storage address for my grandkids’ inheritance, I will keep the public key secret, and sleep 3.1337% more quietly at night.  I am just that paranoid.

N.b. that using a new address for every transaction does not by itself provide good privacy.  Blockchain analysis heuristics can link transactions with high reliability, even if addresses are not reused.  It is only the most basic privacy measure, as well as being the prerequisite for all better privacy measures.  For this reason alone, avoiding address reuse is very important.


To reduce fees, you may want to consider moving your bitcoins to a SegWit address.

This must be emphasized at every opportunity.  When you use a Segwit address, you are helping the network by using less of a globally shared resource for your transactions; in BIP 141 terms, your transactions have less “weight”.  Fees are calculated by weight.  Therefore, when you use a Segwit address, you get a huge discount on fees.


[pseudo-technical babble evidently designed to impress newbies and non-technical people—abysmally unimpressive to anybody who has technical expertise in Bitcoin]

[incomprehensible gibberish talk]

[blah blah blah]

The aptly-named “bitfools” appears to be trolling with voluminous spew of patent nonsense.  Newbies, don’t believe anything he says.  Just ignore.  It is all 100% incorrect.  Sheer idiocy.
2273  Bitcoin / Development & Technical Discussion / Re: Keys and such like - can they be rebuilt from partial? on: January 04, 2018, 04:08:00 PM
When a newbie or sig-ad posts complete nonsense in either of the technical forums, I've taken to just hitting the "Report to moderator" link and typing "newbie nonsense in technical subforum" or "sig ad nonsense in technical subforum".

The moderators seem to do a pretty good job of cleaning all that crap out so that users can find useful help and intelligent conversation here.

Thanks for the advice.

My report stats currently say, “You have reported 144 posts with 100% accuracy”.  That is counting only since 1 December 2017, when I started to actively engage with the forum.  I am trying to help clean up the trash.

Yes, the mods do an heroic job.  In Meta, I have repeatedly likened their task to “emptying a landfill with a spoon—while the garbage trucks keep rolling in”.  I appreciate their efforts.

Note, that I don't report someone that appears to be trying to understand and has just been mislead up until now.  It's those that are making ridiculous claims and giving horrible advice that don't belong here.

It's not enough to just ignore the trolls.  Those that are trying to learn are likely to be mislead by them.  We've got to actively work to get rid of their nonsense.

Also note, that I occasionally find it useful to engage with certain trolls, as it gives me an opportunity to point out to EVERYONE else that reads the thread exactly why their words are nonsense and their claims are false.  My hope is that as others search the internet looking for information on misleading things they've heard, they may stumble across the "conversation with a troll" and become enlightened to the truth.

The question is, where should the line be drawn?  I generally applaud this forum’s policy of erring to the side of letting people express their opinions freely.  However, forums dissolve in noise when it is not required that opinions be at least moderately intelligent and plausibly well-expressed.

When considering horrible advice, linking to a trojan coin-stealer download is definitely over the line.  But what about when somebody advocates “brainwallets”?  I have seen you and gmaxwell respond to that with devastating efficacy!  Per what you say, the discussion must be had such that newbies can see the argument, and learn why brainwallets are an unequivocally bad idea.  Shilling for BCH?  That’s bad advice, insofar as it misleads newbies to a fraudulent fake Bitcoin; and it is simply offtopic on a Bitcoin forum.  In Meta, I have joined those (unsuccessfully) advocating that BCH shilling should be delete-on-sight.  (Lauda also had a good idea of negative-trusting BCH shills, which I would do if my trust rating carried any weight.)  The babble of “bitfools”?  That’s a tough call.  Bizarre, essentially substance-free nonsense does not belong on a technical discussion forum.  But if it is here, then somebody does need to step up and point out the stupidity—without any attempt to soften and sugar-coat the response with undeserved niceness.

Your response above looks like one of those opportunities.

Thanks.  I aim to raise the S/N ratio and not lower it, though sometimes I will flame away on a stupid thread which anyway refuses to die.  I do hope that the educational value of my post here exceeded the problems inherent in replying substantively to a troll, rather than ignoring it or brushing it off with a one-line “you’re an idiot—100% incorrect” reply.
2274  Bitcoin / Development & Technical Discussion / Re: Keys and such like - can they be rebuilt from partial? on: January 04, 2018, 02:42:06 PM
I've seen multiple threads in the past 24 hours where bitfools has shown up spouting nonsense as if he knows what he's talking about.

At first I thought he might just be misinformed and trying to be helpful.  I've come to realize that he's probably a troll that is knowingly intentionally trying to spread fear by using a bunch of familliar sounding words strung together in ways that don't make any sense to anyone that actually understands, but which sound scary to anyone that doesn't understand.

Thanks for the tip.  Well, I suppose that IHBT.  I’ve been working to cultivate the habit of pausing when I see something inexplicably ridiculous, and glancing through post history before I hit the “reply” button.  I will try to do better with that in the future.
2275  Bitcoin / Bitcoin Technical Support / Re: Best security measures for a computer with pirated software? on: January 04, 2018, 02:33:31 PM
I doubt you can find a lot of computers who have 100% legit software installed,

Untrue.  All of my computers have only “100% legit” software installed, because all of my computers run 100% open-source.

Not that I give a damn about copyrights for my personal usage.  I simply refuse to touch any software as for which I cannot read and modify the source code.  And, yes:  I am one of the few people who actually uses the source, rather than only navel-gazing and pontificating about it.  In practical use, having the full sources available has saved me from many problems which would otherwise have left me helpless.  (I also scrupulously observe copyrights/licenses for any code I build upon, so as to not cause trouble for other people who use my code.)
2276  Bitcoin / Development & Technical Discussion / Re: Keys and such like - can they be rebuilt from partial? on: January 04, 2018, 02:14:38 PM
“bitfools”, username checks out.  You have no idea what you are talking about.

I don’t have a problem with newbies and non-experts who simply lack knowledge.  Nobody is omnicient.  But I have a big problem with fools who spout off stuff and nonsense self-evidently made up on the spot, and pass that off as “knowledge”.  If you don’t know, then say you don’t know—or shut up.  Each and every conclusion in your post was substantially incorrect.

Well are you talking key like a BIT-INTEGER, or a seed 'in hex' or 'english'??

It really depends what you mean??

No, it doesn’t.  Hex strings are only alternative representations of a binary value.  BIP 39 mnemonic phrases are also an encoding of a binary value (although that value is not used directly to create the binary seed).  In all these cases, they represent large integers.

First step, take a step back and think about how this stuff works.

Seed is just that it feeds the box that generates a 'key', a key is just a BIG-NUMBER, it might have 70 base-10 digits, lets take a big number,

In Bitcoin, private keys are 256 bits.  2256 ≈ 1.16×1077; therefore, 256-bit numbers written in decimal require up to 78 digits.  Valid values for a Bitcoin private key include those from 0x1 (decimal 1; 1 digit) to 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140.  If I did not make a dumb mistake, in decimal that latter equals 115792089237316195423570985008687907852837564279074904382606316063022768341312.  That number has 78 digits; count them.

502800 which might be the current block number of bitcoin, the 502 will call the big-endian, the 800 the little endian, if your key is 502800, and you give me the first 502xxx then I only got to run from 1 to 800 through my 'crack box' that tests every address known for every  private-key in that range to match one of your addresses, super easy.

If you give me 800, it might take a super long time to 'guess' your address.

How the hell is the block number relevant to this discussion?  No keys or address values are ever generated from the block number.  Moreover, half the digits of a value are half the digits; it makes no difference whether it is the first half or the last half.  To try all combinations of 502xxx requires 1000 guesses, 000–999; to check all combinations from xxx800 also requires 1000 guesses, 000–999.  (And if bruteforcing random values, on average you will only need to try 50% before you hit the right one.)

On the same principle, if you have half the bits of a 256-bit private key, it does not matter whether it be the first half, the last half, or some part in between (just as long as you know the offset).

Now lets get real, your private key is normally seen as HEX or WIF, but in real when the work is done its a base ten number 1328921839L

Say what?  Hexadecimal (base16) values, and also the base58 values in WIF, only encode values which the computer decodes and handles in binary (base2, bits).

WRT to your 'word' seed, a seed can be 12 random words that are hashed 2,000 times and a 64 char-random hex number is generated, the hashing isn't of any order so it doesn't help to know any part of your hash, on the other hand you give me the seed 'dog cat fish xxxx' where xxxx is what your forgot then I can run a dictionary on that  and hash all possible combo's until I generate a priv-key that hits your addresses.

...

Most of what ppl see in BTC is hex 'hashed' data, but when you talk key or seed then normally your talking the real deal, most dev's on BTC to prefer to hide this stuff from the user on theory he's too stupid to be trusted with his own data,

Your question about 1/2

say your seed is

'dog cat fish horse mule monkey fudge poop' [ who care 6,8,12,18, or 24 words ]

even if I have just 1 or 2 of these words, and I know your ALGO ( I know which wallet you used, then I can crack your private-key super quick )

No, you cannot bruteforce 10–23 words of a BIP39 passphrase “super quick”.  It does not matter if you know the “algo”.  The “ALGO” is secure even if you know it.  If you know “just 1 or 2” words, then the work required to bruteforce the rest will range from 2110 to 2253.  There is nothing “super quick” about that!

Now, in the spirit of OP’s original question about knowing half the desired value:

Each word of a BIP 39 seed encodes 11 bits of randomness—except for the last word, which contains the lowest-orer bits of randomness plus a checksum value.  If you know the first 6 words of a 12-word seed, that means you know 66 bits of a 128-bit random value—slightly more than half.  Bruteforcing the rest will require 262 work (128 - 66 = 62).  That can certainly be done by those with powerful compute clusters or through distributed computing; but it is not a task which could be considered “super quick”.

If you know the first 12 words of a 24-word seed, that means you know 12*11 = 132 bits of a 256-bit random value.  Bruteforcing the rest would require 2124 work, which is infeasible even with a supercomputer.

I have thus far ignored the checksum bits.  In a 24-word phrase, all 24 words together represent a 264-bit value representing 256 bits of randomness, plus an 8-bit checksum; a 12-word seed represents 128 bits of randomness plus a 4-bit checksum.  By “exploiting” the checksum to discard values which do not match, you effectually remove the checksum; thus you can avoid running the results through 2048-iteration PBKDF2-SHA512, followed by the further hashing and EC maths required to generate addresses to check against.  I know I have not explained this well—I simply note it parenthetically, so as to not forget the checksum.  It’s not really relevant to this discussion.

By the way, this makes no sense whatsoever:  “Most of what ppl see in BTC is hex 'hashed' data, but when you talk key or seed then normally your talking the real deal, most dev's on BTC to prefer to hide this stuff from the user on theory he's too stupid to be trusted with his own data,”  Well, you are too stupid to be trusted with anything.
2277  Bitcoin / Development & Technical Discussion / Re: easyseed(1) secure, multilanguage BIP 39 mnemonic seed phrase generator on: January 04, 2018, 01:05:15 PM
<1> It remeber me vaguely on some debate while the implementation of UTF-8 ( Ken Thompson and Rob Pike ) maybe there are some valuable lessons in computing history to remember...

That’s funny.  UTF-8 is my pet analogy for Segwit; I have been intending to post about this.  UTF-8 is a brilliant, elegant hack which expands chars [:blocks] from 1 to 4 [:million] bytes, while maintaining backward compatibility with old-style 1-byte ASCII.  It has a theoretical upper limit of a 32-bit codespace (with 6 bytes), but we really get a 21-bit codespace.

Sorry, Core:  Segwit is not as awe-inspiring as UTF-8.  UTF-8 is one of my favourite all-time most brilliant hacks ever.  But Segwit deserves to be compared.

IIRC, Pike (or was it Thompson?) sketched the original UTF-8 spec on a restaurant napkin.

<2> Regards to Bech32 I am trying to compile it on Visual Studio 2017 community edition

bech32 compilation/porting discussion is continued on its thread.  The MSVC compile should mostly but not entirely work, I think.

As for easyseed:  In addition to the POSIX getopt(3) interface and BSD-style <err.h> (also available on Linux), easyseed needs random numbers.  It read(2)s off /dev/urandom.  So it would need a suitable replacement from Microsoft CryptoAPI/CNG.  A quick search reveals CryptGenRandom() or BCryptGenRandom()?  If you use Windows Vista (and others?), just make sure you don’t inadvertently get bits from Dual_EC_DRBG. <g>
2278  Bitcoin / Development & Technical Discussion / Re: bech32(1) for encoding/decoding of Bech32 strings & “Bravo Charlie” Addresses on: January 04, 2018, 01:00:19 PM
<2> Regards to Bech32 I am trying to compile it on Visual Studio 2017 community edition using c +1+(https://i.imgur.com/yo5J4Q6.jpg jargon ... hang on (I am running out time) going to ed; this post again ... So I am not sure if it going to compile or not ...since there are some barvarian char set and maybe I only will see the out put at Oktoberfest. (pls relax this is a joke, when we'serious we ARE serious)

I think that this should probably work, mostly.  For its “user interface”, the utility uses POSIX getopt(3) functionality, and also the BSD-style <err.h> (also available on Linux).  I don’t know to deal with that on Windows.  Otherwise, it is just STDC.

I myself can’t test MSVC compilation; for I have no Windows in my house.  Please let me know what results you get.

Should there be indicators of demand, I may try to produce Windows binaries with mingw. 

If you need to replace anything with code from WIN32, I strongly suggest that you #define WIN32_LEAN_AND_MEAN.  I seem to vaguely also remember some define for Unicode, but I don’t remember what it is.  If somebody comes up with Windows/MSVC compat code, I may try to abstract that into a separate file.  I will not clutter main files with #ifdefed Windows code, or Windows “decorations”; I was recently trying to audit a simple cross-platform library where every function is “decorated” with DLLEXPORT, and that junk makes code unreadable.
2279  Bitcoin / Development & Technical Discussion / Re: Quantum Computer vs Bitcoin on: January 03, 2018, 06:09:56 PM
Nothing is impossible, though.

If nothing is impossible, then "everything is impossible" is possible, in which case, nothing is possible.

That paradox hit me faster than the speed of light; and my Quantum FUD® got entangled in the superposition of impossibilities.


(@Vigme86, I began writing you a reply earlier; may do later, time permitting.  Your setup sounds decent; good luck with your long-term holding.)
2280  Other / Meta / Re: Moving to Cloudflare on: January 03, 2018, 03:42:36 AM
[Edit again:  Raize, that was the post of the thread.  I’d intended to reply before, to simply say:  Well said.]

This blocked a post.  I will try again, and edit if it’s still blocked.

Edit:  This is persistently blocking a particular post.  It is a very long post, which I spent much time writing in a text editor.  It contains a modest snippet of C code in BBcode code tags.  Other than that, I cannot imagine what trigger this is hitting.

Pages: « 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [114] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!