<oembed><type>rich</type><version>1.0</version><author_name>npub18mgq58d974fufzhmctax4fllw94p0ym036ct3a27z3ltewz30xqqx763g5</author_name><author_url>https://nostr.ae/npub18mgq58d974fufzhmctax4fllw94p0ym036ct3a27z3ltewz30xqqx763g5</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-04-06&#xA;📝 Original message:A significant number of past and current cryptocurrency products&#xA;contain a JavaScript class named SecureRandom(), containing both&#xA;entropy collection and a PRNG. The entropy collection and the RNG&#xA;itself are both deficient to the degree that key material can be&#xA;recovered by a third party with medium complexity. There are a&#xA;substantial number of variations of this SecureRandom() class in&#xA;various pieces of software, some with bugs fixed, some with additional&#xA;bugs added. Products that aren&#39;t today vulnerable due to moving to&#xA;other libraries may be using old keys that have been previously&#xA;compromised by usage of SecureRandom().&#xA;&#xA;&#xA;The most common variations of the library attempts to collect entropy&#xA;from window.crypto&#39;s CSPRNG, but due to a type error in a comparison&#xA;this function is silently stepped over without failing. Entropy is&#xA;subsequently gathered from math.Random (a 48bit linear congruential&#xA;generator, seeded by the time in some browsers), and a single&#xA;execution of a medium resolution timer. In some known configurations&#xA;this system has substantially less than 48 bits of entropy.&#xA;&#xA;The core of the RNG is an implementation of RC4 (&#34;arcfour random&#34;),&#xA;and the output is often directly used for the creation of private key&#xA;material as well as cryptographic nonces for ECDSA signatures. RC4 is&#xA;publicly known to have biases of several bits, which are likely&#xA;sufficient for a lattice solver to recover a ECDSA private key given a&#xA;number of signatures. One popular Bitcoin web wallet re-initialized&#xA;the RC4 state for every signature which makes the biases bit-aligned,&#xA;but in other cases the Special K would be manifest itself over&#xA;multiple transactions.&#xA;&#xA;&#xA;Necessary action:&#xA;&#xA;   * identify and move all funds stored using SecureRandom()&#xA;&#xA;   * rotate all key material generated by, or has come into contact&#xA;     with any piece of software using SecureRandom()&#xA;&#xA;   * do not write cryptographic tools in non-type safe languages&#xA;&#xA;   * don&#39;t take the output of a CSPRNG and pass it through RC4&#xA;&#xA;-&#xA;3CJ99vSipFi9z11UdbdZWfNKjywJnY8sT8</html></oembed>