𝗖𝗕𝗖 𝗕𝗶𝘁 𝗙𝗹𝗶𝗽𝗽𝗶𝗻𝗴 𝗘𝘅𝗽𝗹𝗮𝗶𝗻𝗲𝗱 വിശദീകരിക്കുന്നു

എൻക്രിപ്ഷൻ എന്നാൽ നിങ്ങളുടെ ഡാറ്റ തിരുത്തലുകളിൽ (tampering) നിന്ന് സുരക്ഷിതമാണെന്ന് അർത്ഥമില്ല.

പല ഡെവലപ്പർമാരും ഈ തെറ്റ് വരുത്താറുണ്ട്. ഒരു അറ്റാക്കർക്ക് ഡാറ്റ വായിക്കാൻ കഴിയില്ലെങ്കിൽ അത് മാറ്റാനും കഴിയില്ലെന്ന് അവർ കരുതുന്നു. ഇത് തെറ്റാണ്. ക്രിപ്റ്റോഗ്രഫിയിൽ രഹസ്യാത്മകതയും (secrecy) ഡാറ്റയുടെ അവികലതയും (integrity) രണ്ട് വ്യത്യസ്ത കാര്യങ്ങളായാണ് കണക്കാക്കുന്നത്.

CBC Bit Flipping ആക്രമണം ഇത് തെളിയിക്കുന്നു. നിങ്ങളുടെ സീക്രട്ട് കീ അറിയാതെ തന്നെ ഒരു അറ്റാക്കർക്ക് ഡാറ്റ മാറ്റാൻ കഴിയും.

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് നോക്കാം:

AES ഡാറ്റയെ ഒരൊറ്റ വലിയ കഷണമായിട്ടല്ല എൻക്രിപ്റ്റ് ചെയ്യുന്നത്. അത് ഡാറ്റയെ 16-ബൈറ്റ് ബ്ലോക്കുകളായി തിരിക്കുന്നു. CBC മോഡിൽ, ഈ ബ്ലോക്കുകൾ പരസ്പരം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു (chain). ആദ്യത്തെ ബ്ലോക്കിന്റെ എൻക്രിപ്റ്റ് ചെയ്ത ഔട്ട്പുട്ട് രണ്ടാമത്തെ ബ്ലോക്കിന്റെ പ്ലെയിൻ ടെക്സ്റ്റുമായി (plaintext) കലരുന്നു.

ഈ ചെയിൻ ഡീക്രിപ്ഷൻ സമയത്ത് ഒരു ബലഹീനത സൃഷ്ടിക്കുന്നു. ബ്ലോക്ക് 2-ന്റെ യഥാർത്ഥ ടെക്സ്റ്റ് ലഭിക്കുന്നതിനായി, സെർവർ അത് ഡീക്രിപ്റ്റ് ചെയ്യുകയും ബ്ലോക്ക് 1-ൽ നിന്നുള്ള സൈഫർ ടെക്സ്റ്റുമായി (ciphertext) സംയോജിപ്പിക്കുകയും ചെയ്യുന്നു.

ഒരു അറ്റാക്കർക്ക് ഇത് ചൂഷണം ചെയ്യാൻ കഴിയും:

അറ്റാക്കർക്ക് സന്ദേശം വായിക്കേണ്ട ആവശ്യമില്ല. ഫലം മാറ്റാൻ അവർ ബിറ്റുകൾ മാത്രം മാറ്റിയാൽ മതി.

സെഷനുകൾക്കായി എൻക്രിപ്റ്റ് ചെയ്ത കുക്കികൾ ഉപയോഗിക്കുന്ന ഒരു പഴയ വെബ് ആപ്പ് സങ്കൽപ്പിക്കുക. ഒരു കുക്കിന് ഇപ്രകാരം ഉണ്ടാകാം: userid=994;role=user;

ഒരു അറ്റാക്കർ ഈ കുക്കിനെ തടഞ്ഞുനിർത്തുകയും സൈഫർ ടെക്സ്റ്റിലെ ബിറ്റുകൾ മാറ്റുകയും ചെയ്യുന്നു. സെർവർ ഒന്ന് സ്വീകരിക്കുന്നത് വരെ അവർ നിരവധി റിക്വസ്റ്റുകൾ അയക്കുന്നു. ഡാറ്റ ഡീക്രിപ്റ്റ് ആകുന്നുണ്ടോ എന്ന് മാത്രമേ സെർവർ പരിശോധിക്കുന്നുള്ളൂ എന്നതിനാൽ, അത് മാറ്റം വരുത്തിയ ടെക്സ്റ്റ് പ്രോസസ്സ് ചെയ്യുന്നു. പെട്ടെന്ന്, ഡീക്രിപ്റ്റ് ചെയ്ത സ്ട്രിംഗ് ഇപ്രകാരം മാറുന്നു: userid=994;role=admi;

അറ്റാക്കർക്ക് ഇപ്പോൾ അഡ്മിൻ ആക്സസ് ലഭിച്ചു. അവർ കീയോ യഥാർത്ഥ കുക്കിയോ ഒരിക്കലും വായിച്ചില്ല.

എൻക്രിപ്ഷൻ ഡാറ്റയുടെ അവികലത (integrity) ഉറപ്പാക്കുന്നു എന്ന് കരുതുന്നതാണ് തെറ്റ്.

ഇത് പരിഹരിക്കാൻ AES-GCM പോലുള്ള ഓതന്റിക്കേറ്റഡ് എൻക്രിപ്ഷൻ (Authenticated Encryption) ഉപയോഗിക്കുക. ഇത് ഒരു ക്രിപ്റ്റോഗ്രാഫിക് ടാഗ് നിർമ്മിക്കുന്നു. ഈ ടാഗ് ഒരു സീൽ പോലെ പ്രവർത്തിക്കുന്നു. ഒരു അറ്റാക്കർ ഒരു ബിറ്റ് പോലും മാറ്റിയാൽ, ആ സീൽ തകരും. സെർവർ ഉടൻ തന്നെ ആ ഡാറ്റ നിരസിക്കും.

നിങ്ങൾക്ക് CBC തന്നെ ഉപയോഗിക്കേണ്ടി വരികയാണെങ്കിൽ, Encrypt-then-MAC ആർക്കിടെക്ചർ ഉപയോഗിക്കുക. സൈഫർ ടെക്സ്റ്റിനായി ഒരു ഓതന്റിക്കേഷൻ കോഡ് നിർമ്മിക്കുകയും ഡീക്രിപ്ഷൻ തുടങ്ങുന്നതിന് മുമ്പ് അത് പരിശോധിക്കുകയും ചെയ്യുക.

രഹസ്യമായ ഡാറ്റ എപ്പോഴും വിശ്വസനീയമായ ഡാറ്റ ആയിരിക്കണമെന്നില്ല. തീരുമാനങ്ങൾ എടുക്കാൻ ഡാറ്റ ഉപയോഗിക്കുന്നതിന് മുമ്പ് അത് മാറ്റം വരുത്തപ്പെട്ടതല്ല എന്ന് എപ്പോഴും ഉറപ്പുവരുത്തുക.

Source: https://dev.to/arashad_dodhiya_0e4bdba5a/cbc-bit-flipping-explained-why-encryption-alone-doesnt-guarantee-integrity-5aje