ഹാഷ് ഫംഗ്ഷനുകൾ - വ്ലാഡിമിർ വിക്ടോറോവിച്ച് അനിസിമോവിന്റെ വിദ്യാഭ്യാസപരവും ശാസ്ത്രീയവുമായ പ്രവർത്തനങ്ങൾ. ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷൻ

വൺ-വേ ഹാഷ് ഫംഗ്‌ഷനുകളെ അടിസ്ഥാനമാക്കി പരിവർത്തനം ചെയ്‌ത ഡാറ്റ കംപ്രസ്സുചെയ്യുന്നതിനുള്ള രീതികൾ

ഒരു ഹാഷ് ഫംഗ്‌ഷൻ (ഹാഷ്, ഹാഷ്-ഫംഗ്ഷൻ) എന്നത് അനിയന്ത്രിതമായ ദൈർഘ്യത്തിന്റെ ഡാറ്റയിൽ നിന്ന് ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ ഒരു നിശ്ചിത മൂല്യം (കൺവല്യൂഷൻ) നേടുന്ന ഒരു പരിവർത്തനമാണ്. ഏറ്റവും ലളിതമായ ഉദാഹരണങ്ങൾ ചെക്ക്സം ആണ് (ഉദാ crc32). ഇതുണ്ട്:

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷുകൾ;

· പ്രോഗ്രാമർ ഹാഷുകൾ.

ഒരു ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഒരു പ്രോഗ്രാമർ ഹാഷിൽ നിന്ന് ഇനിപ്പറയുന്ന രണ്ട് സവിശേഷതകളിൽ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു: മാറ്റാനാകാത്തതും കൂട്ടിയിടി രഹിതവും. നമുക്ക് സൂചിപ്പിക്കാം:

m - പ്രാരംഭ ഡാറ്റ,

h(m) എന്നത് അവരിൽ നിന്നുള്ള ഒരു ഹാഷ് ഫംഗ്‌ഷനാണ്.

ഇറിവേഴ്‌സിബിലിറ്റി അർത്ഥമാക്കുന്നത് h0 എന്ന സംഖ്യ അറിയാമെങ്കിൽ, m തിരഞ്ഞെടുക്കുന്നത് ബുദ്ധിമുട്ടാണ്, അതായത് h(m) = h0.

കൂട്ടിയിടി രഹിതം എന്നാൽ m1, m2 എന്നിവ കണ്ടെത്തുന്നത് ബുദ്ധിമുട്ടാണ്, അതായത് m1 m2 ന് തുല്യമല്ല, എന്നാൽ h(m1) = h(m2).

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകളെ രണ്ട് ക്ലാസുകളായി തിരിച്ചിരിക്കുന്നു:

ഒരു കീ ഇല്ലാതെ ഹാഷ് ഫംഗ്‌ഷനുകൾ (എം‌ഡി‌സി (മോഡിഫിക്കേഷൻ (മാനിപുലേഷൻ) കോഡുകൾ കണ്ടെത്തുക) കോഡുകൾ),

ഒരു കീ (MAC (മെസേജ് ഓതന്റിക്കേഷൻ കോഡ്) കോഡുകൾ) ഉപയോഗിച്ചാണ് ഹാഷ് പ്രവർത്തിക്കുന്നത്.

കീലെസ്സ് ഹാഷ് ഫംഗ്ഷനുകളെ രണ്ട് ഉപവിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു: ദുർബലമായ ഹാഷ് ഫംഗ്ഷനുകളും ശക്തമായ ഹാഷ് ഫംഗ്ഷനുകളും.

ദുർബലമായ ഹാഷ് ഫംഗ്‌ഷൻ ഇനിപ്പറയുന്ന വ്യവസ്ഥകൾ പാലിക്കുന്ന ഒരു വൺ-വേ ഫംഗ്‌ഷൻ H(x) ആണ്:

1. ആർഗ്യുമെന്റ് x അനിയന്ത്രിതമായ ദൈർഘ്യത്തിന്റെ ഒരു ബിറ്റ് സ്ട്രിംഗ് ആകാം;

2. h(x) ന്റെ മൂല്യം ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ബിറ്റ് സ്ട്രിംഗ് ആയിരിക്കണം;

3. h(x) ന്റെ മൂല്യം കണക്കുകൂട്ടാൻ എളുപ്പമാണ്;

4. ഏതൊരു നിശ്ചിത x-നും h(x")=h(x) മറ്റൊരു x" ≠ x കണ്ടെത്തുക എന്നത് ഗണിതപരമായി അസാധ്യമാണ്.

ജോഡി x" ≠ x ആകുമ്പോൾ h(x")=h(x) ഒരു ഹാഷ് ഫംഗ്‌ഷൻ കൂട്ടിയിടി എന്ന് വിളിക്കുന്നു.

ഒരു ദുർബലമായ ഹാഷ് ഫംഗ്‌ഷനും പ്രോപ്പർട്ടി 5-നും 1-4 വ്യവസ്ഥകൾ പാലിക്കുന്ന ഒരു വൺ-വേ ഫംഗ്‌ഷൻ h(x) ആണ് ശക്തമായ ഹാഷ് ഫംഗ്‌ഷൻ:

5. h(x")=h(x) ജോഡി x" ≠ x കണ്ടെത്തുക എന്നത് ഗണിതപരമായി അസാധ്യമാണ്.
ഒരു ഹാഷ് ഫംഗ്‌ഷന്റെ ഡെഫനിഷൻ സെറ്റ് മൂല്യങ്ങളുടെ ഗണത്തേക്കാൾ വളരെ വിശാലമാണെന്ന് പ്രോപ്പർട്ടികൾ 1-2 ൽ നിന്ന് പിന്തുടരുന്നതിനാൽ, കൂട്ടിയിടികൾ നിലനിൽക്കണം. പ്രോപ്പർട്ടി 4-ന് x-ന്റെ ഒരു നിശ്ചിത മൂല്യത്തിനായി അവ കണ്ടെത്തുന്നത് മിക്കവാറും അസാധ്യമാണ്. ശക്തമായ ഒരു ഹാഷ് ഫംഗ്‌ഷന് ഏതെങ്കിലും കൂട്ടിയിടി കണ്ടെത്തുന്നത് കണക്കുകൂട്ടലനുസരിച്ച് അസാധ്യമാണെന്ന് ആവശ്യകത 5 പറയുന്നു.

ഹാഷ് ഫംഗ്ഷനുകൾ കണക്കാക്കുന്നതിന് നിരവധി അൽഗോരിതങ്ങൾ ഉണ്ട്

MD2 (മെസേജ് ഡൈജസ്റ്റ്) ഒരു ക്രിപ്‌റ്റോഗ്രാഫിക് റിഡക്ഷൻ അൽഗോരിതം ആണ്. അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു സന്ദേശത്തിൽ നിന്ന് 128-ബിറ്റ് ബ്ലോക്ക് നിർമ്മിക്കുന്നു. MD2 പ്രവർത്തനത്തിന്റെ പൊതു സ്കീം:

എ. 128 ബിറ്റുകളുടെ ഗുണിതമായ ദൈർഘ്യത്തിലേക്ക് സന്ദേശ വാചകം പാഡുചെയ്യുന്നു;

ബി. ഒരു 16-ബിറ്റ് ചെക്ക്സം കണക്കുകൂട്ടൽ, ഏറ്റവും പ്രധാനപ്പെട്ട ബിറ്റുകൾ നിരസിച്ചു;

സി. ടെക്സ്റ്റിലേക്ക് ഒരു ചെക്ക്സം ചേർക്കുന്നു;

ഡി. ചെക്ക്സം വീണ്ടും കണക്കുകൂട്ടൽ.

MD2 അൽഗോരിതം വളരെ മന്ദഗതിയിലാണ്, അതിനാൽ MD4, MD5, SHA (Secure Hash Algorithm) ആണ് കൂടുതലായി ഉപയോഗിക്കുന്നത്. തത്ഫലമായുണ്ടാകുന്ന ഹാഷ് 160 ബിറ്റുകൾ നീളമുള്ളതാണ്.



GOST R34.11-94. റഷ്യൻ അൽഗോരിതം. കൺവ്യൂഷന്റെ ദൈർഘ്യം 256 ബിറ്റുകളാണ് (ഒരു രഹസ്യവാക്ക് ഉപയോഗിച്ച് GOST 28147-89 നായി ഒരു കീ സൃഷ്ടിക്കുന്നതിന് വളരെ സൗകര്യപ്രദമാണ്).

യുഎസ് നാഷണൽ ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് സ്റ്റാൻഡേർഡ്സ് ആൻഡ് ടെക്നോളജി (NIST) അതിന്റെ വെബ്‌സൈറ്റിൽ http://www.nist.gov/sha/ പുതിയ ഹാഷിംഗ് അൽഗോരിതങ്ങളായ SHA-256, SHA-384, SHA-512 എന്നിവയ്‌ക്കായുള്ള സവിശേഷതകൾ പ്രസിദ്ധീകരിച്ചു, ഇതിന്റെ ഉദ്ദേശ്യം പുതിയ ഡിഇഎസ് എൻക്രിപ്ഷൻ സ്റ്റാൻഡേർഡിന്റെ പ്രധാന ദൈർഘ്യത്തിന് അനുസൃതമായ ഹാഷ് ക്രിപ്റ്റോഗ്രാഫിക് ശക്തിയുടെ ഒരു ലെവൽ നൽകാൻ.

ഒരു n-bit ഹാഷ് എന്നത് ഒരു n-bit pseudo-random sequence (hash value) ലേക്ക് അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു സന്ദേശത്തിന്റെ മാപ്പിംഗ് ആണെന്ന് ഓർക്കുക. ഒരു ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ്, അത്തരം ഒരു ഫംഗ്‌ഷന്റെ ഒരു പ്രത്യേക തരം എന്ന നിലയിൽ, "ഏകദിശയും" " കൂട്ടിയിടി പ്രതിരോധവും" ഉള്ള ഒരു n-bit ഹാഷാണ്.

ഇതുവരെ, n=128 നീളമുള്ള ഹാഷ് കോഡുകൾ സൃഷ്ടിക്കുന്ന Raivist സൃഷ്ടിച്ച MD4, MD5 എന്നിവയും n=160 നീളമുള്ള ഹാഷ് കോഡുകൾ സൃഷ്ടിക്കുന്ന US NSA വികസിപ്പിച്ച SHA-1 അൽഗോരിതവുമാണ് ഏറ്റവും ജനപ്രിയമായ ഹാഷ് ഫംഗ്ഷനുകൾ. .

GOST R34.10-94 "ഒരു അസമമായ ക്രിപ്റ്റോഗ്രാഫിക് അൽഗോരിതം അടിസ്ഥാനമാക്കി ഒരു ഇലക്ട്രോണിക് ഡിജിറ്റൽ സിഗ്നേച്ചർ വികസിപ്പിക്കുന്നതിനും പരിശോധിക്കുന്നതിനുമുള്ള നടപടിക്രമങ്ങൾ."

ഉദാഹരണത്തിന്, നമുക്ക് ലിയോ ടോൾസ്റ്റോയ് നോവൽ ഹെക്സാഡെസിമലിൽ നൽകാം അല്ലെങ്കിൽ 128-ബിറ്റ് ഹാഷ് ഫംഗ്ഷനിലേക്കുള്ള ഇൻപുട്ടായി നമ്പർ 1 നൽകാം. തൽഫലമായി, രണ്ട് സാഹചര്യങ്ങളിലും ഫോമിന്റെ വ്യത്യസ്ത സെറ്റ് കപട-റാൻഡം ഹെക്സാഡെസിമൽ അക്കങ്ങൾ നമുക്ക് ലഭിക്കും: "”.

സോഴ്സ് ടെക്സ്റ്റ് ഒരു പ്രതീകം പോലും മാറുമ്പോൾ, ഹാഷ് ഫംഗ്ഷന്റെ ഫലം പൂർണ്ണമായും മാറുന്നു.

ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഈ പ്രോപ്പർട്ടി അവ ഇനിപ്പറയുന്ന സന്ദർഭങ്ങളിൽ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു:

  • അസോസിയേറ്റീവ് അറേകൾ നിർമ്മിക്കുമ്പോൾ;
  • ഡാറ്റാ സെറ്റുകളുടെ ഒരു ശ്രേണിയിൽ തനിപ്പകർപ്പുകൾക്കായി തിരയുമ്പോൾ;
  • ഡാറ്റാ സെറ്റുകൾക്കായി അദ്വിതീയ ഐഡന്റിഫയറുകൾ നിർമ്മിക്കുമ്പോൾ;
  • ഡാറ്റയിൽ നിന്ന് (സിഗ്നലുകൾ) ചെക്ക്സം കണക്കാക്കുമ്പോൾ, അവയിലെ പിഴവുകൾ (ആകസ്മികമായി അല്ലെങ്കിൽ മനഃപൂർവ്വം അവതരിപ്പിച്ചത്) കണ്ടെത്തുന്നതിനും കൂടാതെ/അല്ലെങ്കിൽ ഡാറ്റ സംപ്രേക്ഷണം ചെയ്യുമ്പോഴും;
  • പാസ്‌വേഡുകൾ സംരക്ഷിക്കുമ്പോൾ സംരക്ഷണ സംവിധാനങ്ങളിൽഒരു ഹാഷ് കോഡിന്റെ രൂപത്തിൽ (ഒരു ഹാഷ് കോഡ് ഉപയോഗിച്ച് ഒരു പാസ്വേഡ് വീണ്ടെടുക്കുന്നതിന്, ഉപയോഗിച്ച ഹാഷ് ഫംഗ്ഷന്റെ വിപരീതമായ ഒരു ഫംഗ്ഷൻ ആവശ്യമാണ്);
  • ഒരു ഇലക്ട്രോണിക് സിഗ്നേച്ചർ വികസിപ്പിച്ചെടുക്കുമ്പോൾ (പ്രായോഗികമായി, ഇത് പലപ്പോഴും ഒപ്പിട്ടിരിക്കുന്ന സന്ദേശമല്ല, മറിച്ച് അതിന്റെ "ഹാഷ് ഇമേജ്");
  • തുടങ്ങിയവ.

ഹാഷ് ഫംഗ്ഷനുകളുടെ തരങ്ങൾ

ഒരു "നല്ല" ഹാഷ് ഫംഗ്‌ഷൻ രണ്ടെണ്ണം തൃപ്തിപ്പെടുത്തണം പ്രോപ്പർട്ടികൾ:

  • വേഗത്തിലുള്ള കണക്കുകൂട്ടൽ;
  • "കൂട്ടിയിടികളുടെ" ഏറ്റവും കുറഞ്ഞ എണ്ണം.

നമുക്ക് ഇനിപ്പറയുന്ന നൊട്ടേഷൻ പരിചയപ്പെടുത്താം:

∀ k ∈ (0 ; K) : h (k)< M {\displaystyle \forall k\in (0;\,K):h(k).

ഒരു "മോശം" ഹാഷ് ഫംഗ്ഷന്റെ ഒരു ഉദാഹരണം ഒരു ഫംഗ്ഷൻ ആണ് M = 1000 (\ഡിസ്പ്ലേസ്റ്റൈൽ M=1000), ഇത് ഒരു പത്തക്ക സ്വാഭാവിക സംഖ്യയാണ് കെ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ കെ)താരതമ്യം ചെയ്യുന്നു മൂന്ന്ഒരു സംഖ്യയുടെ ഇരുപത് അക്ക ചതുരത്തിന്റെ മധ്യത്തിൽ നിന്ന് തിരഞ്ഞെടുത്ത അക്കങ്ങൾ കെ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ കെ). "ഹാഷ് കോഡുകളുടെ" മൂല്യങ്ങൾ ആവശ്യമാണെന്ന് തോന്നുന്നു തുല്യമായി"ഇടയിൽ വിതരണം ചെയ്തു 000 " ഒപ്പം " 999 ", എന്നാൽ അതിനായി" യഥാർത്ഥമായ"ഡാറ്റ ഇത് ശരിയാണെങ്കിൽ മാത്രം" കീകൾ" എന്നതിന് ഇടത്തോ വലത്തോട്ടോ ഒരു "വലിയ" പൂജ്യങ്ങൾ ഇല്ല.

ഹാഷ് ഫംഗ്ഷനുകളുടെ ലളിതവും വിശ്വസനീയവുമായ നിരവധി നടപ്പാക്കലുകൾ നോക്കാം.

വിഭജനത്തെ അടിസ്ഥാനമാക്കിയുള്ള "ഹാഷ് ഫംഗ്ഷനുകൾ"

1. "ഹാഷ് കോഡ്", സാധ്യമായ എല്ലാ "ഹാഷുകളുടെയും" എണ്ണം കൊണ്ട് വിഭജനത്തിന്റെ ശേഷിപ്പായി

ഒരു ഹാഷ് ഫംഗ്‌ഷന് ഇൻപുട്ട് ഡാറ്റയെ ഹരിക്കുന്നതിന്റെ ബാക്കിയായി "ഹാഷ്" കണക്കാക്കാം എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം):

h (k) = k മോഡ് M (\ഡിസ്പ്ലേസ്റ്റൈൽ h(k)=k\mod M),

എവിടെ എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)- സാധ്യമായ എല്ലാ "ഹാഷുകളുടെയും" എണ്ണം (ഔട്ട്പുട്ട് ഡാറ്റ).

മാത്രമല്ല, ഇത് വ്യക്തമാണ് എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)ഫംഗ്‌ഷന്റെ മൂല്യം തുല്യമായിരിക്കുമ്പോൾ തുല്യമായിരിക്കും k (\ഡിസ്പ്ലേസ്റ്റൈൽ കെ)ഒപ്പം ഒറ്റത് - ഒറ്റയായിരിക്കുമ്പോൾ k (\ഡിസ്പ്ലേസ്റ്റൈൽ കെ). അതുപോലെ ഉപയോഗിക്കാനും പാടില്ല എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)കമ്പ്യൂട്ടറിന്റെ നമ്പർ സിസ്റ്റത്തിന്റെ റാഡിക്‌സ്, "ഹാഷ് കോഡ്" എന്നതിനെ മാത്രം ആശ്രയിച്ചിരിക്കും നിരവധിഅക്ക സംഖ്യകൾ k (\ഡിസ്പ്ലേസ്റ്റൈൽ കെ), വലതുവശത്ത് സ്ഥിതിചെയ്യുന്നു, ഇത് ധാരാളം കൂട്ടിയിടികളിലേക്ക് നയിക്കും. പ്രായോഗികമായി, അവർ സാധാരണയായി ഒരു ലളിതമായ തിരഞ്ഞെടുക്കുന്നു എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം); മിക്ക കേസുകളിലും ഈ തിരഞ്ഞെടുപ്പ് തികച്ചും തൃപ്തികരമാണ്.

2. ഫലമായുണ്ടാകുന്ന പോളിനോമിയലിന്റെ ഗുണകങ്ങളുടെ ഒരു കൂട്ടമായി "ഹാഷ് കോഡ്"

ഒരു ഹാഷ് ഫംഗ്‌ഷന് ഒരു പോളിനോമിയൽ മുഖേന ഇൻപുട്ട് ഡാറ്റയുടെ ഒരു മൊഡ്യൂളോ രണ്ട് ഡിവിഷൻ നടത്താൻ കഴിയും. ഈ രീതിയിൽ എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)രണ്ടിന്റെ ശക്തിയും ബൈനറി കീകളും ആയിരിക്കണം ( K = k n - 1 k n - 2 . . . k 0 (\ displaystyle K=k_(n-1)k_(n-2)...k_(0))) രൂപത്തിൽ പ്രതിനിധീകരിക്കുന്നു ബഹുപദങ്ങൾ, ഗുണകങ്ങളുടെ മൂല്യങ്ങൾ "ഹാഷ് കോഡ്" ആയി എടുക്കുന്നു ബഹുപദം, ഇൻപുട്ട് ഡാറ്റ വിഭജിക്കുന്നതിന്റെ ബാക്കിയായി ലഭിച്ചു കെ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ കെ)മുൻകൂട്ടി തിരഞ്ഞെടുത്ത ഒരു ബഹുപദത്തിലേക്ക് പി (\ഡിസ്‌പ്ലേസ്റ്റൈൽ പി)ഡിഗ്രികൾ m (\ഡിസ്പ്ലേസ്റ്റൈൽ m):

K (x) മോഡ് P (x) = h m - 1 x m - 1 + ⋯ + h 1 x + h 0 (\displaystyle K(x)\mod P(x)=h_(m-1)x^(m- 1)+\ഡോട്ടുകൾ +h_(1)x+h_(0)) h (x) = h m - 1 . . . h 1 h 0 (\displaystyle h(x)=h_(m-1)...h_(1)h_(0))

ശരിയായ തിരഞ്ഞെടുപ്പിനൊപ്പം P(x) (\ഡിസ്‌പ്ലേസ്റ്റൈൽ P(x))ഏതാണ്ട് സമാനമായ കീകൾ തമ്മിലുള്ള കൂട്ടിയിടികളുടെ അഭാവം ഉറപ്പുനൽകുന്നു.

ഗുണനത്തെ അടിസ്ഥാനമാക്കിയുള്ള "ഹാഷ് ഫംഗ്ഷനുകൾ"

നമുക്ക് ചിഹ്നത്താൽ സൂചിപ്പിക്കാം w (\ഡിസ്പ്ലേസ്റ്റൈൽ w)ഒരു യന്ത്രപദത്താൽ പ്രതിനിധീകരിക്കാൻ കഴിയുന്ന സംഖ്യകളുടെ എണ്ണം. ഉദാഹരണത്തിന്, 32-ബിറ്റ് IBM PC അനുയോജ്യമായ കമ്പ്യൂട്ടറുകൾക്ക്, w = 2 32 (\ഡിസ്പ്ലേസ്റ്റൈൽ w=2^(32)).

നമുക്ക് സ്ഥിരമായ ചിലത് തിരഞ്ഞെടുക്കാം എ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എ)അതിനാൽ എ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എ)കൂടെ കോപ്രൈം ആയിരുന്നു w (\ഡിസ്പ്ലേസ്റ്റൈൽ w). ഗുണനം ഉപയോഗിച്ചുള്ള ഹാഷ് ഫംഗ്ഷൻ ഇതുപോലെയാകാം:

h (K) = [ M ⌊ A w ∗ K ⌋ ] (\displaystyle h(K)=\ഇടത്)

ഈ സാഹചര്യത്തിൽ, ബൈനറി നമ്പർ സിസ്റ്റമുള്ള കമ്പ്യൂട്ടറിൽ എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)രണ്ട് ശക്തിയാണ്, ഒപ്പം h (K) (\ഡിസ്‌പ്ലേസ്റ്റൈൽ h(K))ഉൽപ്പന്നത്തിന്റെ വലത് പകുതിയിലെ ഏറ്റവും പ്രധാനപ്പെട്ട ബിറ്റുകൾ അടങ്ങിയിരിക്കും എ ∗ കെ (\ഡിസ്പ്ലേസ്റ്റൈൽ എ*കെ).

വിഭജനത്തെയും ഗുണനത്തെയും അടിസ്ഥാനമാക്കിയുള്ള ഹാഷ് ഫംഗ്ഷനുകളുടെ ഗുണങ്ങളിൽ, യഥാർത്ഥ കീകളുടെ ക്രമരഹിതതയുടെ പ്രയോജനകരമായ ഉപയോഗം ശ്രദ്ധിക്കേണ്ടതാണ്. ഉദാഹരണത്തിന്, കീകൾ ഒരു ഗണിത പുരോഗതിയാണെങ്കിൽ (ഉദാഹരണത്തിന്, "പേര് 1", "നെയിം 2", "നെയിം 3" എന്നീ പേരുകളുടെ ക്രമം), ഗുണനം ഉപയോഗിച്ച് ഒരു ഹാഷ് ഫംഗ്ഷൻ ഗണിത പുരോഗതിയെ ഏകദേശം ഗണിത പുരോഗതിയിലേക്ക് മാപ്പ് ചെയ്യും. വിവിധ ഹാഷ് മൂല്യങ്ങൾ, ഇത് ക്രമരഹിതമായ സാഹചര്യവുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ കൂട്ടിയിടികളുടെ എണ്ണം കുറയ്ക്കും.

ഗുണനം ഉപയോഗിക്കുന്ന ഒരു ഹാഷ് ഫംഗ്‌ഷൻ ഫിബൊനാച്ചി ഹാഷിംഗ് ഉപയോഗിക്കുന്ന ഹാഷ് ഫംഗ്‌ഷനാണ്. ഫിബൊനാച്ചി ഹാഷിംഗ് സുവർണ്ണ അനുപാതത്തിന്റെ ഗുണങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. സ്ഥിരമായി എ (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എ)ഇവിടെ ഏറ്റവും അടുത്തുള്ള പൂർണ്ണസംഖ്യ φ − 1 ∗ w (\ഡിസ്പ്ലേസ്റ്റൈൽ \varphi ^(-1)*w)ഒപ്പം കോപ്രൈം വിത്ത് w (\ഡിസ്പ്ലേസ്റ്റൈൽ w), എവിടെ φ (\ഡിസ്പ്ലേസ്റ്റൈൽ \varphi)- ഇതാണ് സുവർണ്ണ അനുപാതം.

ഹാഷിംഗ് വേരിയബിൾ ലെങ്ത്ത് സ്ട്രിംഗുകൾ

നിരവധി പദങ്ങളോ വേരിയബിൾ ദൈർഘ്യമുള്ള കീകളോ അടങ്ങുന്ന കീകൾ പരിഗണിക്കേണ്ടത് ആവശ്യമാണെങ്കിൽ മുകളിലുള്ള രീതികളും ബാധകമാണ്.

ഉദാഹരണത്തിന്, മോഡുലോ കൂട്ടിച്ചേർക്കൽ ഉപയോഗിച്ച് നിങ്ങൾക്ക് വാക്കുകൾ ഒന്നായി സംയോജിപ്പിക്കാം w (\ഡിസ്പ്ലേസ്റ്റൈൽ w)അല്ലെങ്കിൽ "എക്‌സ്‌ക്ലൂസീവ് അല്ലെങ്കിൽ" പ്രവർത്തനങ്ങൾ. ഈ തത്വത്തിൽ പ്രവർത്തിക്കുന്ന അൽഗോരിതങ്ങളിലൊന്നാണ് പിയേഴ്സൺ ഹാഷ് ഫംഗ്ഷൻ.

യൂണിവേഴ്സൽ ഹാഷിംഗ്

കൂട്ടിയിടികൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള രീതികൾ

വ്യത്യസ്‌ത ഇൻപുട്ട് ബ്ലോക്കുകൾക്കായുള്ള ഒരു ഹാഷ് ഫംഗ്‌ഷൻ ഒരേ ഹാഷ് കോഡുകൾ നൽകുന്ന സന്ദർഭമാണ് കൂട്ടിയിടി (ചിലപ്പോൾ സംഘർഷം അല്ലെങ്കിൽ കൂട്ടിയിടി).

ഹാഷ് ടേബിളുകളിലെ കൂട്ടിയിടികൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള രീതികൾ

ഹാഷിംഗിനെ വിവരിക്കുന്ന ആദ്യകാല കൃതികളിൽ ഭൂരിഭാഗവും ഹാഷ് ടേബിളുകളിലെ കൂട്ടിയിടികൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള രീതികൾക്കായി നീക്കിവച്ചിരുന്നു. അക്കാലത്ത്, വലിയ ഫയലുകളിൽ ടെക്സ്റ്റ് തിരയാൻ ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിച്ചിരുന്നു. ഹാഷ് ടേബിളുകളിലെ കൂട്ടിയിടികൾ കൈകാര്യം ചെയ്യുന്നതിന് രണ്ട് പ്രധാന രീതികളുണ്ട്:

  1. ചെയിൻ രീതി (ഡയറക്ട് ലിങ്കിംഗ് രീതി);
  2. തുറന്ന വിലാസ രീതി.

ചെയിനിംഗ് രീതി ഉപയോഗിക്കുമ്പോൾ, "കീകളുടെ ലിങ്ക് ചെയ്ത പട്ടിക", "ഹാഷ് കോഡ്" എന്നിവയുടെ ജോഡികൾ ഹാഷ് ടേബിൾ സംഭരിക്കുന്നു. ഓരോ കീയ്ക്കും, ഹാഷ് ഫംഗ്ഷൻ ഒരു ഹാഷ് കോഡ് കണക്കാക്കുന്നു; ഹാഷ് കോഡ് മുമ്പ് ലഭിച്ചിരുന്നെങ്കിൽ (മറ്റൊരു കീയ്ക്കായി), ഹാഷ് കോഡുമായി ജോടിയാക്കിയ നിലവിലുള്ള കീകളുടെ പട്ടികയിലേക്ക് കീ ചേർക്കപ്പെടും; അല്ലെങ്കിൽ, ഒരു പുതിയ ജോഡി "കീകളുടെ പട്ടിക" - "ഹാഷ് കോഡ്" സൃഷ്ടിക്കപ്പെടുന്നു, കൂടാതെ കീ സൃഷ്ടിച്ച പട്ടികയിലേക്ക് ചേർക്കുന്നു. പൊതുവേ, ഉണ്ടെങ്കിൽ N (\ഡിസ്‌പ്ലേസ്റ്റൈൽ N)കീകളും എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)ലിസ്റ്റുകൾ, ഹാഷ് ടേബിളിന്റെ ശരാശരി വലിപ്പം ആയിരിക്കും N M (\ഡിസ്‌പ്ലേസ്റ്റൈൽ (\frac (N)(M))). ഈ സാഹചര്യത്തിൽ, ഒരു പട്ടികയിലൂടെ തിരയുമ്പോൾ, തിരയൽ തുടർച്ചയായി നടത്തുന്ന കേസുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ, ശരാശരി ജോലിയുടെ അളവ് ഏകദേശം കുറയും. എം (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എം)ഒരിക്കല്.

ഓപ്പൺ അഡ്രസിംഗ് രീതി ഉപയോഗിക്കുമ്പോൾ, ഹാഷ് ടേബിൾ കീ-ഹാഷ് കോഡ് ജോഡികൾ സംഭരിക്കുന്നു. ഓരോ കീയ്ക്കും, ഹാഷ് ഫംഗ്ഷൻ ഒരു ഹാഷ് കോഡ് കണക്കാക്കുന്നു; "കീ" - "ഹാഷ് കോഡ്" ജോഡി പട്ടികയിൽ സംഭരിച്ചിരിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, പട്ടിക തിരയുമ്പോൾ, ലിങ്ക് ചെയ്ത ലിസ്റ്റുകൾ ഉപയോഗിക്കുന്ന, ലിങ്കുകൾ ഉപയോഗിക്കാത്ത കേസുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ, "കീ" - "ഹാഷ് കോഡ്" ജോഡികൾക്കായി ഒരു തുടർച്ചയായ തിരയൽ നടത്തുന്നു, ആവശ്യമായ കീ കണ്ടെത്തിയതിന് ശേഷം തിരയൽ നിർത്തുന്നു . ടേബിൾ സെല്ലുകൾ സ്കാൻ ചെയ്യുന്ന ക്രമത്തെ പ്രോബ് സീക്വൻസ് എന്ന് വിളിക്കുന്നു.

ക്രിപ്റ്റോഗ്രാഫിക് ഉപ്പ്

ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു

ക്രിപ്റ്റോഗ്രഫിയിൽ ഹാഷ് ഫംഗ്ഷനുകൾ വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നു.

ഹാഷ് ടേബിളുകൾ, ബ്ലൂം ഫിൽട്ടറുകൾ, കാർട്ടീഷ്യൻ ട്രീകൾ എന്നിവയിൽ ഹാഷ് ഒരു കീ ആയി ഉപയോഗിക്കുന്നു.

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകൾ

നിലവിലുള്ള നിരവധി ഹാഷ് ഫംഗ്‌ഷനുകളിൽ, ക്രിപ്‌റ്റോഗ്രാഫിയിൽ ഉപയോഗിക്കുന്ന ക്രിപ്‌റ്റോഗ്രാഫിക്കായി ശക്തമായ ഹാഷ് ഫംഗ്‌ഷനുകൾ വേർതിരിച്ചറിയുന്നത് പതിവാണ്, കാരണം അവയിൽ അധിക ആവശ്യകതകൾ ചുമത്തുന്നു. ഹാഷ് ഫംഗ്ഷനു വേണ്ടി എച്ച് (\ഡിസ്‌പ്ലേസ്റ്റൈൽ എച്ച്)ക്രിപ്‌റ്റോഗ്രാഫിക്കായി ശക്തമായി കണക്കാക്കപ്പെടുന്നു, അത് ക്രിപ്‌റ്റോഗ്രാഫിയിലെ ഹാഷ് ഫംഗ്‌ഷനുകളുടെ മിക്ക ഉപയോഗങ്ങളും അടിസ്ഥാനമാക്കിയുള്ള മൂന്ന് അടിസ്ഥാന ആവശ്യകതകൾ നിറവേറ്റണം:

ഈ ആവശ്യകതകൾ സ്വതന്ത്രമല്ല.

ഇത്യാദി.). ഒന്നോ അല്ലെങ്കിൽ മറ്റൊരു ഹാഷ് ഫംഗ്ഷന്റെ തിരഞ്ഞെടുപ്പ് നിർണ്ണയിക്കുന്നത് പരിഹരിക്കപ്പെടുന്ന പ്രശ്നത്തിന്റെ പ്രത്യേകതകളാണ്. ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഏറ്റവും ലളിതമായ ഉദാഹരണങ്ങൾ ചെക്ക്‌സം അല്ലെങ്കിൽ CRC ആണ്.

പൊതുവേ, ഉറവിട ഡാറ്റയും ഹാഷ് കോഡും തമ്മിൽ പരസ്പരം കത്തിടപാടുകൾ ഇല്ല. അതിനാൽ, ഒരേ ഹാഷ് കോഡുകൾ നൽകുന്ന നിരവധി ഡാറ്റാ സെറ്റുകൾ ഉണ്ട് - കൂട്ടിയിടികൾ എന്ന് വിളിക്കപ്പെടുന്നവ. ഹാഷ് ഫംഗ്ഷനുകളുടെ "ഗുണനിലവാരം" വിലയിരുത്തുന്നതിൽ കൂട്ടിയിടികളുടെ സംഭാവ്യത ഒരു പ്രധാന പങ്ക് വഹിക്കുന്നു.

ചെക്ക്സംസ്

ഹാർഡ്‌വെയർ പിശകുകൾ ഉൾപ്പെടെയുള്ള ബോധപൂർവമല്ലാത്ത വികലങ്ങളിൽ നിന്ന് പരിരക്ഷിക്കാൻ ഉപയോഗിക്കുന്ന ഹാർഡ്‌വെയർ അൽഗോരിതങ്ങളിൽ സങ്കീർണ്ണമല്ലാത്തതും വളരെ വേഗതയുള്ളതും എളുപ്പത്തിൽ നടപ്പിലാക്കിയതുമാണ്.

കണക്കുകൂട്ടൽ വേഗത ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്‌ഷനുകളേക്കാൾ പതിനായിരക്കണക്കിന് മടങ്ങ് വേഗതയുള്ളതും ഹാർഡ്‌വെയർ നടപ്പിലാക്കുന്നതിൽ വളരെ ലളിതവുമാണ്.

അത്തരമൊരു ഉയർന്ന വേഗതയ്ക്കുള്ള വില ക്രിപ്റ്റോഗ്രാഫിക് ശക്തിയുടെ അഭാവമാണ് - മുൻകൂട്ടി അറിയാവുന്ന തുകയിലേക്ക് സന്ദേശം ക്രമീകരിക്കാനുള്ള എളുപ്പമുള്ള അവസരം. കൂടാതെ, ചെക്ക്‌സം (സാധാരണ: 32 ബിറ്റുകൾ) സാധാരണയായി ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷുകളേക്കാൾ വീതി കുറവാണ് (സാധാരണ: 128, 160, 256 ബിറ്റുകൾ), അതായത് മനഃപൂർവമല്ലാത്ത കൂട്ടിയിടികൾ സംഭവിക്കാം.

ഒരു സന്ദേശത്തെ 32- അല്ലെങ്കിൽ 16-ബിറ്റ് വാക്കുകളായി വിഭജിച്ച് അവയെ സംഗ്രഹിക്കുക എന്നതാണ് അത്തരമൊരു അൽഗോരിതത്തിന്റെ ഏറ്റവും ലളിതമായ കേസ്, ഉദാഹരണത്തിന്, TCP/IP-ൽ ഇത് ഉപയോഗിക്കുന്നു.

ഒരു ചട്ടം പോലെ, ഒരു നിശ്ചിത ദൈർഘ്യത്തിലേക്ക് തുടർച്ചയായി നിരവധി തെറ്റായ ബിറ്റുകൾ പോലെയുള്ള സാധാരണ ഹാർഡ്‌വെയർ പിശകുകൾ ട്രാക്കുചെയ്യുന്നതിന് അത്തരമൊരു അൽഗോരിതം ആവശ്യമാണ്. അൽഗോരിതങ്ങളുടെ കുടുംബം എന്ന് വിളിക്കപ്പെടുന്നവ "സൈക്ലിക് റിഡൻഡൻസി കോഡ്" ഈ ആവശ്യകതകൾ നിറവേറ്റുന്നു. ഉദാഹരണത്തിന്, ZIP ഉപകരണങ്ങളിൽ ഉപയോഗിക്കുന്ന CRC32 ഇതിൽ ഉൾപ്പെടുന്നു.

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകൾ

നിലവിലുള്ള നിരവധി ഹാഷ് ഫംഗ്‌ഷനുകളിൽ, ക്രിപ്‌റ്റോഗ്രഫിയിൽ ഉപയോഗിക്കുന്ന ക്രിപ്‌റ്റോഗ്രാഫിക്കായി ശക്തമായ ഹാഷ് ഫംഗ്‌ഷനുകൾ വേർതിരിച്ചറിയുന്നത് പതിവാണ്. ഒരു ക്രിപ്‌റ്റോ-റെസിസ്റ്റന്റ് ഹാഷ് ഫംഗ്‌ഷൻ ആദ്യം ഉണ്ടായിരിക്കണം കൂട്ടിയിടി പ്രതിരോധംരണ്ട് തരം:

ഹാഷിംഗ് ഉപയോഗിക്കുന്നു

ചില ഡാറ്റാ ഘടനകളിലും ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു - ഹാഷ് ടേബിളുകൾ, കാർട്ടീഷ്യൻ മരങ്ങൾ. ഈ കേസിൽ ഹാഷ് ഫംഗ്ഷന്റെ ആവശ്യകതകൾ വ്യത്യസ്തമാണ്:

  • നല്ല ഡാറ്റ മിക്സബിലിറ്റി
  • വേഗത്തിലുള്ള കണക്കുകൂട്ടൽ അൽഗോരിതം

ഡാറ്റ അനുരഞ്ജനം

പൊതുവേ, ഒറിജിനൽ ഉപയോഗിക്കാതെ ചില വിവരങ്ങൾ ഒറിജിനലുമായി സാമ്യമുള്ളതായിരിക്കാൻ പരിശോധിക്കുന്നതായി ഈ ആപ്ലിക്കേഷനെ വിവരിക്കാം. അനുരഞ്ജനത്തിനായി, പരിശോധിച്ചുറപ്പിക്കുന്ന വിവരങ്ങളുടെ ഹാഷ് മൂല്യം ഉപയോഗിക്കുന്നു. ഈ ആപ്ലിക്കേഷന്റെ രണ്ട് പ്രധാന മേഖലകളുണ്ട്:

പിശകുകൾക്കായി പരിശോധിക്കുന്നു

ഉദാഹരണത്തിന്, പ്രധാന വാചകത്തിനൊപ്പം ആശയവിനിമയ ചാനലിലൂടെ ചെക്ക്സം കൈമാറ്റം ചെയ്യപ്പെടാം. സ്വീകരിക്കുന്ന അവസാനത്തിൽ, ചെക്ക്സം വീണ്ടും കണക്കാക്കുകയും ട്രാൻസ്മിറ്റ് ചെയ്ത മൂല്യവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യാം. ഒരു പൊരുത്തക്കേട് കണ്ടെത്തിയാൽ, ട്രാൻസ്മിഷൻ സമയത്ത് വികലത സംഭവിച്ചുവെന്നും ഒരു ആവർത്തനം അഭ്യർത്ഥിക്കാമെന്നും ഇതിനർത്ഥം.

ഈ കേസിൽ ഹാഷിംഗിന്റെ ഒരു ഗാർഹിക അനലോഗ്, നീങ്ങുമ്പോൾ, ലഗേജുകളുടെ എണ്ണം മെമ്മറിയിൽ സൂക്ഷിക്കുമ്പോൾ സാങ്കേതികതയായിരിക്കാം. തുടർന്ന്, പരിശോധിക്കാൻ, ഓരോ സ്യൂട്ട്കേസിനെക്കുറിച്ച് നിങ്ങൾ ഓർമ്മിക്കേണ്ടതില്ല, പക്ഷേ അവ എണ്ണുക. ഒരു പൊരുത്തം അർത്ഥമാക്കുന്നത് ഒരു സ്യൂട്ട്കേസും നഷ്ടപ്പെട്ടിട്ടില്ല എന്നാണ്. അതായത്, ലഗേജുകളുടെ എണ്ണം അതിന്റെ ഹാഷ് കോഡാണ്.

പാസ്ഫ്രെയ്സ് പരിശോധന

മിക്ക കേസുകളിലും, പാസ്‌ഫ്രെയ്‌സുകൾ ടാർഗെറ്റുകളിൽ സംഭരിക്കുന്നില്ല, അവയുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ സംഭരിച്ചിട്ടുള്ളൂ. പാസ്‌ഫ്രെയ്‌സുകൾ സംഭരിക്കുന്നത് അഭികാമ്യമല്ല, കാരണം വാക്യങ്ങളുള്ള ഒരു ഫയലിലേക്ക് അനധികൃത ആക്‌സസ് ഉണ്ടായാൽ, ആക്രമണകാരി എല്ലാ പാസ്‌ഫ്രെയ്‌സുകളും കണ്ടെത്തുകയും അവ ഉടനടി ഉപയോഗിക്കുകയും ചെയ്യും, കൂടാതെ ഹാഷ് മൂല്യങ്ങൾ സംഭരിക്കുമ്പോൾ, അവൻ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ പഠിക്കൂ. യഥാർത്ഥ ഡാറ്റയിലേക്ക് പഴയപടിയാക്കാൻ കഴിയാത്തവ, ഈ സാഹചര്യത്തിൽ, പാസ്ഫ്രെയ്സ്. പ്രാമാണീകരണ പ്രക്രിയയിൽ, നൽകിയ പാസ്‌ഫ്രെയ്‌സിന്റെ ഹാഷ് മൂല്യം കണക്കാക്കുകയും സംരക്ഷിച്ച ഒന്നുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു.

ഈ സാഹചര്യത്തിൽ ഒരു ഉദാഹരണം ഗ്നു/ലിനക്സും മൈക്രോസോഫ്റ്റ് വിൻഡോസ് എക്സ്പിയും ആയിരിക്കും. ഉപയോക്തൃ അക്കൗണ്ടുകളിൽ നിന്ന് പാസ്‌ഫ്രെയ്‌സുകളുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമാണ് അവർ സംഭരിക്കുന്നത്.

ഡാറ്റ വീണ്ടെടുക്കൽ വേഗത്തിലാക്കുക

ഉദാഹരണത്തിന്, ടെക്സ്റ്റ് ഫീൽഡുകൾ ഒരു ഡാറ്റാബേസിലേക്ക് എഴുതുമ്പോൾ, അവയുടെ ഹാഷ് കോഡ് കണക്കാക്കുകയും ഡാറ്റ ആ ഹാഷ് കോഡിന് അനുയോജ്യമായ ഒരു വിഭാഗത്തിൽ സ്ഥാപിക്കുകയും ചെയ്യാം. തുടർന്ന്, ഡാറ്റയ്‌ക്കായി തിരയുമ്പോൾ, നിങ്ങൾ ആദ്യം ടെക്‌സ്‌റ്റിന്റെ ഹാഷ് കോഡ് കണക്കാക്കേണ്ടതുണ്ട്, ഏത് വിഭാഗത്തിലാണ് നിങ്ങൾ അത് തിരയേണ്ടതെന്ന് നിങ്ങൾക്ക് ഉടനടി അറിയാം, അതായത്, നിങ്ങൾ മുഴുവൻ ഡാറ്റാബേസിലും തിരയേണ്ടതില്ല, പക്ഷേ മാത്രം അതിന്റെ ഒരു വിഭാഗത്തിൽ (ഇത് തിരയലിനെ വളരെയധികം വേഗത്തിലാക്കുന്നു).

ഈ സാഹചര്യത്തിൽ ഹാഷിംഗിന്റെ ഒരു സാധാരണ അനലോഗ് അക്ഷരമാലാക്രമത്തിൽ ഒരു നിഘണ്ടുവിൽ വാക്കുകൾ സ്ഥാപിക്കുന്നതാണ്. ഒരു വാക്കിന്റെ ആദ്യ അക്ഷരം അതിന്റെ ഹാഷ് കോഡാണ്, തിരയുമ്പോൾ, ഞങ്ങൾ നിഘണ്ടു മുഴുവൻ നോക്കുന്നില്ല, മറിച്ച് ആവശ്യമുള്ള അക്ഷരം മാത്രം.

അൽഗോരിതങ്ങളുടെ പട്ടിക

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • സ്നെഫ്രു
  • കടുവ (ചുഴി
  • IP ഇന്റർനെറ്റ് ചെക്ക്സം (RFC 1071)

ലിങ്കുകൾ

വിക്കിമീഡിയ ഫൗണ്ടേഷൻ. 2010.

മറ്റ് നിഘണ്ടുവുകളിൽ "ഹാഷ് കോഡ്" എന്താണെന്ന് കാണുക:

    ഹാഷ് കോഡ്- പ്രോഗ്രാം കോഡിന്റെയോ ഡാറ്റാ സെറ്റിന്റെയോ എല്ലാ ബൈറ്റുകളുമായും ഒരു ഗണിത സംയോജനത്തിന്റെ ഫലം. ഹാഷിംഗ് അൽഗോരിതത്തിന്റെ ഫലത്തിൽ ചില ബൈറ്റുകൾ മാത്രമേ ഉൾപ്പെട്ടിട്ടുള്ളൂ, കൂടാതെ പ്രോഗ്രാം കോഡിലോ ഡാറ്റയിലോ എന്തെങ്കിലും മാറ്റം വരുത്തുന്ന വിധത്തിലാണ് അൽഗോരിതം രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്... ... ഔദ്യോഗിക പദാവലി

    ഹാഷ് കോഡ്- പ്രോഗ്രാം കോഡിന്റെയോ ഡാറ്റാ സെറ്റിന്റെയോ എല്ലാ ബൈറ്റുകളുമായും ഒരു ഗണിത സംയോജനത്തിന്റെ ഫലം. ഹാഷിംഗ് അൽഗോരിതത്തിന്റെ ഫലത്തിൽ ചില ബൈറ്റുകൾ മാത്രമേ ഉൾപ്പെട്ടിട്ടുള്ളൂ, കൂടാതെ പ്രോഗ്രാം കോഡിലോ ഡാറ്റയിലോ എന്തെങ്കിലും മാറ്റം വരുത്തുന്ന വിധത്തിലാണ് അൽഗോരിതം രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്... ...

    ഒരു ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് സന്ദേശ പ്രാമാണീകരണ കോഡ്- (ITU T N.235.3, ITU T N.235.1). വിഷയങ്ങൾ: ടെലികമ്മ്യൂണിക്കേഷൻസ്, അടിസ്ഥാന ആശയങ്ങൾ EN ഹാഷ്ഡ് സന്ദേശ പ്രാമാണീകരണ കോഡ്HMAC... സാങ്കേതിക വിവർത്തകന്റെ ഗൈഡ്

    പ്രോഗ്രാമിംഗിൽ, അസോസിയേറ്റീവ് അറേ ഇന്റർഫേസ് നടപ്പിലാക്കുന്ന ഒരു ഡാറ്റാ ഘടനയാണ് ഹാഷ് ടേബിൾ, അതായത്, ജോഡികൾ (കീ, മൂല്യം) സംഭരിക്കാനും മൂന്ന് പ്രവർത്തനങ്ങൾ നടത്താനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു: ഒരു പുതിയ ജോഡി ചേർക്കുന്നതിനുള്ള പ്രവർത്തനം, തിരയൽ പ്രവർത്തനം, ഇല്ലാതാക്കൽ പ്രവർത്തനം. ... വിക്കിപീഡിയ

    MAC (സന്ദേശ പ്രാമാണീകരണ കോഡ്) പരസ്പര വിശ്വാസമുള്ള പങ്കാളികളുള്ള സന്ദേശ പ്രാമാണീകരണ പ്രോട്ടോക്കോളുകളിൽ അനുകരണ സംരക്ഷണം നൽകുന്നതിനുള്ള ഒരു ഉപാധിയാണ്, ... ... വിക്കിപീഡിയയിലേക്ക് ചേർത്തിരിക്കുന്ന ഒരു പ്രത്യേക പ്രതീകങ്ങൾ

    ഹാഷിംഗ് (ചിലപ്പോൾ ഹാഷിംഗ്) എന്നത് അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു ഇൻപുട്ട് ഡാറ്റ അറേയെ ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ഔട്ട്പുട്ട് ബിറ്റ് സ്ട്രിംഗായി മാറ്റുന്നതാണ്. അത്തരം പരിവർത്തനങ്ങളെ ഹാഷ് ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ കൺവ്യൂഷൻ ഫംഗ്‌ഷനുകൾ എന്നും വിളിക്കുന്നു, അവയുടെ ഫലങ്ങൾ... ... വിക്കിപീഡിയ

    ഈ ലേഖനം കോഡിനെക്കുറിച്ചാണ്. ബ്രെയിൻസ്റ്റോമിംഗ് രീതിക്ക്, CRC കാർഡ് കാണുക. സൈക്ലിക് റിഡൻഡൻസി ചെക്ക് (CRC) എന്നത്... ... വിക്കിപീഡിയയുടെ സമഗ്രത പരിശോധിക്കുന്നതിനായി രൂപകൽപ്പന ചെയ്ത ഒരു ചെക്ക്സം കണക്കാക്കുന്നതിനുള്ള ഒരു അൽഗോരിതം ആണ്.

    - (ഹാഷ് അടിസ്ഥാനമാക്കിയുള്ള സന്ദേശ പ്രാമാണീകരണ കോഡ്, സന്ദേശ പ്രാമാണീകരണ ഹാഷ് കോഡ് എന്നതിന്റെ ചുരുക്കം). വിശ്വസനീയമല്ലാത്ത ഒരു പരിതസ്ഥിതിയിൽ കൈമാറ്റം ചെയ്യപ്പെടുന്നതോ സംഭരിക്കുന്നതോ ആയ വിവരങ്ങളുടെ സമഗ്രത പരിശോധിക്കുന്നതിനുള്ള ഒരു മാർഗം ലോകത്തിന്റെ അവിഭാജ്യവും അനിവാര്യവുമായ ഭാഗമാണ്... ... വിക്കിപീഡിയ

    MI 2891-2004: ശുപാർശ. GSOEI. അളക്കുന്ന ഉപകരണങ്ങളുടെ സോഫ്റ്റ്വെയറിനുള്ള പൊതുവായ ആവശ്യകതകൾ- ടെർമിനോളജി MI 2891 2004: ശുപാർശ. GSOEI. അളക്കുന്ന ഉപകരണങ്ങളുടെ സോഫ്‌റ്റ്‌വെയറിനായുള്ള പൊതുവായ ആവശ്യകതകൾ: പ്രക്ഷേപണത്തിനോ വ്യാഖ്യാനത്തിനോ പ്രോസസ്സിംഗിനോ അനുയോജ്യമായ രൂപത്തിൽ അവതരിപ്പിച്ച ഡാറ്റ അളക്കൽ വിവരങ്ങൾ. പദത്തിന്റെ നിർവചനങ്ങൾ ... ... മാനദണ്ഡവും സാങ്കേതികവുമായ ഡോക്യുമെന്റേഷന്റെ നിബന്ധനകളുടെ നിഘണ്ടു-റഫറൻസ് പുസ്തകം

ഇത്യാദി.). ഒന്നോ അല്ലെങ്കിൽ മറ്റൊരു ഹാഷ് ഫംഗ്ഷന്റെ തിരഞ്ഞെടുപ്പ് നിർണ്ണയിക്കുന്നത് പരിഹരിക്കപ്പെടുന്ന പ്രശ്നത്തിന്റെ പ്രത്യേകതകളാണ്. ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഏറ്റവും ലളിതമായ ഉദാഹരണങ്ങൾ ചെക്ക്‌സം അല്ലെങ്കിൽ CRC ആണ്.

പൊതുവേ, ഉറവിട ഡാറ്റയും ഹാഷ് കോഡും തമ്മിൽ പരസ്പരം കത്തിടപാടുകൾ ഇല്ല. അതിനാൽ, ഒരേ ഹാഷ് കോഡുകൾ നൽകുന്ന നിരവധി ഡാറ്റാ സെറ്റുകൾ ഉണ്ട് - കൂട്ടിയിടികൾ എന്ന് വിളിക്കപ്പെടുന്നവ. ഹാഷ് ഫംഗ്ഷനുകളുടെ "ഗുണനിലവാരം" വിലയിരുത്തുന്നതിൽ കൂട്ടിയിടികളുടെ സംഭാവ്യത ഒരു പ്രധാന പങ്ക് വഹിക്കുന്നു.

ചെക്ക്സംസ്

ഹാർഡ്‌വെയർ പിശകുകൾ ഉൾപ്പെടെയുള്ള ബോധപൂർവമല്ലാത്ത വികലങ്ങളിൽ നിന്ന് പരിരക്ഷിക്കാൻ ഉപയോഗിക്കുന്ന ഹാർഡ്‌വെയർ അൽഗോരിതങ്ങളിൽ സങ്കീർണ്ണമല്ലാത്തതും വളരെ വേഗതയുള്ളതും എളുപ്പത്തിൽ നടപ്പിലാക്കിയതുമാണ്.

കണക്കുകൂട്ടൽ വേഗത ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്‌ഷനുകളേക്കാൾ പതിനായിരക്കണക്കിന് മടങ്ങ് വേഗതയുള്ളതും ഹാർഡ്‌വെയർ നടപ്പിലാക്കുന്നതിൽ വളരെ ലളിതവുമാണ്.

അത്തരമൊരു ഉയർന്ന വേഗതയ്ക്കുള്ള വില ക്രിപ്റ്റോഗ്രാഫിക് ശക്തിയുടെ അഭാവമാണ് - മുൻകൂട്ടി അറിയാവുന്ന തുകയിലേക്ക് സന്ദേശം ക്രമീകരിക്കാനുള്ള എളുപ്പമുള്ള അവസരം. കൂടാതെ, ചെക്ക്‌സം (സാധാരണ: 32 ബിറ്റുകൾ) സാധാരണയായി ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷുകളേക്കാൾ വീതി കുറവാണ് (സാധാരണ: 128, 160, 256 ബിറ്റുകൾ), അതായത് മനഃപൂർവമല്ലാത്ത കൂട്ടിയിടികൾ സംഭവിക്കാം.

ഒരു സന്ദേശത്തെ 32- അല്ലെങ്കിൽ 16-ബിറ്റ് വാക്കുകളായി വിഭജിച്ച് അവയെ സംഗ്രഹിക്കുക എന്നതാണ് അത്തരമൊരു അൽഗോരിതത്തിന്റെ ഏറ്റവും ലളിതമായ കേസ്, ഉദാഹരണത്തിന്, TCP/IP-ൽ ഇത് ഉപയോഗിക്കുന്നു.

ഒരു ചട്ടം പോലെ, ഒരു നിശ്ചിത ദൈർഘ്യത്തിലേക്ക് തുടർച്ചയായി നിരവധി തെറ്റായ ബിറ്റുകൾ പോലെയുള്ള സാധാരണ ഹാർഡ്‌വെയർ പിശകുകൾ ട്രാക്കുചെയ്യുന്നതിന് അത്തരമൊരു അൽഗോരിതം ആവശ്യമാണ്. അൽഗോരിതങ്ങളുടെ കുടുംബം എന്ന് വിളിക്കപ്പെടുന്നവ "സൈക്ലിക് റിഡൻഡൻസി കോഡ്" ഈ ആവശ്യകതകൾ നിറവേറ്റുന്നു. ഉദാഹരണത്തിന്, ZIP ഉപകരണങ്ങളിൽ ഉപയോഗിക്കുന്ന CRC32 ഇതിൽ ഉൾപ്പെടുന്നു.

ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷനുകൾ

നിലവിലുള്ള നിരവധി ഹാഷ് ഫംഗ്‌ഷനുകളിൽ, ക്രിപ്‌റ്റോഗ്രഫിയിൽ ഉപയോഗിക്കുന്ന ക്രിപ്‌റ്റോഗ്രാഫിക്കായി ശക്തമായ ഹാഷ് ഫംഗ്‌ഷനുകൾ വേർതിരിച്ചറിയുന്നത് പതിവാണ്. ഒരു ക്രിപ്‌റ്റോ-റെസിസ്റ്റന്റ് ഹാഷ് ഫംഗ്‌ഷൻ ആദ്യം ഉണ്ടായിരിക്കണം കൂട്ടിയിടി പ്രതിരോധംരണ്ട് തരം:

ഹാഷിംഗ് ഉപയോഗിക്കുന്നു

ചില ഡാറ്റാ ഘടനകളിലും ഹാഷ് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുന്നു - ഹാഷ് ടേബിളുകൾ, കാർട്ടീഷ്യൻ മരങ്ങൾ. ഈ കേസിൽ ഹാഷ് ഫംഗ്ഷന്റെ ആവശ്യകതകൾ വ്യത്യസ്തമാണ്:

  • നല്ല ഡാറ്റ മിക്സബിലിറ്റി
  • വേഗത്തിലുള്ള കണക്കുകൂട്ടൽ അൽഗോരിതം

ഡാറ്റ അനുരഞ്ജനം

പൊതുവേ, ഒറിജിനൽ ഉപയോഗിക്കാതെ ചില വിവരങ്ങൾ ഒറിജിനലുമായി സാമ്യമുള്ളതായിരിക്കാൻ പരിശോധിക്കുന്നതായി ഈ ആപ്ലിക്കേഷനെ വിവരിക്കാം. അനുരഞ്ജനത്തിനായി, പരിശോധിച്ചുറപ്പിക്കുന്ന വിവരങ്ങളുടെ ഹാഷ് മൂല്യം ഉപയോഗിക്കുന്നു. ഈ ആപ്ലിക്കേഷന്റെ രണ്ട് പ്രധാന മേഖലകളുണ്ട്:

പിശകുകൾക്കായി പരിശോധിക്കുന്നു

ഉദാഹരണത്തിന്, പ്രധാന വാചകത്തിനൊപ്പം ആശയവിനിമയ ചാനലിലൂടെ ചെക്ക്സം കൈമാറ്റം ചെയ്യപ്പെടാം. സ്വീകരിക്കുന്ന അവസാനത്തിൽ, ചെക്ക്സം വീണ്ടും കണക്കാക്കുകയും ട്രാൻസ്മിറ്റ് ചെയ്ത മൂല്യവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യാം. ഒരു പൊരുത്തക്കേട് കണ്ടെത്തിയാൽ, ട്രാൻസ്മിഷൻ സമയത്ത് വികലത സംഭവിച്ചുവെന്നും ഒരു ആവർത്തനം അഭ്യർത്ഥിക്കാമെന്നും ഇതിനർത്ഥം.

ഈ കേസിൽ ഹാഷിംഗിന്റെ ഒരു ഗാർഹിക അനലോഗ്, നീങ്ങുമ്പോൾ, ലഗേജുകളുടെ എണ്ണം മെമ്മറിയിൽ സൂക്ഷിക്കുമ്പോൾ സാങ്കേതികതയായിരിക്കാം. തുടർന്ന്, പരിശോധിക്കാൻ, ഓരോ സ്യൂട്ട്കേസിനെക്കുറിച്ച് നിങ്ങൾ ഓർമ്മിക്കേണ്ടതില്ല, പക്ഷേ അവ എണ്ണുക. ഒരു പൊരുത്തം അർത്ഥമാക്കുന്നത് ഒരു സ്യൂട്ട്കേസും നഷ്ടപ്പെട്ടിട്ടില്ല എന്നാണ്. അതായത്, ലഗേജുകളുടെ എണ്ണം അതിന്റെ ഹാഷ് കോഡാണ്.

പാസ്ഫ്രെയ്സ് പരിശോധന

മിക്ക കേസുകളിലും, പാസ്‌ഫ്രെയ്‌സുകൾ ടാർഗെറ്റുകളിൽ സംഭരിക്കുന്നില്ല, അവയുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ സംഭരിച്ചിട്ടുള്ളൂ. പാസ്‌ഫ്രെയ്‌സുകൾ സംഭരിക്കുന്നത് അഭികാമ്യമല്ല, കാരണം വാക്യങ്ങളുള്ള ഒരു ഫയലിലേക്ക് അനധികൃത ആക്‌സസ് ഉണ്ടായാൽ, ആക്രമണകാരി എല്ലാ പാസ്‌ഫ്രെയ്‌സുകളും കണ്ടെത്തുകയും അവ ഉടനടി ഉപയോഗിക്കുകയും ചെയ്യും, കൂടാതെ ഹാഷ് മൂല്യങ്ങൾ സംഭരിക്കുമ്പോൾ, അവൻ ഹാഷ് മൂല്യങ്ങൾ മാത്രമേ പഠിക്കൂ. യഥാർത്ഥ ഡാറ്റയിലേക്ക് പഴയപടിയാക്കാൻ കഴിയാത്തവ, ഈ സാഹചര്യത്തിൽ, പാസ്ഫ്രെയ്സ്. പ്രാമാണീകരണ പ്രക്രിയയിൽ, നൽകിയ പാസ്‌ഫ്രെയ്‌സിന്റെ ഹാഷ് മൂല്യം കണക്കാക്കുകയും സംരക്ഷിച്ച ഒന്നുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു.

ഈ സാഹചര്യത്തിൽ ഒരു ഉദാഹരണം ഗ്നു/ലിനക്സും മൈക്രോസോഫ്റ്റ് വിൻഡോസ് എക്സ്പിയും ആയിരിക്കും. ഉപയോക്തൃ അക്കൗണ്ടുകളിൽ നിന്ന് പാസ്‌ഫ്രെയ്‌സുകളുടെ ഹാഷ് മൂല്യങ്ങൾ മാത്രമാണ് അവർ സംഭരിക്കുന്നത്.

ഡാറ്റ വീണ്ടെടുക്കൽ വേഗത്തിലാക്കുക

ഉദാഹരണത്തിന്, ടെക്സ്റ്റ് ഫീൽഡുകൾ ഒരു ഡാറ്റാബേസിലേക്ക് എഴുതുമ്പോൾ, അവയുടെ ഹാഷ് കോഡ് കണക്കാക്കുകയും ഡാറ്റ ആ ഹാഷ് കോഡിന് അനുയോജ്യമായ ഒരു വിഭാഗത്തിൽ സ്ഥാപിക്കുകയും ചെയ്യാം. തുടർന്ന്, ഡാറ്റയ്‌ക്കായി തിരയുമ്പോൾ, നിങ്ങൾ ആദ്യം ടെക്‌സ്‌റ്റിന്റെ ഹാഷ് കോഡ് കണക്കാക്കേണ്ടതുണ്ട്, ഏത് വിഭാഗത്തിലാണ് നിങ്ങൾ അത് തിരയേണ്ടതെന്ന് നിങ്ങൾക്ക് ഉടനടി അറിയാം, അതായത്, നിങ്ങൾ മുഴുവൻ ഡാറ്റാബേസിലും തിരയേണ്ടതില്ല, പക്ഷേ മാത്രം അതിന്റെ ഒരു വിഭാഗത്തിൽ (ഇത് തിരയലിനെ വളരെയധികം വേഗത്തിലാക്കുന്നു).

ഈ സാഹചര്യത്തിൽ ഹാഷിംഗിന്റെ ഒരു സാധാരണ അനലോഗ് അക്ഷരമാലാക്രമത്തിൽ ഒരു നിഘണ്ടുവിൽ വാക്കുകൾ സ്ഥാപിക്കുന്നതാണ്. ഒരു വാക്കിന്റെ ആദ്യ അക്ഷരം അതിന്റെ ഹാഷ് കോഡാണ്, തിരയുമ്പോൾ, ഞങ്ങൾ നിഘണ്ടു മുഴുവൻ നോക്കുന്നില്ല, മറിച്ച് ആവശ്യമുള്ള അക്ഷരം മാത്രം.

അൽഗോരിതങ്ങളുടെ പട്ടിക

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • സ്നെഫ്രു
  • കടുവ (ചുഴി
  • IP ഇന്റർനെറ്റ് ചെക്ക്സം (RFC 1071)

ലിങ്കുകൾ

വിക്കിമീഡിയ ഫൗണ്ടേഷൻ. 2010.

  • ഹെഷൻ മോഹിയൻ
  • ഹാഷ് കോഡ്

മറ്റ് നിഘണ്ടുവുകളിൽ "ഹാഷ് ഫംഗ്ഷൻ" എന്താണെന്ന് കാണുക:

    ഹാഷ് ഫംഗ്ഷൻ- ഒരു (വളരെ) വലിയ മൂല്യങ്ങളിൽ നിന്ന് മൂല്യങ്ങളുടെ (ഗണ്യമായി) ചെറിയ സെറ്റ് മൂല്യങ്ങളിലേക്ക് മാപ്പ് ചെയ്തുകൊണ്ട് ഒരു ഡാറ്റ അറേയുടെ ഹാഷിംഗ് നടത്തുന്ന ഒരു ഫംഗ്ഷൻ. ഇംഗ്ലീഷിൽ: ഹാഷ് ഫംഗ്‌ഷൻ ഇതും കാണുക: ക്രിപ്‌റ്റോഗ്രാഫിക് അൽഗോരിതംസ് ഫിനാൻഷ്യൽ... ... സാമ്പത്തിക നിഘണ്ടു

    ക്രിപ്റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്ഷൻ- അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ടെക്‌സ്‌റ്റിനെ ഒരു നിശ്ചിത (മിക്ക കേസുകളിലും ചെറിയ) ദൈർഘ്യമുള്ള ടെക്‌സ്‌റ്റാക്കി മാറ്റുന്ന ഒരു ഫംഗ്‌ഷൻ. ഡിജിറ്റൽ സിഗ്നേച്ചർ സ്കീമിലാണ് ഹാഷ് ഫംഗ്ഷനുകളുടെ പ്രധാന പ്രയോഗം. ഒരു ഡിജിറ്റൽ സിഗ്നേച്ചറിനേക്കാൾ വേഗത്തിൽ ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുന്നതിനാൽ, പകരം... ...

    വൺ വേ ഹാഷ് ഫംഗ്ഷൻ- ഹാഷ് ഫംഗ്ഷൻ, ഇത് ഒരു കമ്പ്യൂട്ടേഷണൽ റിവേഴ്‌സബിൾ ഫംഗ്‌ഷനാണ്. ഇംഗ്ലീഷിൽ: വൺ വേ ഹാഷ് ഫംഗ്‌ഷൻ ഇതും കാണുക: ക്രിപ്‌റ്റോഗ്രാഫിക് അൽഗോരിതംസ് ഫിനാൻഷ്യൽ ഡിക്ഷണറി ഫിനാം... സാമ്പത്തിക നിഘണ്ടു

    TIGER - ഹാഷ് ഫംഗ്ഷൻ- 1996-ൽ റോസ് ആൻഡേഴ്സണും എലി ബെഹാമും വികസിപ്പിച്ച ടൈഗർ ഹാഷ് ഫംഗ്ഷൻ. ആധുനിക കമ്പ്യൂട്ടറുകളിൽ, പ്രത്യേകിച്ച് 64-ബിറ്റ് കമ്പ്യൂട്ടറുകളിൽ വളരെ വേഗത്തിൽ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്ന ഒരു പുതിയ ഫാസ്റ്റ് ഹാഷ് ഫംഗ്‌ഷനാണ് TIGER ഹാഷ് ഫംഗ്‌ഷൻ. കടുവ... ... വിക്കിപീഡിയ

    വൺ-വേ ഹാഷ് ഫംഗ്ഷൻ- ഒരു വൺ-വേ ഫംഗ്‌ഷനായി, അതിന്റെ മൂല്യങ്ങൾ തുല്യമായ രണ്ട് വ്യത്യസ്ത ആർഗ്യുമെന്റുകൾ കണ്ടെത്തുന്നത് കമ്പ്യൂട്ടേഷണലി അസാധ്യമാണ്. [] വിഷയങ്ങൾ വിവര സുരക്ഷ EN വൺ വേ ഹാഷ് ഫംഗ്ഷൻ ... സാങ്കേതിക വിവർത്തകന്റെ ഗൈഡ്

    കടുവ (ഹാഷ് ഫംഗ്ഷൻ)- 1995-ൽ റോസ് ആൻഡേഴ്സണും എലി ബെഹാമും ചേർന്ന് വികസിപ്പിച്ച ടൈഗർ ഹാഷ് ഫംഗ്ഷൻ. 64-ബിറ്റ് കമ്പ്യൂട്ടറുകളിൽ പ്രത്യേകിച്ച് വേഗത്തിൽ പ്രവർത്തിക്കാനാണ് ടൈഗർ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. കടുവയ്ക്ക് പേറ്റന്റ് നിയന്ത്രണങ്ങളൊന്നുമില്ല, ഇത് ഉപയോഗിച്ച് സ്വതന്ത്രമായി ഉപയോഗിക്കാം... ... വിക്കിപീഡിയ

    ഹാഷ് ഫംഗ്ഷൻ- ഹാഷ് ഫംഗ്‌ഷൻ 1. ഒരു ഹാഷ് ടേബിളിലേക്ക് ഡാറ്റ നൽകുന്നതിനുള്ള പ്രക്രിയയെ നിയന്ത്രിക്കുന്ന ഒരു ഫംഗ്‌ഷൻ, നിർണ്ണയിക്കുന്നു (സ്വതന്ത്ര സെല്ലുകളുടെ വിലാസങ്ങൾ. 2. ഒരു തുറന്ന സന്ദേശത്തിന്റെ ഒരു ശകലത്തിന്റെ ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള എൻക്രിപ്റ്റ് ചെയ്‌ത സ്‌ട്രിംഗിലേക്ക് മാപ്പിംഗ് ചെയ്യുന്നതിനെ പ്രതിനിധീകരിക്കുന്ന ഒരു ഫംഗ്‌ഷൻ. ഇതിൽ...... സാങ്കേതിക വിവർത്തകന്റെ ഗൈഡ്

    ഹാഷ് ടേബിൾ- പ്രോഗ്രാമിംഗിൽ, ഒരു ഹാഷ് ടേബിൾ അസോസിയേറ്റീവ് അറേ ഇന്റർഫേസ് നടപ്പിലാക്കുന്ന ഒരു ഡാറ്റാ ഘടനയാണ്, അതായത്, ജോഡികൾ (കീ, മൂല്യം) സംഭരിക്കാനും മൂന്ന് പ്രവർത്തനങ്ങൾ നടത്താനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു: ഒരു പുതിയ ജോഡി ചേർക്കുന്നതിനുള്ള പ്രവർത്തനം, തിരയൽ പ്രവർത്തനം, ഇല്ലാതാക്കൽ പ്രവർത്തനം... വിക്കിപീഡിയ

    ഹാഷ് കോഡ്- ഹാഷിംഗ് (ചിലപ്പോൾ ഹാഷിംഗ്, ഇംഗ്ലീഷ് ഹാഷിംഗ്) അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു ഇൻപുട്ട് ഡാറ്റ അറേയെ ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ഔട്ട്‌പുട്ട് ബിറ്റ് സ്‌ട്രിംഗിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു. അത്തരം പരിവർത്തനങ്ങളെ ഹാഷ് ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ കൺവ്യൂഷൻ ഫംഗ്‌ഷനുകൾ എന്നും വിളിക്കുന്നു, അവയുടെ ഫലങ്ങൾ... ... വിക്കിപീഡിയ

    ഹാഷ് ഫംഗ്ഷൻ കൂട്ടിയിടി- H(x) = H(y) എന്നിങ്ങനെ രണ്ട് വ്യത്യസ്ത ഇൻപുട്ട് ഡാറ്റ ബ്ലോക്കുകളായ x, y എന്നിവയാണ് ഒരു ഹാഷ് ഫംഗ്‌ഷൻ H കൂട്ടിയിടി. മിക്ക ഹാഷ് ഫംഗ്‌ഷനുകൾക്കും കൂട്ടിയിടികൾ നിലവിലുണ്ട്, എന്നാൽ “നല്ല” ഹാഷ് ഫംഗ്‌ഷനുകൾക്ക് അവയുടെ ആവൃത്തിയുടെ ആവൃത്തി സൈദ്ധാന്തിക മിനിമത്തിന് അടുത്താണ്. ഇൻ... ... വിക്കിപീഡിയ

ചോദ്യങ്ങൾ:

1. ഒരു ഹാഷ് ഫംഗ്ഷൻ എന്ന ആശയം.

2. ഒരു ഹാഷ് ഫംഗ്ഷൻ രൂപീകരിക്കുന്നതിന് ബ്ലോക്ക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു.

3. ഹാഷ് ഫംഗ്ഷൻ ജനറേഷൻ അൽഗോരിതങ്ങളുടെ അവലോകനം.

1. ഒരു ഹാഷ് ഫംഗ്ഷന്റെ ആശയം

ഹാഷ് ഫംഗ്ഷൻ(ഹാഷ് ഫംഗ്‌ഷൻ) എന്നത് ഒരു ഗണിതശാസ്ത്രപരമായ അല്ലെങ്കിൽ മറ്റ് ഫംഗ്‌ഷനാണ്, അത് അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു സ്‌ട്രിങ്ങിന്, ചില പൂർണ്ണസംഖ്യ മൂല്യം അല്ലെങ്കിൽ ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ മറ്റ് ചില സ്‌ട്രിംഗുകൾ കണക്കാക്കുന്നു. ഗണിതശാസ്ത്രപരമായി ഇത് ഇങ്ങനെ എഴുതാം:

എച്ച് = H(M) ,

എവിടെ എം - യഥാർത്ഥ സന്ദേശം, ചിലപ്പോൾ വിളിക്കുന്നു പ്രോട്ടോടൈപ്പ് , എ എച്ച് - ഫലം, ഹാഷ് മൂല്യം (കൂടാതെ ഹാഷ് കോഡ്അഥവാ സന്ദേശം ഡൈജസ്റ്റ്(ഇംഗ്ലീഷിൽ നിന്ന് സന്ദേശം ഡൈജസ്റ്റ്)).

ഹാഷ് ഫംഗ്‌ഷന്റെ അർത്ഥം പ്രീ-ഇമേജിന്റെ സ്വഭാവ സവിശേഷത നിർണ്ണയിക്കുക എന്നതാണ് - ഹാഷ് ഫംഗ്‌ഷന്റെ മൂല്യം. ഈ മൂല്യത്തിന് സാധാരണയായി 64 അല്ലെങ്കിൽ 128 ബിറ്റുകൾ പോലെ ചില നിശ്ചിത വലുപ്പങ്ങളുണ്ട്. ഏത് പ്രശ്‌നവും പരിഹരിക്കാൻ ഹാഷ് കോഡ് കൂടുതൽ വിശകലനം ചെയ്യാം. ഉദാഹരണത്തിന്, ഡാറ്റ താരതമ്യം ചെയ്യാൻ ഹാഷിംഗ് ഉപയോഗിക്കാം: രണ്ട് ഡാറ്റ അറേകൾക്ക് വ്യത്യസ്ത ഹാഷ് കോഡുകൾ ഉണ്ടെങ്കിൽ, അറേകൾ വ്യത്യസ്തമാണെന്ന് ഉറപ്പുനൽകുന്നു; അവ സമാനമാണെങ്കിൽ, അറേകൾ മിക്കവാറും സമാനമായിരിക്കും. പൊതുവേ, ഹാഷ് ഫംഗ്ഷൻ മൂല്യങ്ങളുടെ എണ്ണം ഇൻപുട്ട് ഡാറ്റ ഓപ്ഷനുകളുടെ എണ്ണത്തേക്കാൾ കുറവായതിനാൽ സോഴ്സ് ഡാറ്റയും ഹാഷ് കോഡും തമ്മിൽ പരസ്പരം കത്തിടപാടുകൾ ഇല്ല. തൽഫലമായി, ഒരേ ഹാഷ് കോഡുകൾ നൽകുന്ന നിരവധി ഇൻപുട്ട് സന്ദേശങ്ങളുണ്ട് (അത്തരം സാഹചര്യങ്ങളെ വിളിക്കുന്നു കൂട്ടിയിടികൾ ). ഹാഷ് ഫംഗ്‌ഷനുകളുടെ ഗുണനിലവാരം വിലയിരുത്തുന്നതിൽ കൂട്ടിയിടികളുടെ സംഭാവ്യത ഒരു പ്രധാന പങ്ക് വഹിക്കുന്നു.

ആധുനിക ക്രിപ്റ്റോഗ്രഫിയിൽ ഹാഷ് ഫംഗ്ഷനുകൾ വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നു.

ഇനിപ്പറയുന്ന രീതിയിൽ മോഡുലോ-2 സം ഓപ്പറേഷൻ ഉപയോഗിച്ച് ഏറ്റവും ലളിതമായ ഹാഷ് ഫംഗ്ഷൻ നിർമ്മിക്കാൻ കഴിയും: ഇൻപുട്ട് സ്ട്രിംഗ് നേടുക, എല്ലാ ബൈറ്റുകളും മൊഡ്യൂളോ 2 ചേർക്കുകയും ഫല ബൈറ്റ് ഹാഷ് മൂല്യമായി നൽകുകയും ചെയ്യുക. ഇൻപുട്ട് സന്ദേശത്തിന്റെ വലുപ്പം പരിഗണിക്കാതെ തന്നെ ഈ കേസിൽ ഹാഷ് ഫംഗ്ഷൻ മൂല്യത്തിന്റെ ദൈർഘ്യം 8 ബിറ്റുകൾ ആയിരിക്കും.

ഉദാഹരണത്തിന്, ഡിജിറ്റൽ രൂപത്തിലേക്ക് വിവർത്തനം ചെയ്ത യഥാർത്ഥ സന്ദേശം ഇനിപ്പറയുന്നതാണെന്ന് പറയാം (ഹെക്സാഡെസിമലിൽ):

2 ബി1 4 എ9 5 എഫ്4

നമുക്ക് സന്ദേശം ബൈനറി രൂപത്തിലേക്ക് പരിവർത്തനം ചെയ്യാം, ബൈറ്റുകൾ ഒന്നിനു താഴെ മറ്റൊന്നായി എഴുതുക, കൂടാതെ ഓരോ കോളത്തിലെയും ബിറ്റുകൾ ചേർക്കുക 2:

0010 1011

0001 0100

1010 1001

0101 1111

1110 0100

——————-

0010 1101

ഫലമായി: 0010 1101 അഥവാ 2 ഡികൂടാതെ ഹാഷ് ഫംഗ്‌ഷൻ മൂല്യവും ആയിരിക്കും.

എന്നിരുന്നാലും, ഒരു ഇലക്ട്രോണിക് സിഗ്നേച്ചർ സൃഷ്ടിക്കുന്നത് പോലെയുള്ള ക്രിപ്റ്റോഗ്രാഫിക് ആവശ്യങ്ങൾക്കായി അത്തരമൊരു ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിക്കാൻ കഴിയില്ല, കാരണം ചെക്ക്സം മൂല്യം മാറ്റാതെ ഒപ്പിട്ട സന്ദേശത്തിന്റെ ഉള്ളടക്കം മാറ്റുന്നത് വളരെ എളുപ്പമാണ്.

അതിനാൽ, പരിഗണിക്കപ്പെടുന്ന ഹാഷ് ഫംഗ്ഷൻ ക്രിപ്റ്റോഗ്രാഫിക് ആപ്ലിക്കേഷനുകൾക്ക് അനുയോജ്യമല്ല. ക്രിപ്‌റ്റോഗ്രാഫിയിൽ, ഒരേ ഹാഷ് മൂല്യമുള്ള രണ്ട് പ്രിമേജുകൾ സൃഷ്‌ടിക്കുന്നത് ബുദ്ധിമുട്ടാണെങ്കിൽ, കൂടാതെ ഫംഗ്‌ഷന്റെ ഔട്ട്‌പുട്ടിന് ഇൻപുട്ടിൽ വ്യക്തമായ ആശ്രിതത്വം ഇല്ലെങ്കിൽ ഒരു ഹാഷ് ഫംഗ്‌ഷൻ നല്ലതായി കണക്കാക്കുന്നു.

ക്രിപ്‌റ്റോഗ്രാഫിക് ഹാഷ് ഫംഗ്‌ഷനുകൾക്കുള്ള അടിസ്ഥാന ആവശ്യകതകൾ നമുക്ക് രൂപപ്പെടുത്താം:

· ഹാഷ് ഫംഗ്ഷൻ ഏത് വലുപ്പത്തിലുള്ള സന്ദേശത്തിനും ബാധകമായിരിക്കണം;

ഫംഗ്ഷൻ മൂല്യത്തിന്റെ കണക്കുകൂട്ടൽ വേണ്ടത്ര വേഗത്തിൽ നടത്തണം;

അറിയപ്പെടുന്ന ഒരു ഹാഷ് ഫംഗ്‌ഷൻ മൂല്യം നൽകിയാൽ, അനുയോജ്യമായ ഒരു പ്രോട്ടോടൈപ്പ് കണ്ടെത്തുന്നത് ബുദ്ധിമുട്ടായിരിക്കും (ഏതാണ്ട് അസാധ്യമാണ്). എം ;

· അറിയപ്പെടുന്ന ഒരു സന്ദേശത്തോടൊപ്പം എം മറ്റൊരു പോസ്‌റ്റ് കണ്ടെത്താൻ പ്രയാസപ്പെടണം എം' യഥാർത്ഥ സന്ദേശത്തിന്റെ അതേ ഹാഷ് മൂല്യത്തിൽ;

· ഒരേ ഹാഷ് മൂല്യമുള്ള ഏതെങ്കിലും ജോഡി ക്രമരഹിതമായി വ്യത്യസ്‌തമായ സന്ദേശങ്ങൾ കണ്ടെത്തുന്നത് ബുദ്ധിമുട്ടാണ്.

മേൽപ്പറഞ്ഞ എല്ലാ ആവശ്യകതകളും നിറവേറ്റുന്ന ഒരു ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിക്കുന്നത് എളുപ്പമുള്ള കാര്യമല്ല. ഫംഗ്ഷൻ ഇൻപുട്ടിന് അനിയന്ത്രിതമായ വലുപ്പത്തിലുള്ള ഡാറ്റ ലഭിക്കുന്നു എന്നതും ഓർത്തിരിക്കേണ്ടത് ആവശ്യമാണ്, കൂടാതെ വ്യത്യസ്ത വലുപ്പത്തിലുള്ള ഡാറ്റയ്ക്ക് ഹാഷ് ഫലം ഒരുപോലെ ആയിരിക്കരുത്.

നിലവിൽ, പ്രായോഗികമായി, ഹാഷ് ഫംഗ്ഷനുകൾ എന്നത് ഇൻപുട്ട് മെസേജ് ബ്ലോക്കിനെ ബ്ലോക്ക് വഴി പ്രോസസ്സ് ചെയ്യുകയും ഹാഷ് മൂല്യം കണക്കാക്കുകയും ചെയ്യുന്ന ഫംഗ്ഷനുകളാണ് എച്ച് ഐ ഓരോ ബ്ലോക്കിനും എം ഐ ഫോമിന്റെ ആശ്രിതത്വത്തെ അടിസ്ഥാനമാക്കിയുള്ള ഇൻപുട്ട് സന്ദേശം

h i = H(M i ,h i-1),

എവിടെ h i-1 - ഇൻപുട്ട് ഡാറ്റയുടെ മുൻ ബ്ലോക്കിനായി ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുമ്പോൾ ലഭിച്ച ഫലം.

ഫലമായി, ഹാഷ് ഫംഗ്ഷന്റെ ഔട്ട്പുട്ട് എച്ച് എൻ എല്ലാവരുടെയും പ്രവർത്തനമാണ് എൻ ഇൻപുട്ട് സന്ദേശ ബ്ലോക്കുകൾ.

2. ഒരു ഹാഷ് ഫംഗ്‌ഷൻ സൃഷ്‌ടിക്കുന്നതിന് ബ്ലോക്ക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു.

ഒരു ബ്ലോക്ക് സിമെട്രിക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഒരു ഹാഷ് ഫംഗ്‌ഷനായി ഉപയോഗിക്കാം. ഉപയോഗിച്ചിരിക്കുന്ന ബ്ലോക്ക് അൽഗോരിതം ക്രിപ്റ്റോഗ്രാഫിക്കായി ശക്തമാണെങ്കിൽ, അതിനെ അടിസ്ഥാനമാക്കിയുള്ള ഹാഷ് ഫംഗ്ഷൻ സുരക്ഷിതമായിരിക്കും.

ഒരു ഹാഷ് കോഡ് ലഭിക്കുന്നതിന് ഒരു ബ്ലോക്ക് അൽഗോരിതം ഉപയോഗിക്കുന്നതിനുള്ള ഏറ്റവും ലളിതമായ മാർഗം സന്ദേശം CBC മോഡിൽ എൻക്രിപ്റ്റ് ചെയ്യുകയാണ് ( സൈഫർ ബ്ലോക്ക് ചെയിനിംഗ് - സിഫർടെക്സ്റ്റ് ബ്ലോക്ക് ചെയിനിംഗ് മോഡ്). ഈ സാഹചര്യത്തിൽ, സന്ദേശത്തെ ബ്ലോക്കുകളുടെ ഒരു ശ്രേണിയായി പ്രതിനിധീകരിക്കുന്നു, അതിന്റെ നീളം എൻക്രിപ്ഷൻ അൽഗോരിതം ബ്ലോക്കിന്റെ ദൈർഘ്യത്തിന് തുല്യമാണ്. ആവശ്യമെങ്കിൽ, അവസാനത്തെ ബ്ലോക്ക് വലതുവശത്ത് പൂജ്യങ്ങൾ ഉപയോഗിച്ച് പാഡ് ചെയ്ത് ആവശ്യമായ ദൈർഘ്യമുള്ള ഒരു ബ്ലോക്ക് സൃഷ്ടിക്കുന്നു. ടെക്‌സ്‌റ്റിന്റെ അവസാന എൻക്രിപ്റ്റ് ചെയ്‌ത ബ്ലോക്ക് ആയിരിക്കും ഹാഷ് മൂല്യം. വിശ്വസനീയമായ ബ്ലോക്ക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിച്ചാൽ, തത്ഫലമായുണ്ടാകുന്ന ഹാഷ് മൂല്യത്തിന് ഇനിപ്പറയുന്ന ഗുണങ്ങൾ ഉണ്ടായിരിക്കും:

എൻക്രിപ്ഷൻ കീ അറിയാതെ തന്നിരിക്കുന്ന തുറന്ന വിവരങ്ങളുടെ ഒരു ഹാഷ് മൂല്യം കണക്കാക്കുന്നത് മിക്കവാറും അസാധ്യമാണ്;

എൻക്രിപ്ഷൻ കീ അറിയാതെ തന്നിരിക്കുന്ന ഹാഷ് മൂല്യത്തിനായി ഓപ്പൺ ഡാറ്റ തിരഞ്ഞെടുക്കുന്നത് മിക്കവാറും അസാധ്യമാണ്.

ഇങ്ങനെ ജനറേറ്റ് ചെയ്യുന്ന ഹാഷ് മൂല്യത്തെ സാധാരണയായി വിളിക്കുന്നു അനുകരണം ചേർക്കൽ അഥവാ ആധികാരികത സന്ദേശത്തിന്റെ സമഗ്രത പരിശോധിക്കാൻ ഉപയോഗിക്കുന്നു. അതിനാൽ, ഓപ്പൺ ഡാറ്റയെയും രഹസ്യ കീ വിവരങ്ങളെയും ആശ്രയിക്കുന്ന ഒരു നിയന്ത്രണ സംയോജനമാണ് അനുകരണ ഉൾപ്പെടുത്തൽ. വിവര ശ്രേണിയിലെ ആകസ്മികമോ മനഃപൂർവമോ ആയ എല്ലാ മാറ്റങ്ങളും കണ്ടെത്തുക എന്നതാണ് അനുകരണീയമായ ഉൾപ്പെടുത്തൽ ഉപയോഗിക്കുന്നതിന്റെ ലക്ഷ്യം. ഇൻപുട്ട് സന്ദേശം പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഹാഷ് ഫംഗ്‌ഷൻ വഴി ലഭിക്കുന്ന മൂല്യം സന്ദേശം ശരിയാണെന്ന് അറിയുന്ന സമയത്ത് സന്ദേശത്തോട് കൂട്ടിച്ചേർക്കും. സ്വീകരിച്ച സന്ദേശത്തിന്റെ അനുകരിച്ച സന്ദേശം കണക്കാക്കി, ലഭിച്ച ഹാഷ് കോഡുമായി താരതമ്യം ചെയ്തുകൊണ്ട് സ്വീകർത്താവ് സന്ദേശത്തിന്റെ സമഗ്രത പരിശോധിക്കുന്നു, അത് സുരക്ഷിതമായ രീതിയിൽ കൈമാറണം. അയയ്ക്കുന്നയാളുടെ സ്വകാര്യ കീ ഉപയോഗിച്ച് അനുകരണ ഉൾപ്പെടുത്തൽ എൻക്രിപ്റ്റ് ചെയ്യുക എന്നതാണ് അത്തരം സുരക്ഷിതമായ രീതികളിലൊന്ന്, അതായത്. ഒരു ഒപ്പ് സൃഷ്ടിക്കുന്നു. അയയ്ക്കുന്നയാൾക്കും സ്വീകർത്താവിനും ഒരു പൊതു സമമിതി എൻക്രിപ്ഷൻ കീ ഉണ്ടെങ്കിൽ, ഫലമായുണ്ടാകുന്ന ഹാഷ് കോഡ് ഒരു സമമിതി എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്യാനും സാധിക്കും.

അനുകരണ ഉൾപ്പെടുത്തലുകൾ നേടുന്നതിനും ഉപയോഗിക്കുന്നതിനുമുള്ള നിർദ്ദിഷ്ട പ്രക്രിയ ആഭ്യന്തര സ്റ്റാൻഡേർഡ് GOST 28147-89 ൽ വിവരിച്ചിരിക്കുന്നു. ട്രാൻസ്മിറ്റ് ചെയ്ത സന്ദേശത്തിന്റെ സമഗ്രത നിയന്ത്രിക്കുന്നതിന് സൈഫർ ബ്ലോക്ക് ചെയിനിംഗ് മോഡിലെ മുഴുവൻ സന്ദേശ എൻക്രിപ്ഷൻ പ്രവർത്തനത്തിന്റെയും ഔട്ട്പുട്ടിൽ ലഭിച്ച ബ്ലോക്കിന്റെ താഴ്ന്ന 32 ബിറ്റുകൾ ഉപയോഗിക്കാൻ സ്റ്റാൻഡേർഡ് നിർദ്ദേശിക്കുന്നു. അതുപോലെ, ഒരു മോക്ക് ഇൻസേർട്ട് സൃഷ്ടിക്കാൻ ഏതെങ്കിലും ബ്ലോക്ക് സിമ്മട്രിക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കാം.

ഒരു ഹാഷ് കോഡ് സൃഷ്ടിക്കുന്നതിന് ഒരു ബ്ലോക്ക് സൈഫർ ഉപയോഗിക്കുന്നതിനുള്ള മറ്റൊരു സാധ്യമായ മാർഗ്ഗം ഇനിപ്പറയുന്നതാണ്. യഥാർത്ഥ സന്ദേശം ബ്ലോക്കുകളിൽ തുടർച്ചയായി പ്രോസസ്സ് ചെയ്യുന്നു. അവസാന ബ്ലോക്ക് ആവശ്യമെങ്കിൽ പൂജ്യങ്ങൾ കൊണ്ട് പാഡ് ചെയ്യുന്നു; ചിലപ്പോൾ ഒരു ബൈനറി നമ്പറിന്റെ രൂപത്തിൽ സന്ദേശ ദൈർഘ്യം അവസാന ബ്ലോക്കിലേക്ക് ചേർക്കും. ഓരോ ഘട്ടത്തിലും, മുൻ ഘട്ടത്തിൽ ലഭിച്ച ഹാഷ് മൂല്യം ഞങ്ങൾ എൻക്രിപ്റ്റ് ചെയ്യുന്നു, നിലവിലെ സന്ദേശ ബ്ലോക്ക് കീ ആയി ഉപയോഗിക്കുന്നു. അവസാനം ലഭിച്ച എൻക്രിപ്റ്റ് ചെയ്ത മൂല്യം അന്തിമ ഹാഷ് ഫലമായിരിക്കും.

അങ്ങനെ, സാധാരണ സന്ദേശ എൻക്രിപ്ഷൻ സ്കീമാണെങ്കിൽ എം ഒരു ബ്ലോക്ക് സൈഫർ ഉപയോഗിക്കുന്നു എഫ് താക്കോലിൽ TO എന്ന് ഞങ്ങൾ രേഖപ്പെടുത്തി E= f(M,K) , തുടർന്ന് ഹാഷ് കോഡ് നേടുന്നതിനുള്ള സ്കീം എച്ച് മുകളിൽ വിവരിച്ച അൽഗോരിതം ഉപയോഗിക്കുന്നത് ഇങ്ങനെ പ്രതിനിധീകരിക്കാം

എച്ച് ഐ = എഫ് ( എച്ച് ഐ -1 , എം )

പ്രാരംഭ ഹാഷ് കോഡ് പോലെ h 0 കുറച്ച് സ്ഥിരമായി എടുക്കുക. ലളിതമായ മാറ്റിസ്ഥാപിക്കൽ മോഡിലാണ് എൻക്രിപ്ഷൻ നടത്തുന്നത്. ഈ രീതി ഉപയോഗിക്കുമ്പോൾ, ബ്ലോക്ക് വലുപ്പം കീ ദൈർഘ്യത്തിന് തുല്യമാണ്, ഹാഷ് മൂല്യത്തിന്റെ വലുപ്പം ബ്ലോക്ക് നീളം ആയിരിക്കും.

ലളിതമായ മാറ്റിസ്ഥാപിക്കൽ മോഡിൽ ഒരു ബ്ലോക്ക് സൈഫർ ഉപയോഗിക്കുന്നതിനുള്ള മറ്റൊരു മാർഗവും സാധ്യമാണ്: സന്ദേശ ഘടകങ്ങൾ മുമ്പത്തെ ഘട്ടത്തിൽ ലഭിച്ച ഹാഷ് മൂല്യങ്ങൾ ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്തിരിക്കുന്നു:

എച്ച് ഐ = എഫ് ( എം , എച്ച് ഐ -1 ,)

വാസ്തവത്തിൽ, ഒരു ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിക്കുന്നതിന് ഒരു ബ്ലോക്ക് സൈഫർ ഉപയോഗിക്കുന്നതിന് മറ്റ് നിരവധി സ്കീമുകൾ ഉണ്ട്. അനുവദിക്കുക എം ഐ - യഥാർത്ഥ സന്ദേശ ബ്ലോക്ക്, എച്ച് ഐ - ഹാഷ് ഫംഗ്‌ഷൻ മൂല്യം ഓണാണ് - ആ ഘട്ടത്തിൽ, എഫ് - ലളിതമായ റീപ്ലേസ്‌മെന്റ് മോഡിൽ ഉപയോഗിക്കുന്ന ബ്ലോക്ക് എൻക്രിപ്ഷൻ അൽഗോരിതം; - മോഡുലോ 2 കൂട്ടിച്ചേർക്കൽ പ്രവർത്തനം. തുടർന്ന്, ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന ഹാഷ് ഫംഗ്ഷൻ ജനറേഷൻ സ്കീമുകൾ സാധ്യമാണ്:

ഈ സ്കീമുകളിലെല്ലാം, ജനറേറ്റ് ചെയ്ത ഹാഷ് മൂല്യത്തിന്റെ ദൈർഘ്യം എൻക്രിപ്ഷൻ ബ്ലോക്കിന്റെ ദൈർഘ്യത്തിന് തുല്യമാണ്. ഇവയെല്ലാം, ഹാഷ് മൂല്യങ്ങൾ കണക്കാക്കാൻ ബ്ലോക്ക് എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നതിനുള്ള മറ്റ് ചില സ്കീമുകളും പ്രായോഗികമായി ഉപയോഗിക്കാവുന്നതാണ്.

ബ്ലോക്ക് അൽഗോരിതം അടിസ്ഥാനമാക്കി രൂപകൽപ്പന ചെയ്ത ഹാഷ് ഫംഗ്ഷനുകളുടെ പ്രധാന പോരായ്മ താരതമ്യേന കുറഞ്ഞ പ്രവർത്തന വേഗതയാണ്. ഇൻപുട്ട് ഡാറ്റയിലെ കുറച്ച് പ്രവർത്തനങ്ങൾ കൊണ്ട് ആവശ്യമായ ക്രിപ്റ്റോഗ്രാഫിക് ശക്തി കൈവരിക്കാനാകും. വേഗതയേറിയ ഹാഷിംഗ് അൽഗോരിതങ്ങൾ ഉണ്ട് (അവയിൽ ഏറ്റവും സാധാരണമായത് MD5, SHA-1, SHA-2, GOST R 34.11-94 എന്നിവയാണ്).

3. ഹാഷ് ഫംഗ്ഷൻ ജനറേഷൻ അൽഗോരിതങ്ങളുടെ അവലോകനം.

നിലവിൽ, ഹാഷ് ഫംഗ്ഷൻ കണക്കാക്കുന്നതിനുള്ള വിവിധ പ്രത്യേക അൽഗോരിതങ്ങൾ നിർദ്ദേശിക്കപ്പെട്ടിട്ടുണ്ട്, അവ പ്രായോഗികമായി ഉപയോഗിക്കുന്നു. MD5, SHA-1, SHA-2 എന്നിവയും SHA-യുടെ മറ്റ് പതിപ്പുകളും GOST R 34.11-94-ൽ സജ്ജീകരിച്ചിട്ടുള്ള ആഭ്യന്തര അൽഗോരിതവുമാണ് ഏറ്റവും അറിയപ്പെടുന്ന അൽഗോരിതങ്ങൾ.

അൽഗോരിതം MD5 MD4 ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിക്കുന്നതിനുള്ള അൽഗോരിതം മെച്ചപ്പെടുത്തിയതിന്റെ ഫലമായി ഇരുപതാം നൂറ്റാണ്ടിന്റെ 90-കളുടെ തുടക്കത്തിൽ പ്രത്യക്ഷപ്പെട്ടു. "MD" എന്ന പേരിലുള്ള പ്രതീകങ്ങൾ മെസേജ് ഡൈജസ്റ്റിനെ സൂചിപ്പിക്കുന്നു - സന്ദേശത്തിന്റെ സംഗ്രഹം. MD4, MD5 അൽഗോരിതങ്ങളുടെ രചയിതാവ് R. Rivest ആണ്. ഒരു അനിയന്ത്രിതമായ സന്ദേശത്തിനായി MD5 ഉപയോഗിക്കുന്നത് 128-ബിറ്റ് ഹാഷ് മൂല്യം ഉണ്ടാക്കുന്നു. 512 ബിറ്റുകളുടെ ബ്ലോക്കുകളിലാണ് ഇൻപുട്ട് ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നത്. അൽഗോരിതം പ്രാഥമിക ലോജിക്കൽ ഓപ്പറേഷനുകളും (ഇൻവേർഷൻ, കൺജക്ഷൻ, സങ്കലന മോഡുലോ 2, സൈക്ലിക് ഷിഫ്റ്റുകൾ മുതലായവ) സാധാരണ ഗണിത സങ്കലനവും ഉപയോഗിക്കുന്നു. അൽഗോരിതത്തിന്റെ ഈ പ്രാഥമിക പ്രവർത്തനങ്ങളുടെ സങ്കീർണ്ണമായ ആവർത്തനം, പ്രോസസ്സിംഗിനു ശേഷമുള്ള ഫലം നന്നായി മിക്സഡ് ആണെന്ന് ഉറപ്പാക്കുന്നു. അതിനാൽ, ക്രമരഹിതമായി തിരഞ്ഞെടുത്ത രണ്ട് സന്ദേശങ്ങൾക്ക് ഒരേ ഹാഷ് കോഡ് ഉണ്ടാകാൻ സാധ്യതയില്ല. MD5 അൽഗോരിതത്തിന് ഇനിപ്പറയുന്ന പ്രോപ്പർട്ടി ഉണ്ട്: തത്ഫലമായുണ്ടാകുന്ന ഹാഷ് മൂല്യത്തിന്റെ ഓരോ ബിറ്റും ഇൻപുട്ടിന്റെ ഓരോ ബിറ്റിന്റെയും പ്രവർത്തനമാണ്. 128-ബിറ്റ് ഹാഷ് മൂല്യത്തിനായുള്ള ഏറ്റവും ശക്തമായ ഹാഷ് ഫംഗ്‌ഷനായി MD5 കണക്കാക്കപ്പെടുന്നു.

അൽഗോരിതം SHA(Secure Hash Algorithm) യുഎസ് നാഷണൽ ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് സ്റ്റാൻഡേർഡ് ആൻഡ് ടെക്നോളജി (NIST) വികസിപ്പിച്ചെടുത്തതും 1993-ൽ യുഎസ് ഫെഡറൽ ഇൻഫർമേഷൻ സ്റ്റാൻഡേർഡായി പ്രസിദ്ധീകരിച്ചതുമാണ്. MD5 പോലെ SHA-1, MD4 അൽഗോരിതം അടിസ്ഥാനമാക്കിയുള്ളതാണ്. യഥാർത്ഥ സന്ദേശം 512-ബിറ്റ് ബ്ലോക്കുകളിൽ പ്രോസസ്സ് ചെയ്യുന്നതിലൂടെ SHA-1 ഒരു 160-ബിറ്റ് ഹാഷ് മൂല്യം സൃഷ്ടിക്കുന്നു. SHA-1 അൽഗോരിതം ലളിതമായ ലോജിക്കൽ, ഗണിത പ്രവർത്തനങ്ങളും ഉപയോഗിക്കുന്നു. SHA-1 ഉം MD5 ഉം തമ്മിലുള്ള ഏറ്റവും പ്രധാനപ്പെട്ട വ്യത്യാസം, SHA-1 ഹാഷ് കോഡ് MD5 ഹാഷ് കോഡിനേക്കാൾ 32 ബിറ്റുകൾ കൂടുതലാണ് എന്നതാണ്. ക്രിപ്‌റ്റനാലിസിസിന്റെ ബുദ്ധിമുട്ടിൽ രണ്ട് അൽഗോരിതങ്ങളും തുല്യമാണെന്ന് കരുതുകയാണെങ്കിൽ, SHA-1 ആണ് ശക്തമായ അൽഗോരിതം. ഒരു ബ്രൂട്ട് ഫോഴ്‌സ് അറ്റാക്ക് (ബ്രൂട്ട് ഫോഴ്‌സ് അറ്റാക്ക്) ഉപയോഗിച്ച്, തന്നിരിക്കുന്ന ഹാഷ് കോഡുള്ള ഒരു അനിയന്ത്രിതമായ സന്ദേശം സൃഷ്ടിക്കുന്നത് കൂടുതൽ ബുദ്ധിമുട്ടാണ്, കൂടാതെ ഒരേ ഹാഷ് കോഡുള്ള രണ്ട് സന്ദേശങ്ങൾ സൃഷ്ടിക്കുന്നത് കൂടുതൽ ബുദ്ധിമുട്ടാണ്.

2001-ൽ, US നാഷണൽ ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് സ്റ്റാൻഡേർഡ്‌സ് ആൻഡ് ടെക്‌നോളജി, SHA-1-നേക്കാൾ ദൈർഘ്യമേറിയ ഹാഷ് കോഡ് ദൈർഘ്യമുള്ള മൂന്ന് ഹാഷ് ഫംഗ്‌ഷനുകൾ ഒരു മാനദണ്ഡമായി സ്വീകരിച്ചു. ഈ ഹാഷ് ഫംഗ്ഷനുകളെ പലപ്പോഴും SHA-2 അല്ലെങ്കിൽ SHA-256, SHA-384, SHA-512 എന്ന് വിളിക്കുന്നു (അൽഗരിതങ്ങൾ സൃഷ്ടിച്ച ഹാഷ് കോഡിന്റെ ദൈർഘ്യത്തെ പേര് സൂചിപ്പിക്കുന്നു). ഈ അൽഗോരിതങ്ങൾ സൃഷ്ടിച്ച ഹാഷ് കോഡിന്റെ ദൈർഘ്യത്തിൽ മാത്രമല്ല, ഉപയോഗിച്ച ആന്തരിക പ്രവർത്തനങ്ങളിലും പ്രോസസ് ചെയ്ത ബ്ലോക്കിന്റെ ദൈർഘ്യത്തിലും വ്യത്യാസമുണ്ട് (SHA-256 ന് 512 ബ്ലോക്ക് നീളമുണ്ട്, അതേസമയം SHA-384, SHA-512 എന്നിവയ്ക്ക് ഒരു ബ്ലോക്കുണ്ട്. ദൈർഘ്യം 1024 ബിറ്റുകൾ). SHA അൽഗോരിതം ക്രമാനുഗതമായി മെച്ചപ്പെടുത്തുന്നത് അതിന്റെ ക്രിപ്റ്റോഗ്രാഫിക് ശക്തിയിൽ വർദ്ധനവിന് കാരണമാകുന്നു. പരിഗണനയിലുള്ള അൽഗോരിതങ്ങൾ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ ഉണ്ടായിരുന്നിട്ടും, അവയെല്ലാം SHA-1, MD4 എന്നിവയുടെ കൂടുതൽ വികാസങ്ങളാണ് കൂടാതെ സമാനമായ ഘടനയുമുണ്ട്.

റഷ്യ GOST R34.11-94 സ്വീകരിച്ചു, ഇത് ഹാഷ് ഫംഗ്ഷനുകളുടെ ആഭ്യന്തര നിലവാരമാണ്. MD4 അൽഗോരിതം അടിസ്ഥാനമാക്കിയുള്ള SHA-1,2 അല്ലെങ്കിൽ MD5 അൽഗോരിതങ്ങളുടെ ഘടനയിൽ നിന്ന് അതിന്റെ ഘടന തികച്ചും വ്യത്യസ്തമാണ്. GOST R 34.11-94 അൽഗോരിതം സൃഷ്ടിച്ച ഹാഷ് കോഡിന്റെ ദൈർഘ്യം 256 ബിറ്റുകളാണ്. വലത്തുനിന്ന് ഇടത്തോട്ട് 256 ബിറ്റുകളുടെ ബ്ലോക്കുകളിൽ യഥാർത്ഥ സന്ദേശത്തെ അൽഗോരിതം തുടർച്ചയായി പ്രോസസ്സ് ചെയ്യുന്നു. അൽഗോരിതം പാരാമീറ്റർ ഹാഷിംഗ് സ്റ്റാർട്ടിംഗ് വെക്റ്റർ ആണ് - ഒരു അനിയന്ത്രിതമായ നിശ്ചിത മൂല്യവും 256 ബിറ്റുകൾ നീളമുള്ളതാണ്. GOST R 34.11-94 അൽഗോരിതം, പെർമ്യൂട്ടേഷൻ, ഷിഫ്റ്റ്, ഗണിത കൂട്ടിച്ചേർക്കൽ, മോഡുലോ 2 കൂട്ടിച്ചേർക്കൽ എന്നിവയുടെ പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു. ഒരു സഹായ പ്രവർത്തനമായി, GOST 34.11-94 ലളിതമായ മാറ്റിസ്ഥാപിക്കൽ മോഡിൽ GOST 28147-89 അനുസരിച്ച് അൽഗോരിതം ഉപയോഗിക്കുന്നു.

4. ഹാഷ് ഫംഗ്ഷനുകൾക്കുള്ള ആവശ്യകതകൾ

ഒരു ഫയലിന്റെയോ സന്ദേശത്തിന്റെയോ ഡാറ്റയുടെ ചില ബ്ലോക്കിന്റെയോ ഡൈജസ്റ്റ് അല്ലെങ്കിൽ "വിരലടയാളം" ലഭിക്കുന്നതിന് രൂപകൽപ്പന ചെയ്ത ഒരു വൺ-വേ ഫംഗ്‌ഷൻ ആണ് ഹാഷ് ഫംഗ്‌ഷൻ.

ഫംഗ്‌ഷൻ മുഖേനയാണ് ഹാഷ് കോഡ് സൃഷ്‌ടിക്കുന്നത് എൻ :

h = H(M)

എവിടെ എം അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു സന്ദേശമാണ് എച്ച് ഒരു നിശ്ചിത ദൈർഘ്യമുള്ള ഹാഷ് കോഡ് ആണ്.

ഒരു സന്ദേശ ഓതന്റിക്കേറ്ററായി ഉപയോഗിക്കുന്നതിന് ഒരു ഹാഷ് ഫംഗ്ഷൻ പാലിക്കേണ്ട ആവശ്യകതകൾ നോക്കാം. ഒരു ഹാഷ് ഫംഗ്ഷന്റെ വളരെ ലളിതമായ ഒരു ഉദാഹരണം നോക്കാം. ഒരു ഹാഷ് ഫംഗ്ഷൻ നിർമ്മിക്കുന്നതിനുള്ള നിരവധി സമീപനങ്ങൾ ഞങ്ങൾ വിശകലനം ചെയ്യും.

ഹാഷ് ഫംഗ്ഷൻ എൻ സന്ദേശ പ്രാമാണീകരണത്തിനായി ഉപയോഗിക്കുന്ന, ഇനിപ്പറയുന്ന ഗുണങ്ങൾ ഉണ്ടായിരിക്കണം:

1. ഹാഷ് ഫംഗ്ഷൻ എൻ ഏതെങ്കിലും ദൈർഘ്യമുള്ള ഒരു ഡാറ്റ ബ്ലോക്കിൽ പ്രയോഗിക്കണം.

2. ഹാഷ് ഫംഗ്ഷൻ എൻ ഒരു നിശ്ചിത ദൈർഘ്യ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുന്നു.

3. എൻ (എം) ഏത് മൂല്യത്തിനും കണക്കാക്കാൻ താരതമ്യേന എളുപ്പമാണ് (പോളിനോമിയൽ സമയത്ത്). എം .

4. നൽകിയിരിക്കുന്ന ഏതെങ്കിലും ഹാഷ് കോഡ് മൂല്യത്തിന് എച്ച് കണ്ടെത്തുന്നത് കണക്കുകൂട്ടൽ അസാധ്യമാണ് എം അത്തരം H (M) = h .

5. നൽകിയിട്ടുള്ളവയ്ക്ക് എക്സ് അത് കണ്ടെത്തുക എന്നത് ഗണിതപരമായി അസാധ്യമാണ്

എച്ച് (y) = H(x).

6. ഒരു അനിയന്ത്രിതമായ ജോഡി കണ്ടെത്തുന്നത് കണക്കുകൂട്ടൽ അസാധ്യമാണ് ( എക്സ് , വൈ ) അത്തരം H(y) = H(x) .

ഏതൊരു സന്ദേശത്തിനും ഒരു ഹാഷ് കോഡ് നിർമ്മിക്കുന്നതിന് ആദ്യത്തെ മൂന്ന് പ്രോപ്പർട്ടികൾക്ക് ഹാഷ് ഫംഗ്‌ഷൻ ആവശ്യമാണ്.

നാലാമത്തെ പ്രോപ്പർട്ടി, ഹാഷ് ഫംഗ്ഷൻ ഏകപക്ഷീയമായിരിക്കണമെന്ന ആവശ്യകതയെ നിർവചിക്കുന്നു: തന്നിരിക്കുന്ന സന്ദേശത്തിൽ നിന്ന് ഒരു ഹാഷ് കോഡ് സൃഷ്ടിക്കുന്നത് എളുപ്പമാണ്, എന്നാൽ തന്നിരിക്കുന്ന ഹാഷ് കോഡിൽ നിന്ന് സന്ദേശം പുനർനിർമ്മിക്കുന്നത് അസാധ്യമാണ്. ഹാഷ് പ്രാമാണീകരണത്തിൽ ഒരു രഹസ്യ മൂല്യം ഉൾപ്പെടുന്നുവെങ്കിൽ ഈ പ്രോപ്പർട്ടി പ്രധാനമാണ്. രഹസ്യ മൂല്യം തന്നെ അയച്ചേക്കില്ല, എന്നിരുന്നാലും, ഹാഷ് ഫംഗ്‌ഷൻ വൺ-വേ അല്ലെങ്കിൽ, ഒരു എതിരാളിക്ക് രഹസ്യ മൂല്യം ഇനിപ്പറയുന്ന രീതിയിൽ എളുപ്പത്തിൽ വെളിപ്പെടുത്താനാകും. ഒരു ട്രാൻസ്മിഷൻ തടസ്സപ്പെടുമ്പോൾ, ആക്രമണകാരിക്ക് ഒരു സന്ദേശം ലഭിക്കും എം ഒപ്പം ഹാഷ് കോഡും C = H (SAB || M) . ഒരു ആക്രമണകാരിക്ക് ഹാഷ് ഫംഗ്ഷൻ വിപരീതമാക്കാൻ കഴിയുമെങ്കിൽ, അയാൾക്ക് അത് നേടാനാകും SAB || M=H-1(C) . ആക്രമണകാരിക്ക് ഇപ്പോൾ അറിയാം എന്നതിനാൽ എം ഒപ്പം SAB || എം , നേടുക എസ്.എ.ബി വളരെ ലളിതമാണ്.

ഈ സന്ദേശത്തിന്റെ ഹാഷ് മൂല്യവുമായി പൊരുത്തപ്പെടുന്ന ഹാഷ് മൂല്യം മറ്റൊരു സന്ദേശം കണ്ടെത്തുന്നത് അസാധ്യമാണെന്ന് അഞ്ചാമത്തെ പ്രോപ്പർട്ടി ഉറപ്പാക്കുന്നു. ഇത് എൻക്രിപ്റ്റ് ചെയ്ത ഹാഷ് കോഡ് ഉപയോഗിക്കുമ്പോൾ ഓതന്റിക്കേറ്റർ സ്പൂഫിംഗ് തടയുന്നു. ഈ സാഹചര്യത്തിൽ, എതിരാളിക്ക് സന്ദേശം വായിക്കാനും അതിനാൽ അതിന്റെ ഹാഷ് കോഡ് സൃഷ്ടിക്കാനും കഴിയും. എന്നാൽ എതിരാളിയുടെ പക്കൽ രഹസ്യ താക്കോൽ ഇല്ലാത്തതിനാൽ, സന്ദേശം സ്വീകരിക്കുന്നയാൾ കണ്ടെത്താതെ അത് മാറ്റാൻ അയാൾക്ക് മാർഗമില്ല. ഈ പ്രോപ്പർട്ടി തൃപ്തികരമല്ലെങ്കിൽ, ആക്രമണകാരിക്ക് ഇനിപ്പറയുന്ന പ്രവർത്തനങ്ങളുടെ ക്രമം ചെയ്യാൻ അവസരമുണ്ട്: സന്ദേശവും അതിന്റെ എൻക്രിപ്റ്റ് ചെയ്ത ഹാഷ് കോഡും തടസ്സപ്പെടുത്തുക, സന്ദേശത്തിന്റെ ഹാഷ് കോഡ് കണക്കാക്കുക, അതേ ഹാഷ് കോഡ് ഉപയോഗിച്ച് ഒരു ഇതര സന്ദേശം സൃഷ്ടിക്കുക, യഥാർത്ഥമായത് മാറ്റിസ്ഥാപിക്കുക ഒരു വ്യാജ സന്ദേശം. ഈ സന്ദേശങ്ങളുടെ ഹാഷുകൾ ഒന്നുതന്നെയായതിനാൽ, സ്വീകർത്താവ് കബളിപ്പിക്കുന്നത് കണ്ടെത്തുകയില്ല.

ആദ്യത്തെ അഞ്ച് ഗുണങ്ങളെ തൃപ്തിപ്പെടുത്തുന്ന ഒരു ഹാഷ് ഫംഗ്‌ഷനെ ലളിതമായ അല്ലെങ്കിൽ ദുർബലമായ ഹാഷ് ഫംഗ്‌ഷൻ എന്ന് വിളിക്കുന്നു. കൂടാതെ ആറാമത്തെ പ്രോപ്പർട്ടി തൃപ്തികരമാണെങ്കിൽ, അത്തരമൊരു ഫംഗ്ഷനെ ശക്തമായ ഹാഷ് ഫംഗ്ഷൻ എന്ന് വിളിക്കുന്നു. ആറാമത്തെ പ്രോപ്പർട്ടി ജന്മദിന ആക്രമണം എന്നറിയപ്പെടുന്ന ഒരു കൂട്ടം ആക്രമണങ്ങളിൽ നിന്ന് സംരക്ഷിക്കുന്നു.

5. ലളിതമായ ഹാഷ് ഫംഗ്ഷനുകൾ

എല്ലാ ഹാഷ് ഫംഗ്ഷനുകളും ഇനിപ്പറയുന്ന രീതിയിൽ നടപ്പിലാക്കുന്നു. ഇൻപുട്ട് മൂല്യം (സന്ദേശം, ഫയൽ മുതലായവ) ഒരു ക്രമമായി കണക്കാക്കുന്നു എൻ -ബിറ്റ് ബ്ലോക്കുകൾ. ഇൻപുട്ട് മൂല്യം ബ്ലോക്ക് പ്രകാരം തുടർച്ചയായി പ്രോസസ്സ് ചെയ്യുന്നു, കൂടാതെ a എം -ബിറ്റ് ഹാഷ് കോഡ് മൂല്യം.

ഒരു ഹാഷ് ഫംഗ്‌ഷന്റെ ഏറ്റവും ലളിതമായ ഉദാഹരണങ്ങളിലൊന്ന് ഓരോ ബ്ലോക്കും ബിറ്റ്‌വൈസ് ആയി XOR ചെയ്യുക എന്നതാണ്:

സി ഐ - ഹാഷ് കോഡിന്റെ ബിറ്റ്, 1 <= i <= n .

കെ - നമ്പർ എൻ -ബിറ്റ് ഇൻപുട്ട് ബ്ലോക്കുകൾ.

b ij th bit in ജെ -ആം ബ്ലോക്ക്.

Y1, Y2, ..., YN+1 എന്നീ എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്കുകൾ സൃഷ്ടിക്കാൻ CBC മോഡിൽ ഹാഷ് കോഡ് ഉൾപ്പെടെ മുഴുവൻ സന്ദേശവും എൻക്രിപ്റ്റ് ചെയ്യുന്നു. SHS ന്റെ നിർവ്വചനം അനുസരിച്ച് ഞങ്ങൾക്ക് ഉണ്ട്:

എന്നാൽ XN+1 ഒരു ഹാഷ് കോഡാണ്:

മുൻ സമത്വത്തിലെ നിബന്ധനകൾ ഏത് ക്രമത്തിലും വിലയിരുത്താൻ കഴിയുമെന്നതിനാൽ, എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്കുകൾ പുനഃക്രമീകരിച്ചാൽ ഹാഷ് കോഡ് മാറ്റപ്പെടില്ല.

NIST നിർദ്ദേശിച്ച യഥാർത്ഥ സ്റ്റാൻഡേർഡ് ലളിതമായ XOR ഉപയോഗിച്ചു, അത് 64-ബിറ്റ് സന്ദേശ ബ്ലോക്കുകളിൽ പ്രയോഗിച്ചു, തുടർന്ന് മുഴുവൻ സന്ദേശവും CBC മോഡ് ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്തു.

"ജന്മദിന വിരോധാഭാസം"

കൂടുതൽ സങ്കീർണ്ണമായ ഹാഷ് ഫംഗ്‌ഷനുകൾ കാണുന്നതിന് മുമ്പ്, ലളിതമായ ഹാഷ് ഫംഗ്‌ഷനുകളിൽ ഒരു പ്രത്യേക ആക്രമണം വിശകലനം ചെയ്യേണ്ടത് ആവശ്യമാണ്.

"ജന്മദിന വിരോധാഭാസം" എന്ന് വിളിക്കപ്പെടുന്നവ ഇപ്രകാരമാണ്. ഹാഷ് ഫംഗ്ഷൻ ഔട്ട്പുട്ട് മൂല്യങ്ങളുടെ എണ്ണം കരുതുക എൻ തുല്യമാണ് എൻ . നമ്പർ എന്തായിരിക്കണം? കെ അങ്ങനെ ഒരു പ്രത്യേക മൂല്യത്തിനായി എക്സ് മൂല്യങ്ങളും Y1, ,Yk കുറഞ്ഞത് ഒരു Yi യുടെ സമത്വം

H(X) = H(Y)

0.5-ൽ കൂടുതലായിരിക്കും.

ഒന്നിന് വൈ അതിനുള്ള സാധ്യത H(X) = H(Y) , തുല്യമാണ് 1/n .

അതനുസരിച്ച്, സാധ്യത , തുല്യമാണ് 1 - 1/n .

നിങ്ങൾ സൃഷ്ടിക്കുകയാണെങ്കിൽ കെ മൂല്യങ്ങൾ, അപ്പോൾ അവയിലൊന്നിനും പൊരുത്തങ്ങൾ ഉണ്ടാകില്ല എന്നതിന്റെ സംഭാവ്യത ഒരു മൂല്യവുമായി ബന്ധപ്പെട്ട പ്രോബബിലിറ്റികളുടെ ഗുണനത്തിന് തുല്യമാണ്, അതായത്. (1 - 1/n) കെ .

അതിനാൽ, കുറഞ്ഞത് ഒരു പൊരുത്തത്തിന്റെ സാധ്യത

1 - (1 - 1/n)k

അങ്ങനെ, ഞങ്ങൾ അത് കണ്ടെത്തി എം തിരഞ്ഞെടുക്കാൻ -ബിറ്റ് ഹാഷ് കോഡ് മതി 2m-1 സന്ദേശങ്ങൾ അങ്ങനെ ഹാഷ് കോഡുകൾ പൊരുത്തപ്പെടുത്താനുള്ള സാധ്യത 0.5-ൽ കൂടുതലാണ്.

ഇപ്പോൾ ഇനിപ്പറയുന്ന പ്രശ്നം പരിഗണിക്കുക: നമുക്ക് സൂചിപ്പിക്കാം P(n,k) ഗണത്തിലുള്ള സംഭാവ്യത കെ ഘടകങ്ങൾ, ഓരോന്നിനും എടുക്കാം എൻ മൂല്യങ്ങൾ, ഒരേ മൂല്യങ്ങളുള്ള കുറഞ്ഞത് രണ്ടെണ്ണമെങ്കിലും ഉണ്ട്. അത് എന്തിന് തുല്യമായിരിക്കണം? കെ , ലേക്ക് P(n,k) കൂടുതൽ ആയിരിക്കും 0,5 ?

ഡ്യൂപ്ലിക്കേറ്റുകളില്ലാത്ത വിധത്തിൽ ഘടകങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിനുള്ള വ്യത്യസ്ത വഴികളുടെ എണ്ണം തുല്യമാണ്

n(n-1) ... (n-k+1)=n!/(n-k)!

ഘടകങ്ങൾ തിരഞ്ഞെടുക്കുന്നതിനുള്ള ആകെ സാധ്യമായ വഴികൾ എൻ കെ

ഡ്യൂപ്ലിക്കേറ്റുകൾ ഇല്ല എന്നതിന് തുല്യമാണ് n!/(n-k)!n k

ഡ്യൂപ്ലിക്കേറ്റുകൾ ഉണ്ടാകാനുള്ള സാധ്യത ഇതിന് തുല്യമാണ്

1 - n!/(n-k)!nk P(n, k) = 1 - n! / ((n-k)! x nk) = 1 - (n x (n-1) x ... x (n-k-1)) / nk = 1 - [ (n-1)/n x (n-2)/n x ... x (n-k+1)/n] = 1 - [(1- 1/n) x (1 - 2/n) x ... x (1 - (k-1)/n)]

ഹാഷ് കോഡിന് ദൈർഘ്യമുണ്ടെങ്കിൽ എം ബിറ്റ്, അതായത്. സ്വീകരിക്കുന്നു 2മീ മൂല്യങ്ങൾ, അപ്പോൾ

ഈ ഫലത്തെ "ജന്മദിന വിരോധാഭാസം" എന്ന് വിളിക്കുന്നു, കാരണം, മുകളിലുള്ള ന്യായവാദം അനുസരിച്ച്, ഒരേ ജന്മദിനം ഉള്ള രണ്ട് ആളുകളുടെ സംഭാവ്യത 0.5-ൽ കൂടുതലാകാൻ, ഗ്രൂപ്പിൽ 23 പേർ മാത്രമേ ഉണ്ടാകൂ. ഈ ഫലം ആശ്ചര്യകരമാണെന്ന് തോന്നുന്നു, ഒരുപക്ഷേ ഒരു ഗ്രൂപ്പിലെ ഏതൊരു വ്യക്തിക്കും, അവരുടെ ജന്മദിനം ഗ്രൂപ്പിലെ മറ്റാരുടെയെങ്കിലും ജന്മദിനവുമായി ഒത്തുപോകാനുള്ള സാധ്യത വളരെ ചെറുതാണ്.

ഹാഷ് ഫംഗ്‌ഷനുകളുടെ സവിശേഷതകൾ പരിഗണിക്കുന്നതിലേക്ക് മടങ്ങാം. 64-ബിറ്റ് ഹാഷ് കോഡ് ഉപയോഗിച്ചിട്ടുണ്ടെന്ന് നമുക്ക് അനുമാനിക്കാം. ഒരു ഹാഷ് കോഡിന് മതിയായതും അതിനാൽ സുരക്ഷിതവുമായ ദൈർഘ്യമായി ഇത് കണക്കാക്കാം. ഉദാഹരണത്തിന്, എൻക്രിപ്റ്റ് ചെയ്ത ഹാഷ് കോഡ് ആണെങ്കിൽ കൂടെ ബന്ധപ്പെട്ട എൻക്രിപ്റ്റ് ചെയ്യാത്ത സന്ദേശത്തോടൊപ്പം കൈമാറുന്നു എം , അപ്പോൾ ശത്രു കണ്ടെത്തേണ്ടതുണ്ട് എം' അത്തരം

N (M") = N (M) ,

സന്ദേശം മാറ്റി സ്വീകർത്താവിനെ വഞ്ചിക്കുന്നതിന്. ശരാശരി, ഹാഷ് കോഡ് തടസ്സപ്പെടുത്തിയ സന്ദേശത്തിന് തുല്യമായ ഒന്നിനെ കണ്ടെത്താൻ ഒരു എതിരാളി 263 സന്ദേശങ്ങളിലൂടെ തിരയണം.

എന്നിരുന്നാലും, ജന്മദിന വിരോധാഭാസത്തെ അടിസ്ഥാനമാക്കിയുള്ള വിവിധ തരത്തിലുള്ള ആക്രമണങ്ങൾ സാധ്യമാണ്. ഇനിപ്പറയുന്ന തന്ത്രം സാധ്യമാണ്:

1. ശത്രു സൃഷ്ടിക്കുന്നു 2 മീ/2 സന്ദേശ ഓപ്ഷനുകൾ, ഓരോന്നിനും ചില പ്രത്യേക അർത്ഥങ്ങളുണ്ട്. എതിരാളി ഒരേ എണ്ണം സന്ദേശങ്ങൾ തയ്യാറാക്കുന്നു, അവ ഓരോന്നും വ്യാജവും യഥാർത്ഥ സന്ദേശത്തിന് പകരം വയ്ക്കാൻ ഉദ്ദേശിച്ചുള്ളതുമാണ്.

2. ഒരേ ഹാഷ് കോഡ് ഉള്ള ഒരു ജോടി സന്ദേശങ്ങൾ കണ്ടെത്താൻ രണ്ട് സെറ്റ് സന്ദേശങ്ങളെ താരതമ്യം ചെയ്യുന്നു. "ജന്മദിന വിരോധാഭാസം" അനുസരിച്ച് വിജയസാധ്യത 0.5-ൽ കൂടുതലാണ്. പൊരുത്തമുള്ള ജോഡി കണ്ടെത്തിയില്ലെങ്കിൽ, ഒരു ജോഡി കണ്ടെത്തുന്നതുവരെ കൂടുതൽ യഥാർത്ഥവും വ്യാജവുമായ സന്ദേശങ്ങൾ സൃഷ്ടിക്കപ്പെടും.

3. ആക്രമണകാരി സന്ദേശത്തിന്റെ യഥാർത്ഥ പതിപ്പ് ഒപ്പിനായി അയച്ചയാൾക്ക് വാഗ്ദാനം ചെയ്യുന്നു. ഈ ഒപ്പ് പിന്നീട് സ്വീകർത്താവിന് കൈമാറുന്നതിനായി വ്യാജ പതിപ്പിൽ ഘടിപ്പിക്കാം. രണ്ട് ഓപ്ഷനുകൾക്കും ഒരേ ഹാഷ് കോഡ് ഉള്ളതിനാൽ, ഒരേ ഒപ്പ് സൃഷ്ടിക്കപ്പെടും. എൻക്രിപ്ഷൻ കീ അറിയാതെ പോലും ശത്രുവിന് വിജയത്തിൽ ആത്മവിശ്വാസമുണ്ടാകും.

അതിനാൽ, ഒരു 64-ബിറ്റ് ഹാഷ് കോഡ് ഉപയോഗിക്കുകയാണെങ്കിൽ, ആവശ്യമായ കമ്പ്യൂട്ടേഷണൽ സങ്കീർണ്ണത 232 എന്ന ക്രമത്തിലാണ്.

അവസാനമായി, ഹാഷ് കോഡിന്റെ ദൈർഘ്യം ആവശ്യത്തിന് വലുതായിരിക്കണം എന്നത് ശ്രദ്ധിക്കുക. 64 ബിറ്റുകളുടെ ദൈർഘ്യം നിലവിൽ സുരക്ഷിതമായി കണക്കാക്കപ്പെടുന്നില്ല. നീളം 100 ബിറ്റുകളുടെ ക്രമത്തിലായിരിക്കുന്നതാണ് നല്ലത്.

ഒരു എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്ക് ചെയിൻ ഉപയോഗിക്കുന്നു

എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്കുകളുടെ ഒരു ശൃംഖല സൃഷ്ടിക്കുന്നതിനെ അടിസ്ഥാനമാക്കി വിവിധ ഹാഷ് ഫംഗ്ഷനുകൾ ഉണ്ട്, എന്നാൽ ഒരു രഹസ്യ കീ ഉപയോഗിക്കാതെ. അത്തരമൊരു ഹാഷ് ഫംഗ്‌ഷൻ റാബിൻ നിർദ്ദേശിച്ചു. സന്ദേശം എം നിശ്ചിത ദൈർഘ്യമുള്ള ബ്ലോക്കുകളായി വിഭജിക്കപ്പെടുന്നു M1, M2, . . . , എം.എൻ കൂടാതെ ഹാഷ് കോഡ് കണക്കാക്കാൻ DES പോലുള്ള ഒരു സമമിതി എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു ജി ഇനിപ്പറയുന്ന രീതിയിൽ:

H 0 - പ്രാരംഭ മൂല്യം എൻ ഐ = ഇ മി ജി = എച്ച് എൻ

ഇത് CBC എൻക്രിപ്ഷൻ ഉപയോഗിക്കുന്നതിന് സമാനമാണ്, എന്നാൽ ഈ സാഹചര്യത്തിൽ രഹസ്യ കീ ഒന്നുമില്ല. ഏതൊരു ലളിതമായ ഹാഷ് ഫംഗ്‌ഷനും പോലെ, ഈ അൽഗോരിതം "ജന്മദിന ആക്രമണത്തിന്" വിധേയമാണ്, കൂടാതെ എൻക്രിപ്ഷൻ അൽഗോരിതം DES ആണെങ്കിൽ ഒരു 64-ബിറ്റ് ഹാഷ് കോഡ് മാത്രമേ ജനറേറ്റ് ചെയ്തിട്ടുള്ളൂ എങ്കിൽ, സിസ്റ്റം വളരെ ദുർബലമായി കണക്കാക്കപ്പെടുന്നു.

മറ്റ് ജന്മദിന-തരം ആക്രമണങ്ങൾ നടത്താം, എതിരാളിക്ക് ഒരു സന്ദേശത്തിലേക്കും അതിന്റെ അനുബന്ധ എൻക്രിപ്റ്റ് ചെയ്‌ത ഹാഷ് കോഡിലേക്കും മാത്രമേ ആക്‌സസ് ഉള്ളൂവെങ്കിലും ഒന്നിലധികം ജോഡി സന്ദേശങ്ങളും എൻക്രിപ്റ്റ് ചെയ്‌ത ഹാഷ് കോഡുകളും നേടാൻ കഴിയുന്നില്ലെങ്കിലും സാധ്യമാണ്. ഇനിപ്പറയുന്ന സാഹചര്യം സാധ്യമാണ്: ഒരു എൻക്രിപ്റ്റ് ചെയ്ത ഹാഷ് കോഡിന്റെ രൂപത്തിൽ ഒരു ഓതന്റിക്കേറ്ററുള്ള ഒരു സന്ദേശം ഒരു എതിരാളി തടഞ്ഞുവെന്ന് കരുതുക, കൂടാതെ എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഹാഷ് കോഡിന് ദൈർഘ്യമുണ്ടെന്ന് അറിയാം. എം ബിറ്റുകൾ അടുത്തതായി, ശത്രു ഇനിപ്പറയുന്ന പ്രവർത്തനങ്ങൾ ചെയ്യണം:

· മുകളിൽ വിവരിച്ച അൽഗോരിതം ഉപയോഗിച്ച്, എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഹാഷ് കോഡ് കണക്കാക്കുക ജി .

· ഫോമിൽ ഒരു വ്യാജ സന്ദേശം സൃഷ്ടിക്കുക Q1, Q2, . . . , QN-2 .

· കണക്കാക്കുക N i = E Qi വേണ്ടി 1 <= i <= N-2 .

· സൃഷ്ടിക്കാൻ 2 മീ/2 ക്രമരഹിതമായ ബ്ലോക്കുകൾ എക്സ് അത്തരം ഓരോ ബ്ലോക്കിനും എക്സ് കണക്കാക്കുക ഇ എക്സ് . അധികമായി സൃഷ്ടിക്കുക 2 മീ/2 ക്രമരഹിതമായ ബ്ലോക്ക് വൈ ഓരോ ബ്ലോക്കിനും വൈ കണക്കാക്കുക ഡി വൈ [ജി] , എവിടെ ഡി - അനുബന്ധമായ ഡീകോഡിംഗ് ഫംഗ്ഷൻ . ജന്മദിന വിരോധാഭാസത്തെ അടിസ്ഥാനമാക്കി, ഈ ശ്രേണിയിൽ ബ്ലോക്കുകൾ അടങ്ങിയിരിക്കാൻ സാധ്യതയുണ്ട് എക്സ് ഒപ്പം വൈ അത്തരം E X = D Y [Y] .

· ഒരു സന്ദേശം സൃഷ്ടിക്കുക Q1, Q2, . . . , QN-2, X, Y . ഈ സന്ദേശത്തിന് ഒരു ഹാഷ് കോഡ് ഉണ്ട് ജി അതിനാൽ ഒരു എൻക്രിപ്റ്റ് ചെയ്ത ഓതന്റിക്കേറ്ററുമായി സംയോജിച്ച് ഉപയോഗിക്കാവുന്നതാണ്.

ഈ രീതിയിലുള്ള ആക്രമണം "മീറ്റ് ഇൻ ദി മിഡിൽ" ആക്രമണം എന്നാണ് അറിയപ്പെടുന്നത്. ബ്ലോക്ക്‌ചെയിൻ അടിസ്ഥാനമാക്കിയുള്ള സമീപനം മെച്ചപ്പെടുത്തുന്നതിന് വിവിധ പഠനങ്ങൾ കൂടുതൽ സൂക്ഷ്മമായ രീതികൾ നിർദ്ദേശിക്കുന്നു. ഉദാഹരണത്തിന്, ഡേവിസും പ്രൈസും ഇനിപ്പറയുന്നവ വിവരിച്ചു:

മറ്റൊരു ഓപ്ഷൻ സാധ്യമാണ്:

എന്നിരുന്നാലും, ഈ രണ്ട് സ്കീമുകൾക്കും വിവിധ ആക്രമണങ്ങൾക്ക് കീഴിൽ കേടുപാടുകൾ ഉണ്ട്. കൂടുതൽ പൊതുവായി, ഒരു രഹസ്യ കീ ഉപയോഗിക്കാതെ എൻക്രിപ്റ്റ് ചെയ്ത ബ്ലോക്കുകളുടെ ഒരു ശൃംഖല ഉപയോഗിക്കുന്നത് ഉൾപ്പെടുന്ന ഏതെങ്കിലും ഹാഷ് അൽഗോരിതം ഉപയോഗിച്ച് ഏതെങ്കിലും തരത്തിലുള്ള "ജന്മദിന ആക്രമണം" വിജയിക്കുന്നുവെന്ന് കാണിക്കാനാകും.

ഹാഷിംഗ് ഫംഗ്ഷനുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള മറ്റ് സമീപനങ്ങൾ കണ്ടെത്തുന്നതിനാണ് കൂടുതൽ ഗവേഷണം ലക്ഷ്യമിടുന്നത്.

MD5 ഹാഷ് ഫംഗ്ഷൻ

MIT-യുടെ റോൺ റിവസ്റ്റ് വികസിപ്പിച്ച MD5 സന്ദേശ ഡൈജസ്റ്റ് അൽഗോരിതം (RFC 1321) പരിഗണിക്കുക.

MD5 എക്സിക്യൂഷൻ ലോജിക്

അൽഗോരിതം ഇൻപുട്ടായി അനിയന്ത്രിതമായ ദൈർഘ്യമുള്ള ഒരു സന്ദേശം സ്വീകരിക്കുകയും ഔട്ട്പുട്ടായി 128 ബിറ്റുകളുടെ സന്ദേശ ഡൈജസ്റ്റ് നിർമ്മിക്കുകയും ചെയ്യുന്നു. അൽഗോരിതം ഇനിപ്പറയുന്ന ഘട്ടങ്ങൾ ഉൾക്കൊള്ളുന്നു:

അരി. 8.1 MD5 എക്സിക്യൂഷൻ ലോജിക്

ഘട്ടം 1: വിട്ടുപോയ ബിറ്റുകൾ ചേർക്കുക

സന്ദേശം പാഡ് ചെയ്‌തിരിക്കുന്നതിനാൽ അതിന്റെ നീളം 448 മോഡുലോ 512() ആയി മാറുന്നു. ഇതിനർത്ഥം, അനുബന്ധ സന്ദേശത്തിന്റെ ദൈർഘ്യം 512-ന്റെ ഗുണിതത്തേക്കാൾ 64 ബിറ്റുകൾ കുറവാണെന്നാണ്. സന്ദേശം ശരിയായ ദൈർഘ്യമാണെങ്കിൽപ്പോലും, ചേർക്കുന്നത് എല്ലായ്പ്പോഴും നടക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു സന്ദേശം 448 ബിറ്റുകൾ നീളമുള്ളതാണെങ്കിൽ, അത് 960 ബിറ്റുകളാക്കാൻ 512 ബിറ്റുകൾ ഉപയോഗിച്ച് പാഡ് ചെയ്യുന്നു. അങ്ങനെ, ചേർത്ത ബിറ്റുകളുടെ എണ്ണം 1 മുതൽ 512 വരെയാണ്.

സങ്കലനത്തിൽ ഒന്നിനെ തുടർന്ന് ആവശ്യമായ പൂജ്യങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

ഘട്ടം 2: നീളം ചേർക്കുക

ബിറ്റുകളിലെ യഥാർത്ഥ സന്ദേശത്തിന്റെ ദൈർഘ്യത്തിന്റെ 64-ബിറ്റ് പ്രാതിനിധ്യം ആദ്യ ഘട്ടത്തിന്റെ ഫലത്തിൽ ചേർക്കുന്നു. യഥാർത്ഥ ദൈർഘ്യം 2 64 ൽ കൂടുതലാണെങ്കിൽ, അവസാന 64 ബിറ്റുകൾ മാത്രമേ ഉപയോഗിക്കൂ. അങ്ങനെ, ഫീൽഡിൽ യഥാർത്ഥ സന്ദേശ മൊഡ്യൂളോ 2 64 ന്റെ ദൈർഘ്യം അടങ്ങിയിരിക്കുന്നു.

ആദ്യത്തെ രണ്ട് ഘട്ടങ്ങൾ 512 ബിറ്റുകളുടെ ഗുണിത ദൈർഘ്യമുള്ള ഒരു സന്ദേശം നൽകുന്നു. ഈ വിപുലീകൃത സന്ദേശം 512-ബിറ്റ് ബ്ലോക്കുകളുടെ Y 0 , Y 1 , എന്നിവയുടെ ഒരു ശ്രേണിയായി പ്രതിനിധീകരിക്കുന്നു. . ., Y L-1, വിപുലീകരിച്ച സന്ദേശത്തിന്റെ ആകെ ദൈർഘ്യം L * 512 ബിറ്റുകൾ ആണ്. അങ്ങനെ, ലഭിച്ച വിപുലീകൃത സന്ദേശത്തിന്റെ ദൈർഘ്യം പതിനാറ് 32-ബിറ്റ് വാക്കുകളുടെ ഗുണിതമാണ്.

അരി. 8.2വിപുലീകരിച്ച സന്ദേശ ഘടന

ഘട്ടം 3: MD ബഫർ ഇനിഷ്യലൈസേഷൻ

ഹാഷ് ഫംഗ്‌ഷന്റെ ഇന്റർമീഡിയറ്റും അന്തിമ ഫലങ്ങളും സംഭരിക്കുന്നതിന് ഒരു 128-ബിറ്റ് ബഫർ ഉപയോഗിക്കുന്നു. ബഫറിനെ നാല് 32-ബിറ്റ് രജിസ്റ്ററുകളായി (എ, ബി, സി, ഡി) പ്രതിനിധീകരിക്കാം. ഈ രജിസ്റ്ററുകൾ ഇനിപ്പറയുന്ന ഹെക്സാഡെസിമൽ നമ്പറുകൾ ഉപയോഗിച്ച് ആരംഭിക്കുന്നു:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

ഘട്ടം 4: 512-ബിറ്റ് (16-വാക്ക്) ബ്ലോക്കുകളുടെ ഒരു ക്രമം പ്രോസസ്സ് ചെയ്യുക

HMD5 എന്ന് നിയുക്തമാക്കിയിരിക്കുന്ന നാല് സൈക്ലിക് പ്രോസസ്സിംഗ് അടങ്ങുന്ന ഒരു മൊഡ്യൂളാണ് അൽഗോരിതത്തിന്റെ അടിസ്ഥാനം. നാല് ലൂപ്പുകൾക്ക് സമാനമായ ഘടനയുണ്ട്, എന്നാൽ ഓരോ ലൂപ്പും യഥാക്രമം f F , f G , f H , f I എന്നിവയെ സൂചിപ്പിക്കുന്ന വ്യത്യസ്ത പ്രാഥമിക ലോജിക് ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നു.

അരി. 8.3അടുത്ത 512-ബിറ്റ് ബ്ലോക്ക് പ്രോസസ്സ് ചെയ്യുന്നു

ഓരോ ലൂപ്പും നിലവിൽ പ്രോസസ്സ് ചെയ്യുന്ന നിലവിലെ 512-ബിറ്റ് ബ്ലോക്ക് Y q യും ഇന്റർമീഡിയറ്റ് ഡൈജസ്റ്റ് മൂല്യമായ ബഫർ എബിസിഡിയുടെ 128-ബിറ്റ് മൂല്യവും ഇൻപുട്ടായി എടുക്കുകയും ആ ബഫറിന്റെ ഉള്ളടക്കങ്ങൾ പരിഷ്‌ക്കരിക്കുകയും ചെയ്യുന്നു. ഓരോ ലൂപ്പും സിൻ ഫംഗ്‌ഷനിൽ നിന്ന് നിർമ്മിച്ച 64-എലമെന്റ് ടേബിൾ ടിയുടെ നാലിലൊന്ന് ഉപയോഗിക്കുന്നു. T യുടെ i-th ഘടകത്തിന്, T[i] എന്ന് സൂചിപ്പിക്കുന്നു, 2 32 * abs (sin (i)), i റേഡിയനിൽ നൽകിയിരിക്കുന്ന പൂർണ്ണസംഖ്യയുടെ ഭാഗത്തിന് തുല്യമായ മൂല്യമുണ്ട്. abs(sin(i)) 0 നും 1 നും ഇടയിലുള്ള ഒരു സംഖ്യയായതിനാൽ, T യുടെ ഓരോ മൂലകവും 32 ബിറ്റുകൾ കൊണ്ട് പ്രതിനിധീകരിക്കാവുന്ന ഒരു പൂർണ്ണസംഖ്യയാണ്. ഇൻപുട്ട് ഡാറ്റയിലെ ഏതെങ്കിലും ക്രമം ഇല്ലാതാക്കുന്ന 32-ബിറ്റ് മൂല്യങ്ങളുടെ "റാൻഡം" സെറ്റ് പട്ടിക നൽകുന്നു.

MD q+1 ലഭിക്കുന്നതിന്, നാല് ലൂപ്പുകളുടെ ഔട്ട്പുട്ട് MD q ലേക്ക് മോഡുലോ 2 32 ചേർക്കുന്നു. ബഫറിലെ നാല് പദങ്ങളിൽ ഓരോന്നിനും കൂട്ടിച്ചേർക്കൽ സ്വതന്ത്രമായി നടപ്പിലാക്കുന്നു.

F എന്നത് പ്രാഥമിക പ്രവർത്തനങ്ങളിൽ ഒന്നാണ് f F, f G, f H, f I .

32-ബിറ്റ് വാക്കുകളുടെ ഒരു ശ്രേണിയിൽ X നിലവിൽ പ്രോസസ്സ് ചെയ്യുന്ന നിലവിലെ 512-ബിറ്റ് ഇൻപുട്ട് ബ്ലോക്കിന്റെ മൂല്യം അടങ്ങിയിരിക്കുന്നു. ഓരോ ലൂപ്പും 16 തവണ എക്സിക്യൂട്ട് ചെയ്യുന്നു, കൂടാതെ ഓരോ ഇൻപുട്ട് സന്ദേശ ബ്ലോക്കും നാല് ലൂപ്പുകളായി പ്രോസസ്സ് ചെയ്യുന്നതിനാൽ, ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്ന സ്കീം അനുസരിച്ച് ഓരോ ഇൻപുട്ട് സന്ദേശ ബ്ലോക്കും പ്രോസസ്സ് ചെയ്യുന്നു. 4, 64 തവണ. 512-ബിറ്റ് ഇൻപുട്ട് ബ്ലോക്കിനെ പതിനാറ് 32-ബിറ്റ് വാക്കുകളായി ഞങ്ങൾ കരുതുന്നുവെങ്കിൽ, ഓരോ 32-ബിറ്റ് ഇൻപുട്ട് വാക്കും ഓരോ സൈക്കിളിലും ഒരിക്കൽ നാല് തവണ ഉപയോഗിക്കുന്നു, കൂടാതെ 64 32-ബിറ്റ് പദങ്ങൾ അടങ്ങുന്ന ടേബിൾ ടിയുടെ ഓരോ ഘടകവും ഒരിക്കൽ മാത്രം ഉപയോഗിച്ചു. ലൂപ്പിന്റെ ഓരോ ഘട്ടത്തിനു ശേഷവും എ, ബി, സി, ഡി എന്നീ നാല് പദങ്ങൾ ഇടതുവശത്തേക്ക് തിരിക്കുന്നു.ഓരോ ഘട്ടത്തിലും എബിസിഡി ബഫറിന്റെ നാല് പദങ്ങളിൽ ഒന്ന് മാത്രം മാറുന്നു. അതിനാൽ, ബഫറിന്റെ ഓരോ വാക്കും 16 തവണ പരിഷ്‌ക്കരിച്ചു, തുടർന്ന് ആ ബ്ലോക്കിന്റെ അന്തിമ ഔട്ട്‌പുട്ട് ഉൽപ്പാദിപ്പിക്കുന്നതിന് അവസാനം 17-ാം തവണ.

ദഹിപ്പിക്കുക.

2. വേഗത: അൽഗോരിതത്തിന്റെ സോഫ്‌റ്റ്‌വെയർ നിർവ്വഹണം വേണ്ടത്ര വേഗത്തിലായിരിക്കണം. പ്രത്യേകിച്ചും, 32-ബിറ്റ് ആർക്കിടെക്ചറിൽ അൽഗോരിതം വേണ്ടത്ര വേഗതയുള്ളതായിരിക്കണം. അതിനാൽ, അൽഗോരിതം 32-ബിറ്റ് പദങ്ങളിലെ പ്രാഥമിക പ്രവർത്തനങ്ങളുടെ ഒരു ലളിതമായ കൂട്ടത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

3. ലാളിത്യവും ഒതുക്കവും: വലിയ പ്രോഗ്രാമുകളോ സബ്സ്റ്റിറ്റ്യൂഷൻ ടേബിളുകളോ ഇല്ലാതെ അൽഗോരിതം വിവരിക്കാൻ ലളിതവും പ്രോഗ്രാമിന് ലളിതവുമായിരിക്കണം. ഈ സ്വഭാവസവിശേഷതകൾക്ക് വ്യക്തമായ സോഫ്‌റ്റ്‌വെയർ ഗുണങ്ങൾ മാത്രമല്ല, സുരക്ഷാ വീക്ഷണകോണിൽ നിന്ന് അഭികാമ്യവുമാണ്, കാരണം സാധ്യമായ ദുർബലമായ പോയിന്റുകൾ വിശകലനം ചെയ്യാൻ ഒരു ലളിതമായ അൽഗോരിതം ഉണ്ടായിരിക്കുന്നതാണ് നല്ലത്.

4. ലിറ്റിൽ-എൻഡിയൻ ആർക്കിടെക്ചർ അഭികാമ്യമാണ്: ചില പ്രോസസർ ആർക്കിടെക്ചറുകൾ (ഇന്റൽ 80xxx ലൈൻ പോലുള്ളവ) ലിറ്റിൽ-എൻഡിയൻ ബൈറ്റ് വിലാസ സ്ഥാനത്ത് ഒരു വാക്കിന്റെ ഇടത് ബൈറ്റുകൾ സംഭരിക്കുന്നു. മറ്റുള്ളവ (SUN Sparcstation പോലെയുള്ളവ) വാക്കിന്റെ വലതുവശത്തുള്ള ബൈറ്റുകൾ കുറഞ്ഞ ബൈറ്റ് വിലാസ സ്ഥാനത്ത് സംഭരിക്കുന്നു (ആദ്യ ലൂപ്പിലെ വലിയ MD4 അധിക സ്ഥിരാങ്കം ഉപയോഗിക്കുന്നില്ല. രണ്ടാമത്തെ ലൂപ്പിലെ ഓരോ ഘട്ടത്തിനും സമാനമായ അധിക സ്ഥിരാങ്കം ഉപയോഗിക്കുന്നു. മൂന്നാമത്തെ ലൂപ്പിലെ ഓരോ ഘട്ടത്തിനും മറ്റൊരു അധിക സ്ഥിരാങ്കം ഉപയോഗിക്കുന്നു, ഹാഷ് കോഡ് ഇൻപുട്ടിന്റെ ഓരോ ബിറ്റിന്റെയും പ്രവർത്തനമാണ്. f F , f G , f H , f I എന്നീ പ്രാഥമിക പ്രവർത്തനങ്ങളുടെ സങ്കീർണ്ണമായ ആവർത്തനം ഫലം ഉറപ്പാക്കുന്നു. നന്നായി മിക്സഡ് ആണ്; അതായത്, ക്രമരഹിതമായി തിരഞ്ഞെടുത്ത രണ്ട് സന്ദേശങ്ങൾക്ക്, വ്യക്തമായി സമാനമായ പാറ്റേണുകൾ ഉണ്ടെങ്കിലും, ഒരേ ഔട്ട്പുട്ട് മൂല്യം ഉൽപ്പാദിപ്പിക്കുന്ന ഒരേ ഡൈജസ്റ്റ് ഉണ്ടായിരിക്കാൻ സാധ്യതയില്ല, അതായത് ഒരൊറ്റ 512-ബിറ്റ് ബ്ലോക്കിൽ MD5 നിർവഹിക്കുന്നത് എബിസിഡി ബഫറിൽ രണ്ട് വ്യത്യസ്ത ഇൻപുട്ട് മൂല്യങ്ങൾക്ക് ഒരേ ഔട്ട്പുട്ട്. വിജയകരമായ ആക്രമണത്തിന് ഈ സമീപനം വിപുലീകരിക്കാൻ മാർഗമില്ല MD5-ൽ നിലവിലില്ല.