SHA-256 Algorithm and History

 
 
 
SHA-256
 
Daniel Whitaker
History of SHA-256
 
SHA-256 stands for Secure Hashing Algorithm, produces 256 bit hash
Part of the SHA-2 family of algorithms, created in 2001 by the NSA
More secure than MD5, SHA-0, and SHA-1
More secure as these algorithms have documented collisions
A collision is when two distinct inputs map to the same output
Used in cryptocurrency, Secure Sockets Layer (SSL) Certificates, and Blockchain
Example Phase 1
 
Let us walk through the SHA-256
algorithm using password as the input
 
Phase 1: Pre-process the input
1.
Convert input to binary
a.
‘p’ = 112 in ASCII
b.
In 8 bit binary 0111000
 
01110000 01100001  01110011 01110011
 01110111   01101111   01110010 01100100
 
2.
Pad the input until the length is a multiple of
512 (minus 64 bits)
a.
After we pad, our input is 448 bits
01110000 01100001  01110011  01110011 01110111  01101111
01110010
01100100 10000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
Example Phase 1
 
3.
For the last 64 bits, we take the
original input in its binary
representation and count its
length in bits
a.
‘password’ has 64 bits
b.
In binary, 64 is 01000000
  
00000000 00000000 00000000 00000000
   00000000 00000000 00000000 01000000
 
 
4.
Pre-processed input, is now 512 bits
 
01110000 01100001  01110011  01110011 01110111  01101111
01110010
01100100 10000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
01000000
Example Phase 2
 
Phase 2: Generate Hash Values
1.
  
h0 - h7 
, created by using the first 8 prime numbers
a.
h0 
 maps to 2, 
h1
 maps to 3, etc.
Each hash is created in this process:
1.
Take the square root of given prime number
2.
Take first 32 bits after the decimal
3.
Multiply the result by 2^32
4.
Convert the result to hexadecimal
 
Calculating 
h0 
Example Phase 2
 
2.
Generate 
k, 
an
 
array that stores 64 hash
values using the first 64 prime numbers
E
ach hash is calculated by the following:
1.
Take the cubic root of given prime number
2.
Take first 32 bits after the decimal
3.
Multiply the result by 2^32
4.
Convert the result to hexadecimal
Calculating 
k[0] 
 
Review of process:
Input has been pre-processed into a 512 bit number
We’ve generated 
h0 - h7
 
We’ve generated the array 
k
 
Example Phase 3
 
Phase 3: 512-bit loop
1.
For each 512-bit chunk run the
following loop:
a.
Create a new array 
w
 by
converting the 512-bit chunk
into 16 32-bit words
01110000011000010111001101110011
01110111011011110111001001100100
10000000000000000000000000000000
 
2.
Append 48 additional 32-bit words to
w
 made up of 0’s
a.
w 
now has 64 words, each word
32 bits long
3.
Perform the Modification Algorithm
on 
w
Example Phase 3
 
Example Phase 3
Example Phase 3
 
4.
Create and modify variables 
a-h 
using
the Compression and Mutation
Algorithm. The variables 
a-h
 will be
used to generate the final hash value.
Note that we’re using 
w
, which is
made up of 32-bit numbers.
h0
 is also 32 bits in binary, 8 bits in
hexadecimal
a-h
, 8 variables, 32 bits each, 256 bits
Example Phase 3
Example Phase 3 and Phase 4
5.
Modify 
h0 - h7
Phase 4: Generate the final hash
1.
Convert 
h0 - h7 
 to hexadecimal
2.
Concatenate 
h0 - h7 
to one 64-bit string
The SHA-256 hash of ‘Password’ is:
E7CF3EF4F17C3999A94F2C6F612E8A888E5B1026878E4E19398B23BD38EC221A
 
Theorem
 
 
Proof of Theorem
 
 
300 Quadrillion
(
300 X 10^15)
 
The number of SHA-256 hashes being computed 
per second 
by Bitcoin as of January
2015. In order to perform a collision attack, you would  need to calculate 2^128 hashes.
At Bitcoin’s rate, it would take roughly 3.6 X 10^13 years to complete. In comparison,
the known universe is only 13.7 X 10^9 years old.
 
Parting Thoughts
 
https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet
 
Questions?
Slide Note
Embed
Share

"SHA-256 is a secure hashing algorithm that produces 256-bit hash values and is more secure than MD5, SHA-0, and SHA-1 due to fewer collisions. Created in 2001 by the NSA, it is widely used in various applications like cryptocurrency, SSL certificates, and blockchain. This summary provides insights into the process and significance of SHA-256."

  • Cryptography
  • Secure Hashing Algorithm
  • SHA-256
  • Blockchain
  • Cybersecurity

Uploaded on May 17, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. SHA-256 Daniel Whitaker

  2. History of SHA-256 SHA-256 stands for Secure Hashing Algorithm, produces 256 bit hash Part of the SHA-2 family of algorithms, created in 2001 by the NSA More secure than MD5, SHA-0, and SHA-1 More secure as these algorithms have documented collisions A collision is when two distinct inputs map to the same output Used in cryptocurrency, Secure Sockets Layer (SSL) Certificates, and Blockchain

  3. Example Phase 1 Let us walk through the SHA-256 algorithm using password as the input 2. Pad the input until the length is a multiple of 512 (minus 64 bits) a. After we pad, our input is 448 bits 01110000 01100001 01110011 01110011 01110111 01101111 01110010 01100100 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Phase 1: Pre Phase 1: Pre- -process the input process the input 1. Convert input to binary a. p = 112 in ASCII b. In 8 bit binary 0111000 01110000 01100001 01110011 01110011 01110111 01101111 01110010 01100100

  4. Example Phase 1 3. For the last 64 bits, we take the original input in its binary representation and count its length in bits a. password has 64 bits b. In binary, 64 is 01000000 4. Pre-processed input, is now 512 bits 01110000 01100001 01110011 01110011 01110111 01101111 01110010 01100100 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000

  5. Example Phase 2 Calculating h0 Phase 2: Generate Hash Values Phase 2: Generate Hash Values 1. h0 - h7 , created by using the first 8 prime numbers a. h0 maps to 2, h1 maps to 3, etc. Each hash is created in this process: 1. 2. 3. 4. Take the square root of given prime number Take first 32 bits after the decimal Multiply the result by 2^32 Convert the result to hexadecimal

  6. Example Phase 2 2. Generate k, an array that stores 64 hash values using the first 64 prime numbers Calculating k[0] Each hash is calculated by the following: Take the cubic root of given prime number Take first 32 bits after the decimal Multiply the result by 2^32 Convert the result to hexadecimal 1. 2. 3. 4. Review of process: Input has been pre-processed into a 512 bit number We ve generated h0 - h7 We ve generated the array k

  7. Example Phase 3 Phase 3: 512 Phase 3: 512- -bit loop bit loop 2. Append 48 additional 32-bit words to w made up of 0 s a. w now has 64 words, each word 32 bits long 3. Perform the Modification Algorithm on w 1. For each 512-bit chunk run the following loop: a. Create a new array w by converting the 512-bit chunk into 16 32-bit words 01110000011000010111001101110011 01110111011011110111001001100100 10000000000000000000000000000000

  8. Example Phase 3

  9. Example Phase 3

  10. Example Phase 3 4. Create and modify variables a-h using the Compression and Mutation Algorithm. The variables a-h will be used to generate the final hash value. Note that we re using w, which is made up of 32-bit numbers. h0 is also 32 bits in binary, 8 bits in hexadecimal a-h, 8 variables, 32 bits each, 256 bits

  11. Example Phase 3

  12. Example Phase 3 and Phase 4 5. Modify h0 - h7 Phase 4: Generate the final hash Phase 4: Generate the final hash 1. 2. Concatenate h0 - h7 to one 64-bit string Convert h0 - h7 to hexadecimal The SHA-256 hash of Password is: E7CF3EF4F17C3999A94F2C6F612E8A888E5B1026878E4E19398B23BD38EC221A

  13. Theorem

  14. Proof of Theorem

  15. Parting Thoughts 300 Quadrillion (300 X 10^15) The number of SHA-256 hashes being computed per second 2015. In order to perform a collision attack, you would need to calculate 2^128 hashes. At Bitcoin s rate, it would take roughly 3.6 X 10^13 years to complete. In comparison, the known universe is only 13.7 X 10^9 years old. per second by Bitcoin as of January https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet

  16. Questions?

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#