Reading assignment: Hashing

  1. SHA-256

  2. There are 2^128 different possibilities which is a ridiculously large number that would take too much time/money/energy.

1-SHA256
2-It is very difficult (given various Hash Levels) to find the input when only given an output.

Homework

  1. SHA25 - Secure Hashing Algorithm 256
    2.because statistically the time it would take to crack it is so long, that it does not matter. There was not yet a collusion in hash(same output with different input data),plus 10 min block time and auto adjusting difficulty makes it mathematically almost impenetrable(at least not in a feasible(convenient) time frame).

Please tell me if i understood it wrong.

1, SHA 256.
2, the solution to solve what the inputs are is contained in such a large pool of possibles it is infeasible to do so.

  1. SHA-256, is currently used by Bitcoin.

  2. It is infeasable because it would take so many guesses (brute force method) by computers that the time required makes the possibility of guessing the input from the hash value almost non exsistant.

  1. sha-256

  2. there are so many possibilities that by the time your brute force got the answer you would most likely have moved on from this life.

1 Like
  1. SHA-256
  2. The enormity of the number combinations makes it mathematically infeasible to brute force - which was my question, so good to know!!
  1. SHA-256
  2. It is almost impossible to use brute-force because you would have to guess the input to see if the resulting hash matches the target hash. The time it would take to accomplish this task is astronomical.
  1. It called SHA -256
  2. It will take an astronomical number of possibilities to find the right option.
  1. What is the hashing algorithm called used in Bitcoin?
    SHA-256

  2. Why is this hashing algorithm really hard (almost impossible) to brute-force?

The total number of different possibilities is huge (2^256) and basically you would need to guess the original input, which makes brute force cracking of this algorithm infeasible in lifetime of single user

SHA-256

The hashing algorithm is almost impossible to to determine. It would take lifetimes to randomly guess

  1. SHA-256

    1. Preimage Resistance - It is virtually impossible to find any input that hashes to a specific output. (Given H(A), it is infeasible to determine A.) 2) Collision Resistance - It is infeasible to find two inputs that hash to the same output. Even with the birthday paradox, the possibilities of the time and computational power needed to try and brute-force SHA-256 is highly improbable. 3) Puzzle Friendly: “For every output, “Y”, if k is chosen from a distribution with high min-entropy, it is infeasible to find an input “x” such that H (k|x)=Y.” The distribution from which the value is chosen is so enormous that choosing a random matching value is highly unlikely. And in addition to the computation of the hash, a nonce is also added, making brute-force even more improbable.
  1. SHA-256
  2. High Pre-Image resistance makes it unfeasible to determine the input based upon the output.

Not an answer to the homework, but a question based on the homework reading – Can anyone post a better explanation of the Merkle tree? In the reading, the author mentions that the merkle tree can be traversed very easily to figure out if the data is in one of the leaves. However, I’m not sure how you can figure out how to traverse the hashed branches.

In that context it means you can follow the trail In a particular branch to the leaf node to verify.
Check this ancient video of ivan about The merkle tree:
https://youtu.be/VkWiTvPnTcY

another cool video (in dept)
https://youtu.be/gUwXCt1qkBU

If you still have questions don’t hesitate to ask them

1 Like

Thank you for the links! I have to be honest here and say that Ivan’s explanation was lacking depth of information and was a bit too high level and hand-wavy for me. I happened to find CRI’s video (which you also linked) and thought it was much better because of the code examples, but at the end where you want to understand how the merkle root is used to validate a particular transaction, it fell a bit flat.

For others that are looking for another explanation, which if correct, really completes the puzzle, I recommend this video: https://www.youtube.com/watch?v=fpAxfVWXjds

In summary, given a transaction, or more generally a piece from a larger block of data, you can validate that the data is actually part of the block by using the Merkle root, but ONLY if you are also given the hashes of the opposing branches as you traverse the tree from the leaf to the root. If this video explains it correctly, now it makes sense to me. :slight_smile:

1 Like

SHA256. Because of pre-image resistance.

1.) SHA-256
2.) It is possible to break pre-image resistance via the brute force method, it takes so long that it doesn’t matter.

  1. SHA-256, or Secure Hashing Algorithm 256.
  2. The chances of finding the input based on the output is so difficult it’s deemed infeasible.

SHA-256
2)
If the Datasets which are beeing delt with are even slightly large, the difficulty of guessing a hash increases expotenialy, the odds of finding the right hash are so extremly low that it doesn’t make any sense to try it out.