Hashing සහ SHA-256 ඇල්ගොරිතමය: දත්ත වෙනස් කළ නොහැකි ගණිතමය මුද්රාව
අපි දැන් බලමු blockchain එකක දත්ත මකන්න හෝ වෙනස් කරන්න බැරි වෙන්න දාන ප්රධානම "ගණිතමය අගුල" වන Hashing (SHA-256) වැඩ කරන්නේ කොහොමද කියලා.
මොකක්ද මේ Hashing (SHA-256) කියන්නේ?
සරලවම කිව්වොත්, Hashing කියන්නේ ඕනෑම ප්රමාණයක දත්තයක් (වචනයක්, ලිපියක් හෝ මුළු ෆිල්ම් එකක් වුණත්) අකුරු සහ ඉලක්කම් 64කින් යුත් අද්විතීය (Unique) කේතයකට හැරවීම. එකම එක පොඩි ඩොට් “.” එකක් වගේ දත්තයක් උනත් ඉලක්කම් 64කින් පෙන්නනෙ.
බිට්කොයින් ජාලය පාවිච්චි කරන්නේ SHA-256 (Secure Hash Algorithm 256-bit) කියන ක්රමය. Hashing වලට විශේෂ ලක්ෂණ 3ක් තියෙනව.
- Deterministic: ඔබ එකම වචනය කී පාරක් හෑෂ් කළත් ලැබෙන්නේ එකම කේතයක්.
- Irreversible: ඔබට කේතය (Hash) දෙස බලා එහි තිබූ මුල් දත්තය කුමක්දැයි සෙවිය නොහැක. (මේක හරියට පළතුරු ටිකක් ජූස් කළා වගේ, ජූස් එක දෙස බලා ආපහු පළතුරු ටික වෙන් කරන්න බැහැ).
- Avalanche Effect: මුල් දත්තයේ එකම එක තිතක් හෝ කොමාවක් වෙනස් කළත්, ලැබෙන Hash කේතය සම්පූර්ණයෙන්ම වෙනස් වෙනව.
Immutable Ledger: දත්ත වෙනස් කළ නොහැකි වන්නේ ඇයි?
බ්ලොක්චේන් එකක බ්ලොක් එකිනෙක සම්බන්ධ වෙන්නේ මේ Hash හරහ. හැම බ්ලොක් එකකම තමන්ගේ දත්ත වල Hash එක වගේම, කලින් බ්ලොක් එකේ Hash එකත් (Previous Hash) ගබඩා වෙනවා. දැන් අපි හිතමු හොරෙක් මැද තියෙන බ්ලොක් එකක දත්තයක් වෙනස් කරන්න හදනවා කියලා.
- හොරා බ්ලොක් එකක "10 BTC" යන්න "5 BTC" ලෙස වෙනස් කරනව.
- ඒ සැණින් ඒ බ්ලොක් එකේ Hash කේතය සම්පූර්ණයෙන්ම වෙනස් වෙනව.
- එතකොට ඊළඟ බ්ලොක් එකේ තියෙන "Previous Hash" එකත් එක්ක මේක ගැලපෙන්නෙ නෑ.
- මේක ප්රතිඵලයක් විදියට ඒ බ්ලොක් එකට පසුව තියෙන සෑම බ්ලොක් එකක්ම අවලංගු (Invalid) වෙනව.
හොරාට මේක නිවැරදි කරන්න නම්, ඔහුට එම බ්ලොක් එකේ සිට ඉදිරියට ඇති සියලුම බ්ලොක් වල ගණිත ගැටලු (Proof of Work) නැවත විසඳීමට සිදුවෙනව. එය මුළු ජාලයේම පරිගණක බලයට වඩා වැඩි බලයක් අවශ්ය වන, ප්රායෝගිකව කළ නොහැකි වැඩකි.
දැන් ඔයාලට පැහැදිලියි ඇති,
- Decentralization නිසා පාලකයෙක් නැහැ.
- P2P නිසා හැමෝම අතර දත්ත බෙදෙනවා.
- Hashing නිසා දත්ත වෙනස් කරන්න බැහැ.
මෙන්න මේ කරුණු 3 එකතු වුණාම තමයි Blockchain Foundation එක හැදෙන්නේ. ඒ කියන්නෙ මෙතනින් Blockchain Foundation කියන sub topic එක ඉවරද?. නෑ, මේක මුල ඉදන් හරියට කියෙව්වනම් තව පල්ලෙහ තියෙන වගේ පොඩි ප්රශ්න ටිකක් මතු වෙන්න ඇති ඔයාලට.
"Immutable Ledger: The Power of SHA-256. බ්ලොක්චේන් එකක් වෙනස් කළ නොහැකි (Immutable) වන්නේ එහි ඇති ගණිතමය බැඳීම නිසාය. SHA-256 ඇල්ගොරිතමයට අනුව, දත්තයක සිදුවන ඉතා කුඩා වෙනසක් පවා එහි මුළු Hash කේතයම වෙනස් කරයි. සෑම බ්ලොක් එකක්ම තමාට පෙර ඇති බ්ලොක් එකේ Hash කේතය දරා සිටින බැවින්, එකම එක දත්තයක් වෙනස් කිරීම මුළු දාමයම (Chain) බිඳ දැමීමකි. මේ නිසා බ්ලොක්චේන් යනු ඉතිහාසය වෙනස් කළ නොහැකි, ලෝකයේ ඇති ආරක්ෂිතම දත්ත ගබඩාවයි."
🤔 එතකොට කවුද sha 256 හැදුවෙ sathoshi ද?, මේකෙන් hashing වෙන්නෙ transaction එකක data විතරද?
SHA-256 හැදුවේ කවුද, sathoshi ද?
නැහැ, SHA-256 හැදුවේ සතෝෂි නකමොටෝ නෙවෙයි. මේක නිර්මාණය කළේ ඇමරිකාවේ NSA (National Security Agency) මගින් 2001 වසරේදී. සතෝෂි කළේ දැනටමත් ලෝකයේ තිබුණු, ඉතාමත් ආරක්ෂිතයි කියලා පිළිගත්ත මේ SHA-256 තාක්ෂණය බිට්කොයින් පද්ධතියේ "ආරක්ෂක අගුල" විදිහට පාවිච්චි කරපු එකයි. ඒ කියන්නේ සතෝෂි අලුතින්ම රෝදය හැදුවේ නැහැ, තිබුණු හොඳම රෝදය අරන් සුපිරි වාහනයක් (Bitcoin) හැදුවා.
Hashing වෙන්නේ Transaction Data විතරද?
නැහැ. බ්ලොක් එකක් ඇතුළේ තියෙන හැමදේම Hashing වලට ලක් වෙනවා. බ්ලොක් එකක Hash එක හැදෙන්නේ මේ කරුණු සියල්ලම එකතු කරලා.
- Transactions : සියලුම ගනුදෙනු විස්තර (ගොඩක් වෙලාවට මේවා Merkle Tree එකක් හරහා එක ගොනුවකට ගන්නවා.
- Timestamp : බ්ලොක් එක නිර්මාණය වුණු වෙලාව.
- Previous Hash : කලින් බ්ලොක් එකේ Hash එක (මේක තමයි Chain එක හදන්නේ.)
- Nonce : මේක තමයි Miners ලා වෙනස් කරන "රහස් අංකය". Proof of Work වලදී මේක ගොඩක් වැදගත්.
මෙන්න මෙතැනයි මැජික් එක තියෙන්නේ. Block එකක Hash එක හදනකොට Previous Hash එකත් ඒකට ඇතුළත් කරන නිසා, එක බ්ලොක් එකක් තව බ්ලොක් එකකට ගණිතමය වශයෙන් ලොක් වෙනවා. අපි හිතමු ඔයා බ්ලොක් 10ක් තියෙන Chain එකක 2 වෙනි බ්ලොක් එකේ පොඩි දත්තයක් වෙනස් කළා කියල.
- වෙනි බ්ලොක් එකේ Hash එක සම්පූර්ණයෙන්ම වෙනස් වෙනවා.
- එතකොට 3 වෙනි බ්ලොක් එක ඇතුළේ ලියලා තියෙන "Previous Hash" එක (පරණ 2 වෙනි බ්ලොක් එකේ එක) දැන් අලුත් 2 වෙනි බ්ලොක් එකේ Hash එක එක්ක ගැලපෙන්නේ නැහැ.
- එතකොට 3 වෙනි බ්ලොක් එකේ Hash එකත් වෙනස් වෙනවා.
- මෙහෙම dominoes වගේ 3, 4, 5 ඉඳන් 10 වෙනි බ්ලොක් එක දක්වා මුළු Chain එකම කැඩිලා යනවා.
මේ නිසා බ්ලොක්චේන් එකක ඉතිහාසය වෙනස් කරන්න නම්, ඔයාට ඒ බ්ලොක් එකේ ඉඳන් ඉදිරියට තියෙන හැම බ්ලොක් එකක්ම ආයෙත් අලුතින් හදන්න වෙනවා. ඒකට ලෝකයේ තියෙන සුපිරි පරිගණක සියල්ලේම බලය එකතු කළත් මදි.
🤔 sha 256 කියන්නෙ මොකක් හරි software එකක් වගේ දෙයක්ද? ඇයි ඒහෙම එකක් usa වල nsa එක හදල තියෙන්නෙ?
SHA-256 කියන්නේ මෘදුකාංගයක්ද (Software)?
නැහැ, SHA-256 කියන්නේ මෘදුකාංගයක් නෙවෙයි. ඒක ගණිතමය සූත්රයක් (Mathematical Algorithm එකක්). මේක තේරුම් ගන්න ලේසිම ක්රමය තමයි "Recipe" (කෑම උයන වට්ටෝරුවක්) උදාහරණයට ගන්න එක. වට්ටෝරුව කියන්නේ නිකම්ම උපදෙස් මාලාවක් (Algorithm). ඒ වට්ටෝරුව පාවිච්චි කරලා ඕනෑම කෙනෙකුට ඕනෑම තැනක කෑම හදන්න පුළුවන්.
SHA-256 කියන්නෙත් ඒ වගේ. ඒකෙ තියෙන්නේ දත්තයක් ඇතුළත් කළාම ඒක අකුරු 64ක කේතයක් බවට පත් කරන්න ඕන පියවර මාලාවක්. ඕනෑම කෙනෙකුට තමන්ගේ කැමැති Programming Language එකක් (Python, C++, Java) පාවිච්චි කරලා මේ SHA-256 සූත්රය ක්රියාත්මක කරන්න පුළුවන්.
ඇයි USA වල NSA එක මේක හැදුවේ?
NSA (National Security Agency) කියන්නේ ඇමරිකාවේ තියෙන ඉතාම බලවත් ආරක්ෂක සහ ඔත්තු සේවා ආයතනයක්. ඔවුන් මේ වගේ ගුප්ත ලේඛන ශිල්ප ක්රම (Cryptography) හදන්නේ ප්රධාන හේතු දෙකක් නිසා:
- රජයේ දත්ත ආරක්ෂාවට : රජයේ සහ හමුදාවේ ඉතාම රහස්ය තොරතුරු සතුරන් අතට පත් නොවී "Encrypt" කරලා තබා ගැනීමට.
- දත්ත විකෘති කිරීම වැළැක්වීම (Data Integrity) : යවන ලියුමක් හෝ පණිවිඩයක් අතරමඟදී කවුරුහරි වෙනස් කරලාද කියලා පරීක්ෂා කරන්න(Hashing පාවිච්චි කරලා).
NSA එක 2001 දී මේ SHA-256 (SHA-2 පවුලට අයත්) ප්රසිද්ධියට පත් කළේ ලෝකයේ තියෙන අන්තර්ජාල ආරක්ෂණ පද්ධති වලට ප්රමිතියක් (Standard) ලබා දෙන්න.
සතෝෂි නකමොටෝ ඇයි මේකම තෝරාගත්තේ?
සතෝෂි Bitcoin හදනකොට එයාට ඕන වුණේ කවදාවත් බිඳින්න බැරි ඉතාමත් ශක්තිමත් තාක්ෂණයක්. NSA එක හැදුවාට මේක ලෝකයේ ඉන්න ලොකුම ගණිතඥයන් පවා පරීක්ෂා කරලා මේක ආරක්ෂිතයි කියලා සහතික කරලා තියෙන්නෙ. මෙකෙ තියෙන විවෘත භාවය (Open standard) නිසා ඕනෑම කෙනෙකුට මේක පාවිච්චි කරන්න අවසර තිබුණා. අදටත් ලෝකයේ බැංකු පද්ධති සහ HTTPS (අපි පාවිච්චි කරන වෙබ් අඩවි වල තියෙන අගුල) ආරක්ෂා වෙන්නේ මේ SHA-256 වැනි තාක්ෂණයන්ගෙන්. NSA එක මේක හැදුවා කියලා ඔවුන්ට Bitcoin ජාලය පාලනය කරන්න බැහැ. මොකද මේක ගණිතමය නීතියක් මිසක් ඔවුන්ට විතරක් පාලනය කළ හැකි සර්වර් එකක දුවන දෙයක් නෙවෙයි.
🤔 Sha 256 හැමෝටම open නම්. ඒකෙන් encrypt කරපුව සතුරට decrypt කරන්න බැරි ඇයි.
මේක තේරුම් ගන්න නම් අපි Hashing සහ Encryption අතර තියෙන ප්රධානම වෙනස අඳුනාගන්න ඕනේ. ගොඩක් අය හිතන්නේ මේ දෙකම එකයි කියලා, හැබැයි මේ දෙක වැඩ කරන්නේ ක්රම දෙකකට.
Hashing කියන්නේ One-Way Street එකක් (ආපසු හැරිය නොහැක).
SHA-256 කියන්නේ Encryption ක්රරමයක් නෙවෙයි, ඒක Hashing ක්රමයක්. Encryption වලදී දත්තයක් Lock කරල, ආපහු යතුරක් පාවිච්චි කරලා අරින්න (Decrypt කරන්න) පුළුවන්. Hashing වලදී වෙන්නේ දත්තය සහමුලින්ම විනාශ කරලා ඒ වෙනුවට අලුත් ඇඟිලි සලකුණක් (Fingerprint) හැදීම. ඔයා SHA-256 සූත්රය දැනගත්තා කියලා ඒක Reverse කරල අවශ්ය data ගන්න බෑ.
උදාහරණයක් : ඔයා ඇපල් ගෙඩියක් බ්ලෙන්ඩර් එකට දාලා ජූස් කරනවා (Hash එක). ලෝකෙම දන්නවා ඇපල් ජූස් හදන Recipe එක. හැබැයි ඒ Recipe එක දන්නවා කියලා කාටවත් පුළුවන්ද ඇපල් ජූස් එක ආපහු ඇපල් ගෙඩියක් කරන්න? බැහැ.
සතුරට මේක බිඳින්න බැරි ඇයි? (The Brute Force Problem)
සතුරෙක් ගාව SHA-256 සූත්රය තිබුණත්, එයාට යම් Hash එකක මුල් දත්තය හොයාගන්න තියෙන එකම ක්රමය තමයි "Brute Force" (ලෝකයේ තියෙන හැම වචනයක්ම එකින් එක Hash කර කර ගැලපෙනවද බලන එක.)
SHA-256 කේතයක තියෙන සංයෝජන (Combinations) ගණන = 2256 (115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936 මෙය ඉලක්කම් 78කින් සමන්විතය.)
මේක කොච්චර ලොකු ඉලක්කමක්ද කිව්වොත්, මුළු පෘථිවියේම තියෙන වැලි කැට ගණනටත් වඩා වැඩියි. ලෝකයේ තියෙන සුපිරිම පරිගණක ඔක්කොම එකතු කරලා මේක ගණනය කරන්න හැදුවත්, ඒකට අවුරුදු බිලියන ගණනක් ගත වෙනවා. ඒ නිසයි මේක Unbreakable කියන්නේ.
එතකොට සතුරා දත්තය කියවන්නේ කොහොමද?
සතුරාට දත්තය කියවන්න බැහැ. ඒකයි බ්ලොක්චේන් එකේ තියෙන ආරක්ෂාව. බ්ලොක්චේන් එකේ SHA-256 පාවිච්චි කරන්නේ දත්ත සඟවන්න නෙවෙයි. ඒක පාවිච්චි කරන්නේ දත්ත වෙනස් කරලා නැහැ කියලා සහතික කරන්නයි. කවුරුහරි දත්තයක් වෙනස් කළොත් Hash එක වෙනස් වෙනවා. සතුරාට SHA-256 ඕපන් වුණා කියලා, දත්තය වෙනස් නොකර ඒ Hash එකම එන විදිහට අලුත් දත්තයක් හදන්න බැහැ.
"The Mathematical Fortress: Why SHA-256 is Unbreakable. SHA-256 හි ඇති විශේෂත්වය වන්නේ එය 'One-way function' එකක් වීමයි. ඕනෑම දත්තයකින් Hash එකක් සෑදිය හැකි වුවද, Hash එක දෙස බලා මුල් දත්තය සෙවීම ගණිතමය වශයෙන් ප්රායෝගික නොවේ. මෙහි ඇති 2256 ක දැවැන්ත සංයෝජන පරාසය නිසා, කිසිදු සුපිරි පරිගණකයකට මෙය 'Brute Force' කර බිඳ දැමිය නොහැක. මේ නිසාම, NSA වැනි ආයතනයක් මෙය නිර්මාණය කළද, එහි පාලනය ගණිතමය නීති වලට යටත් වන බැවින් එය සැමවිටම විවෘත සහ ආරක්ෂිත වේ."
🤔 එතකොට encrypted කරපු තොරතුර ලබාගන්න කෙනා විතරක් මේක decrypt කරල එව්ව තොරතුරු මොනවද කියල බලන්නෙ කොහොමද ?
SHA-256 (Hashing) වලින් දත්ත "Decrypt" කරන්න බැහැ කියලා මම කිව්වනේ. එතකොට කොහොමද රහස් පණිවිඩයක් යවන්නේ?
මෙතැනදී තමයි අපි කලින් කතා කරපු Asymmetric Cryptography (Private & Public Keys) සහ Encryption කියන තාක්ෂණයන් පාවිච්චි වෙන්නේ. හිතන්න ඔයාට මට රහස් පණිවිඩයක් එවන්න ඕනේ කියලා. ඒක වෙන්නේ මෙහෙමයි.
Encryption (අගුළු දැමීම).
ඔයා මගේ Public Key එක පාවිච්චි කරලා ඔයාගේ පණිවිඩය "Encrypt" කරනවා. දැන් ඒ පණිවිඩය නිකම්ම කියවන්න බැරි කුණුහරුප ගොඩක් (Ciphertext) බවට පත් වෙනවා.
Decryption (අගුළු හැරීම).
දැන් ඒ Encrypt කරපු පණිවිඩය අන්තර්ජාලය හරහා මට එනවා. ඕනෑම කෙනෙකුට ඒක අතරමඟදී ගන්න පුළුවන් වුණත්, ඔවුන්ට ඒක කියවන්න බැහැ. ඒක කියවන්න (Decrypt කරන්න) පුළුවන් ලෝකයේ තියෙන එකම යතුර වන මගේ Private Key එක පාවිච්චි කරලා විතරයි.
බ්ලොක්චේන් එකේදී මේ දෙක පාවිච්චි වෙන්නේ කොහොමද?
බ්ලොක්චේන් එකේදී Hashing සහ Encryption දෙකම පාවිච්චි වෙන්නේ අවශ්යතා දෙකකට.
Hashing (SHA-256)
- :- කරන්නේ මොකක්ද? දත්තයක "Fingerprint" එකක් හැදීම.
- :- ඇයි පාවිච්චි කරන්නේ? දත්ත වෙනස් කරලා නැහැ කියලා සහතික කරන්න (Integrity).
Asymmetric Encryption
- :- කරන්නේ මොකක්ද? දත්තයක් අගුළු දමා අදාළ කෙනාට විතරක් කියවන්න සැලැස්වීම.
- :- ඇයි පාවිච්චි කරන්නේ? ගනුදෙනුවේ අයිතිය සහ රහස්යභාවය තහවුරු කරන්න (Security).
Hashing හරියට ලියුම් කවරයක් සීල් කරනවා වගේ. සීල් එක කැඩුවොත් හැමෝම දන්නවා කවුරුහරි ඒක බලලා කියලා. (හැබැයි සීල් එක දැක්කා කියලා ඇතුළේ තියෙන දේ කියවන්න බැහැ). Encryption හරියට ලියුම ඇතුළේ තියෙන දේ රහස් භාෂාවකින් ලියනවා වගේ. ඒ භාෂාව දන්නේ ලියුම ලබන කෙනා විතරයි.
"Integrity vs Privacy : How Cryptography Balances Both. බ්ලොක්චේන් ජාලයක ආරක්ෂාව ස්ථර දෙකකින් සමන්විත වේ. Hashing මගින් මුළු ජාලයේම දත්තවල නිවැරදිභාවය (Integrity) පවත්වා ගන්නා අතර, Asymmetric Encryption මගින් තනි පුද්ගල ගනුදෙනුවල රහස්යභාවය සහ අයිතිය (Ownership) තහවුරු කරයි. මෙම තාක්ෂණයන් දෙකේ සංකලනය නිසා බ්ලොක්චේන් එකක් එකවරම විනිවිද පෙනෙන (Transparent) මෙන්ම අතිශය ආරක්ෂිත (Secure) පද්ධතියක් බවට පත් වේ."
Comments
Post a Comment