ക്രിപ്റ്റോഗ്രഫിയും ഹാഷിംഗും – ഭാഗം മൂന്ന്

ബിറ്റ്കോയിനെ നമ്മള്‍ വിളിക്കുന്നത് ക്രിപ്റ്റോ കറൻസി എന്നാണല്ലോ. ആ ഭാഗം വിശദീകരിക്കുകയാണ് ഈ ലേഖനത്തില്‍. എൻക്രിപ്ഷൻ സാങ്കേതികവിദ്യയാണ് ബിറ്റ്കോയിൻ കൈമാറ്റത്തിന് ഉപയോഗിക്കുന്നത്. ആദ്യം എങ്ങനെയാണ് ഒരു ബിറ്റ്കോയിൻ ഇടപാട് നടക്കുന്നത് എന്ന് നോക്കാം. ബിറ്റ്കോയിൻ ഒരു ഡിജിറ്റല്‍ കറൻസിയാണല്ലോ. ഡിജിറ്റല്‍ ഫയലുകള്‍ക്കൊരു കുഴപ്പമുണ്ട്. എത്ര കോപ്പി വേണമെങ്കിലും ഉണ്ടാക്കാം. പക്ഷേ പണം അങ്ങനെ കോപ്പിയുണ്ടാക്കിയാല്‍ പണത്തിന്റെ ആവശ്യം നടക്കാതാവില്ലേ. അത് തടയാൻ കൂടെ ക്രിപ്റ്റോഗ്രഫി ഉപയോഗിക്കുന്നു. ബിറ്റ്കോയിൻ ഉപോഗിച്ച് ഇടപാടുകള്‍ നടത്തണമെങ്കില്‍ നമുക്ക് ബിറ്റ്കോയിൻ എവിടെയെങ്കിലും ശേഖരിച്ചുവെക്കണമല്ലോ.. കറൻസി നമ്മള്‍ സാധാരണ പേഴ്സിലോ പോക്കറ്റിലോ സൂക്ഷിക്കും. അതുപോലെ ബിറ്റ്കോയിൻ സൂക്ഷിക്കുന്ന സ്ഥലത്തെ നമ്മള്‍ വാലറ്റ് എന്ന് വിളിക്കുന്നു. ഇത് നമ്മുടെ കമ്പ്യൂട്ടറോ മൊബൈലോ അല്ലെങ്കില്‍ ഓണ്‍ലൈൻ സംവിധാനങ്ങളോ ആകാം. വാലറ്റുകള്‍ നിര്‍മിക്കുന്നതിനെക്കുറിച്ച് തുടര്‍ ലേഖനത്തില്‍ വിശദീകരിക്കാം. നമ്മുടെ ബിറ്റ്കോയിൻ വാലറ്റ് ഉപയോഗിച്ചാണ് ബിറ്റ്കോയിൻ സ്വീകരിക്കുന്നതും നല്‍കുന്നതും. ഒരു വാലറ്റിന് ഒരു അഡ്രസ്സ് ഉണ്ടായിരിക്കും. ഈ അഡ്രസ്സ് ഉപയോഗിച്ചാണ് പണം നല്‍കാനാവുക. 1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq ഇത് ഒരു ബിറ്റ്കോയിൻ അഡ്രസ് ആണ്.

എന്താണ് എൻക്രിപ്ഷൻ ?

സന്ദേശങ്ങള്‍ കൈമാറ്റം ചെയ്യുമ്പോള്‍ ഇടനിലക്കാര്‍ക്ക് ആര്‍ക്കെങ്കിലും അവ ലഭിച്ചാല്‍ പോലും അര്‍ഥപൂര്‍ണമായ ഒന്നും ലഭിക്കാതെ തീര്‍ത്തും സ്വകാര്യമായി സന്ദേശം കൈമാറാനുപയോഗിക്കുന്ന ടെക്നോളജിയാണ് എന്‍ക്രിപ്ഷന്‍.  ടെക്നോളജി ഇത്ര വികസിക്കാത്ത കാലത്തും കത്തുകളിലൂടെയും എന്‍ക്രിഷ്ന്‍ ഉപയോഗിച്ചിരുന്നു. A എന്ന അക്ഷരത്തിന് പകരം രണ്ട് അക്ഷരം നീക്കിയുള്ള അക്ഷരം എഴുതി ഒരു വാക്യം എഴുതിയാല്‍ ഒറ്റനോട്ടത്തില്‍ തിരിച്ചറിയാനാവില്ലല്ലോ. അതൊരു എന്‍ക്രിപ്ഷനാണ്. അത്തരത്തില്‍ എൻക്രിപ്റ്റ് ചെയ്താല്‍ hello എന്നത് jgnnq എന്നായി മാറും. ഇവിടെ രണ്ട് അക്ഷരങ്ങളാണ് നീക്കി എഴുതിയിരിക്കുന്നത്. ഇതിലെ കീ ആണ് 2 എന്നത്. കീ അറിഞ്ഞാല്‍ അത്രയും അക്ഷരങ്ങള്‍ പുറകിലേക്കാക്കി hello എന്ന് കണ്ടുപിടിക്കാം. https://www.xarg.org/tools/caesar-cipher/ എന്ന വെബ്സൈറ്റില്‍ പോയി നിങ്ങള്‍ക്ക് കീകള്‍ മാറ്റി ഇത് പരീക്ഷിച്ച് നോക്കാവുന്നതാണ്. ലോകമഹായുദ്ധ കാലത്ത് ഇത്തരം എൻക്രിപ്ഷൻ ഉപയോഗിച്ചാണ് സന്ദേശങ്ങള്‍ കൈമാറിയിരുന്നത്. സന്ദേശം അടക്കാനും തുറക്കാനും വ്യത്യസ്ത കീകള്‍ ഉപയോഗിക്കുന്ന സാങ്കേതികവിദ്യയാണ് പ്രൈവറ്റ് കീ പബ്ലിക് കീ എൻക്രിപ്ഷൻ. ഇവിടെ സന്ദേശം എന്‍ക്രിപ്റ്റ് ചെയ്യുന്നത് ഒരു കീ ഉപയോഗിച്ചുകൊണ്ടും തുറക്കുന്നത് മറ്റൊരു കീ ഉപയോഗിച്ചുകൊണ്ടും ആയിരിക്കും. ഇതിൽ സന്ദേശങ്ങൾ എൻക്രിപ്റ്റ് ചെയ്യാനുപയോഗിക്കുന്ന കീയെ രണ്ടായി മുറിച്ച് പബ്ലിക് കീ എന്നും പ്രൈവറ്റ് കീ എന്നും വിളിയ്ക്കുന്നു. ഇവിടെ പബ്ലിക് കീയും പ്രൈവറ്റ് കീയും ഒരു ഗണിത സമവാക്യത്തിലൂടെ പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്നു. ഒരു ഉദാഹരണത്തിലൂടെ വ്യക്തമാക്കാം. പബ്ലിക് കീ ഇൻഫ്രാസ്റ്റ്രക്ചർ ഉപയോഗിയ്ക്കുന്നവരുടെ കയ്യിൽ രണ്ട് കീകൾ ഉണ്ടായിരിക്കും ഒരു പ്രൈവറ്റ് കീ (ഇത് രഹസ്യമാണ്) രണ്ടാമത്തേത് പബ്ലിക് കീ (ഇത് രഹസ്യ സ്വഭാവമില്ലാത്തതും പരസ്യവുമാണ്). ഇതിൽ പബ്ലിക് കീ എൻക്രിപ്റ്റ് ചെയ്യാനും പ്രൈവറ്റ് കീ ഡീക്രിപ്റ്റ് ചെയ്യാനും ഉപയോഗിയ്ക്കുന്നു. പ്രധാനപ്പെട്ട കാര്യം പബ്ലിക് കീ ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്ത സന്ദേശം പ്രൈവറ്റ് കീ ഉപയോഗിച്ച് മാത്രമേ തുറക്കാനാകൂ എന്നതാണ്. എനിക്കൊരാള്‍ എന്റെ പബ്ലിക് കീ വെച്ച് ഒരു സന്ദേശം എൻക്രിപ്റ്റ് ചെയ്തിട്ടുണ്ടെങ്കില്‍ എന്റെ പ്രൈവറ്റ് കീ ഉപയോഗിച്ച് മാത്രമേ അതിനെ യഥാര്‍ഥ സന്ദേശമാക്കി വായിക്കാനാകൂ. ചുരുക്കത്തില്‍ എനിക്ക് മാത്രമേ ആ സന്ദേശം വായിക്കാനാകൂ എന്നര്‍ഥം. ഇടയിലുള്ള ആര്‍ക്ക് കിട്ടിയാലും അര്‍ഥമില്ലാത്ത ചില അക്ഷരങ്ങള്‍ മാത്രമായിരിക്കും ആ സന്ദേശം. ‍

‍‍‍ഡിജിറ്റല്‍ സിഗ്നേച്ചര്‍

ഈ എൻക്രിപ്ഷന്റെ വിപരീതസംവിധാനമാണ് ഡിജിറ്റല്‍ സഗ്നേച്ചര്‍. ഇവിടെ നമ്മുടെ  പ്രൈവറ്റ് കീ ഉപയോഗിച്ച് ഒരു സന്ദേശത്തെ എൻക്രിപ്റ്റ് ചെയ്യുന്നു. അപ്പോള്‍ പിന്നെ നമ്മുടെ പബ്ലിക് കീകൊണ്ട് ആര്‍ക്കും അത് ഡീക്രിപ്റ്റ് ചെയ്യാമല്ലോ. ഒരുകാര്യം ശ്രദ്ധിക്കുക ലോകത്ത് നമ്മുടെ പബ്ലിക് കീ കൊണ്ട് മാത്രമേ ആ സന്ദേശം ഡീക്രിപ്റ്റ് ചെയ്യാനാകൂ. അങ്ങനെ നമ്മുടെ പബ്ലിക് കീ കൊണ്ട് തുറക്കാനായാല്‍ അത് നമ്മുടെ പ്രൈറ്റ് കീ കൊണ്ടാണ് ലോക്ക് ചെയ്തത് എന്നുറപ്പിക്കാം. അങ്ങനെ അത് ഒരു ഒപ്പായി പ്രവര്‍ത്തിക്കുന്നു.

ബിറ്റ്കോയിനും എൻക്രിപ്ഷനും

ബിറ്റ്കോയിൻ വാലറ്റിനെക്കുറിച്ചും അഡ്രസ്സിനെക്കുറിച്ചും നേരത്തെ സൂചിപ്പിച്ചല്ലോ. ഈ വാലറ്റ് പ്രവര്‍ത്തിക്കുന്നത് പബ്ലിക് കീയും പ്രൈവറ്റ് കീയും ഉപയോഗിച്ചാണ്. ഒരു വാലറ്റിന് ഈ രണ്ട് കീകളും ഉണ്ടായിരിക്കും. നേരത്തേ പറഞ്ഞതുപോലത്തന്നെ പ്രൈവറ്റ് കീ നിങ്ങള്‍ രഹസ്യമാക്കി വെക്കണം. പബ്ലിക് കീ ആര്‍ക്ക് വേണമെങ്കിലും നല്‍കാം. പ്രൈവറ്റ് കീ ഉപയോഗിച്ചാണ് നിങ്ങള്‍ പണം മറ്റൊരാള്‍ക്ക് അക്കുന്നത്. അതായത് ഡിജിറ്റല്‍ സിഗ്നേച്ചര്‍ നടത്തിയാണ് നിങ്ങള്‍ ഇത്ര ബിറ്റ് കോയിൻ മറ്റൊരാള്‍ക്ക് കൈമാറി എന്ന വിവരം പങ്കുവെക്കുന്നത്. നിങ്ങളുടെ പബ്ലിക് കീ ഉപയോഗിച്ചുകൊണ്ട് മറ്റൊരാള്‍ക്ക് ആ ഇടപാട് പരിശോധിച്ച് ഉറപ്പുവരുത്താനും സാധിക്കും. പ്രൈവറ്റ് കീ നഷ്ടപ്പെടുക എന്ന് വെച്ചാല്‍ നിങ്ങളുടെ ബിറ്റ്കോയിനുകളും നഷ്ടപ്പെട്ടു എന്നാണ് അര്‍ഥം.

ബിറ്റ്കോയിൻ വാലറ്റ് ഒരു സുതാര്യമായ സംവിധാനമാണ്. ഒരു വാലറ്റില്‍ എത്ര ബിറ്റ്കോയിനുകളുണ്ടെന്ന് ആര്‍ക്കും കാണാനാവും. പബ്ലിക് കീ ഉപയോഗിച്ച് ആര്‍ക്കും അതിലേക്ക് പണം അയക്കാം. എന്നാല്‍ അതില്‍ നിന്നും പണം കൊടുക്കണമെങ്കില്‍ പ്രൈവറ്റ് കീ ഉപയോഗിച്ച് മാത്രമേ പറ്റൂൂ. ഹോട്ടലുകളിലും മറ്റും സ്ഥാപിച്ച സംഭാവനപ്പെട്ടി കണ്ടിട്ടില്ലേ. ആര്‍ക്കും അതിലേക്ക് പണമിടാം. അതിലുള്ള പണം പുറത്തുള്ളവര്‍ക്ക് നോക്കിയാല്‍ കാണാം. എന്നാല്‍ എടുക്കാൻ ഉടമസ്ഥന് മാത്രമേ പറ്റൂ. അത്തരമൊരു സംവിധാനമാണ് ബിറ്റ്കോയിൻ വാലറ്റ്. അത് പ്രവര്‍ത്തിക്കുന്ന ടെക്നോളജിയുടെ പേരാണ് ക്രിപ്റ്റോഗ്രഫി. ഇപ്പോള്‍ എന്തുകൊണ്ടാണ് ബിറ്റ്കോയിനെ ക്രിപ്റ്റോ കറൻസി എന്ന് വിളിക്കുന്നത് എന്ന് വ്യക്തമായില്ലേ ?

ഹാഷിംഗ്

ക്രിപ്റ്റോ കറൻസിയില്‍ വളരെ പ്രധാനപ്പെട്ടതാണ് ഹാഷിംഗ്. ഇതും ക്രിപ്റ്റോഗ്രഫിയുമായി ബന്ധപ്പെട്ട് കിടക്കുന്നതാണ്. ചുരുക്കിപ്പറഞ്ഞാല്‍ ഒരു ഡാറ്റ കൊടുത്താല്‍ നിശ്ചിത വലിപ്പത്തിലുള്ള ഒരു ഔട്ട്പുട്ട് നല്‍കുന്ന സംവിധാനമാണത്. നിരവധി ഹാഷിംഗ് ഫംഗ്ഷനുകള്‍ ലഭ്യമാണ്. ബിറ്റ്കോയിൻ ഉപയോഗിക്കുന്നത് SHA 256 എന്ന അല്‍ഗോരിതമാണ്. നമ്മള്‍ എന്ത് ഡാറ്റ ഇൻപുട്ട് ആയികൊടുത്താലും SHA256 അത് 256 ബിറ്റ് (32 Byte) ഉള്ള ഒരു ഔട്ട്പുട്ട് നല്‍കും. ഉദാഹരണത്തിന് Hi എന്ന വാക്കിന്റെ ഹാഷ്  ആണ് 3639efcd08abb273b1619e82e78c29a7df02c1051b1820e99fc395dcaa3326b8 എന്നത്. Hi ക്ക് പകരം പതിനായിരം വാക്കുകളുള്ള ഡാറ്റയാണ് കൊടുക്കുന്നതെങ്കിലും നമുക്ക് ലഭിക്കുക ഏത് 32byte ഉള്ള മറ്റൊരു വാക്കായിരിക്കും.

ഹാഷിംഗിന്റെ സവിശേഷതകള്‍

ഒരേ ഔട്ട്പുട്ട്

ഓരോ ഡാറ്റ കൊടുത്താലും വ്യത്യസ്ത ഔട്ട്പുട്ടുകളാണ് നമുക്ക് ലഭിക്കുക. എന്നാല്‍ ഒരേ ഡാറ്റയുടെ ഹാഷ് റിസല്‍ട്ട് എപ്പോഴും ഒന്നായിരിക്കും.

ഒരു ദിശയില്‍ മാത്രം

ഹാഷിംഗ് ഒരു ദിശയില്‍ മാത്രമേ പ്രവര്‍ത്തിക്കൂ. ഒരു ഡാറ്റയെ ഹാഷ് ആക്കി മാറ്റല്‍ ആണ് അത്. ഒരു ഹാഷ് കിട്ടിയാല്‍ അത് ഏത് ഡാറ്റയുടെ ഹാഷ് ആണ് എന്ന് മനസിലാക്കാനാവില്ല. ഉദാരണത്തിന് 5+10 = 15 എന്ന ഒരു കണക്കിനെ 15 എന്നത് ഹാഷും 5 ഉം 10 ഉം ഡാറ്റയും ആയി എടുക്കുക. 15 മാത്രം കിട്ടിയാല്‍ ഏതെല്ലാം ചേര്‍ന്നാണ് 15 ആയത് എന്ന് നമുക്ക് പറയാനാകില്ല. 14 ഉം 1 ഉം ചേര്‍ന്നാലും 15 കിട്ടുമല്ലോ.

ചെറിയ മാറ്റം എളുപ്പത്തില്‍ തിരിച്ചറിയാം.

ഹാഷിംഗിന്റെ ഏറ്റവും ഉപകാരപ്രദമായ ഒരു സവിശേഷതയാണിത്. രണ്ട് ഡാറ്റകളുടെ ഹാഷ് തുല്യമാവില്ല. ചെറിയൊരു മാറ്റം വരുത്തിയാല്‍ പോലും രണ്ട് ഹാഷുകളും വളരെ വ്യത്യാസപ്പെട്ടിരിക്കും. ചെറിയൊരു ഉദാഹരണം നോക്കാം. ഹാഷിന്റെ വലിപ്പം കുറക്കാൻ വേണ്ടി sha256 ന് പകരം ഈ ഉദാരണത്തില്‍ md5 എന്ന ഫംഗ്ഷനാണ് ഉപയോഗിക്കുന്നത്. hello എന്ന ഡാറ്റയുടെ md5 ഹാഷാണ്

5d41402abc4b2a76b9719d911017c592. ഇനി hello! എന്ന ഡാറ്റയുടെ ഹാഷ് പരിശോധിച്ചാല്‍ അത് 5a8dd3ad0756a93ded72b823b19dd877 ഇങ്ങിനിരിക്കും. രണ്ടും തമ്മിലുള്ള മാറ്റം ഒറ്റനോട്ടത്തില്‍ പ്രകടമാണ്. അതുകൊണ്ട് ഡാറ്റയില്‍ തിരുമറി നടത്തിയോ എന്നറിയാൻ ഹാഷ് ഉപയോഗിക്കാം.

നമ്മുടെ ബിറ്റ്കോയിൻ അഡ്രസ്സ് പബ്ലിക് കീയുടെ ഹാഷ് ചെയ്ത രൂപമാണ്. അതുപോലെ ഫേസ്ബുക്കു പോലെയുള്ള പാസ്വേഡ് സേവ് ചെയ്യുന്ന എല്ലാ ആപ്ലിക്കേഷനുകളും നമ്മുടെ പാസ്വേഡ് സേവ് ചെയ്ത് വെക്കുന്നത് ഹാഷ് രൂപത്തിലാണ്. അഥവാ ഹാക്ക് ആയാലും പാസ്വേഡ് ലഭിക്കാതിരിക്കാൻ വേണ്ടിയുള്ള സുരക്ഷാ മുൻകരുതലാണ് അത്.

ബിറ്റ്കോയിനില്‍ ഹാഷിംഗിന്റെ ഉപയോഗം അടുത്ത ലേഖനങ്ങളില്‍ വായിക്കാം.

ഭാഗം നാല്

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *