ලිපිගොනු මගින් Steganography: දත්ත සෘජුවම අංශවල සැඟවීම

කෙටි පෙරවදනක්

Steganography, යමෙකු මතක තබා නොගන්නේ නම්, සමහර බහාලුම්වල තොරතුරු සඟවයි. උදාහරණයක් ලෙස, පින්තූරවල (සාකච්ඡා කර ඇත මෙහි и මෙහි) ඔබට ගොනු පද්ධතියේ සේවා වගු වල දත්ත සැඟවිය හැක (මෙය ලියා ඇත මෙහි), සහ පවා TCP ප්‍රොටෝකෝල සේවා පැකට් වල. අවාසනාවකට මෙන්, මෙම සියලු ක්‍රමවලට එක් අඩුපාඩුවක් ඇත: කන්ටේනරයකට නොපෙනෙන ලෙස තොරතුරු “ඇතුළු කිරීම” සඳහා, ඔබට කන්ටේනරයේ අභ්‍යන්තර ව්‍යුහයේ සුවිශේෂතා සැලකිල්ලට ගන්නා කපටි ඇල්ගොරිතම අවශ්‍ය වේ. හැසිරවීමට කන්ටේනරයේ ප්‍රතිරෝධය සමඟ ගැටළු පැන නගී: උදාහරණයක් ලෙස, ඔබ පින්තූරය තරමක් සංස්කරණය කරන්නේ නම්, සැඟවුණු තොරතුරු නැති වී යයි.

කපටි ඇල්ගොරිතම සහ දත්ත සමඟ සියුම් උපාමාරු නොමැතිව කෙසේ හෝ කළ හැකිද, සහ තවමත් කන්ටේනරයේ ක්‍රියාකාරීත්වය සහ සැඟවුණු දත්තවල පිළිගත හැකි මට්ටමේ ආරක්ෂාවක් සහතික කළ හැකිද? ඉදිරිය බලා, මම කියන්නම් - ඔව්, ඔබට පුළුවන්! මම උපයෝගිතා පවා ඉදිරිපත් කරමි.

ක්රමයේ ලේවැකි විස්තර

මූලික අදහස නළලට පහරක් වැනි සරල ය: මෙහෙයුම් පද්ධතිය කිසි විටෙකත් ලියන්නේ නැති (හෝ දුර්ලභ අවස්ථාවන්හිදී ලියන) තැටියේ ප්රදේශ තිබේ. කපටි ඇල්ගොරිතම භාවිතයෙන් මෙම ප්‍රදේශ සෙවීමේ අවශ්‍යතාවය වළක්වා ගැනීම සඳහා, අපි අතිරික්තය භාවිතා කරන්නෙමු - එනම්, අපි අපගේ සැඟවුණු තොරතුරු තැටියේ සියලුම අංශ හරහා බොහෝ වාර ගණනක් අනුපිටපත් කරන්නෙමු. එවිට, මේ සියලු තේජස ඉහළින්ම, ඔබට අවශ්‍ය කොටස් සෑදිය හැකිය, ගොනු පද්ධති ආකෘතිකරණය කළ හැකිය, ලිපිගොනු ලිවීමට සහ OS ස්ථාපනය කළ හැකිය - සියල්ලටම වඩා, රහස් දත්තවල කොටසක් සුරැකෙන අතර නැවත ලබා ගත හැකි අතර නැවත නැවත අනුපිටපත් කිරීම අපට උපකාරී වනු ඇත. කෑලි වලින් මුල් සම්පූර්ණ එකට දමන්න.

මෙම ක්රමයේ වාසිය පැහැදිලිය: අපි ගොනු ආකෘතිය මත හෝ භාවිතා කරන ගොනු පද්ධති වර්ගය මත රඳා නොපවතී.

අවාසි ද, මම සිතන පරිදි, පැහැදිලි ය:

  • රහස් දත්ත වෙනස් කළ හැක්කේ සම්පූර්ණ තැටිය සම්පූර්ණයෙන්ම නැවත ලිවීමෙන් පසුව පරිශීලකයාට පෙනෙන අන්තර්ගතය නැවත නිර්මාණය කිරීමෙන් පමණි. කෙසේ වෙතත්, ඔබට රූපයකින් තැටිය ප්‍රතිනිර්මාණය කරන මෘදුකාංගයක් භාවිතා කළ නොහැක: එය පෙර රහස් දත්ත ද ප්‍රතිනිර්මාණය කරනු ඇත.
  • රහස් දත්ත පරිමාව විශාල වන තරමට සමහර තොරතුරු අහිමි වීමේ සම්භාවිතාව වැඩි වේ.
  • තැටියෙන් දත්ත ලබා ගැනීමට බොහෝ කාලයක් ගත විය හැක. මිනිත්තු කිහිපයක් සිට දින කිහිපයක් දක්වා (නවීන තැටි විශාල වේ).

දැන් අපි විශේෂතා වෙත යමු.

ඔබ සරලව තැටිය පුරා රහස් දත්ත අතුල්ලන්නේ නම්, එය පියවි ඇසින් පමණක් සැඟවී ඇති බව පැහැදිලිය. ඔබ ඔබේ බැල්ම තැටි සංස්කාරකයකින් සන්නද්ධ කරන්නේ නම්, දත්ත එහි සියලු තේජසින් දිස්වනු ඇත. එමනිසා, දත්ත නොපෙන්වන ලෙස සංකේතනය කිරීම හොඳ අදහසකි. අපි සරලව, නමුත් රසවත් ලෙස සංකේතනය කරන්නෙමු: aes256-cbc ඇල්ගොරිතම භාවිතයෙන්. අපි පරිශීලකයාගෙන් සංකේතාංකන යතුර ඉල්ලා ඔහුට හොඳ මුරපදයක් ලබා දෙන්නෙමු.

ඊළඟ ප්‍රශ්නය වන්නේ නරක දත්තවලින් “හොඳ” දත්ත වෙන්කර හඳුනා ගන්නේ කෙසේද යන්නයි. මෙහිදී චෙක්සම් එකක් අපට උපකාර වනු ඇත, නමුත් සරල එකක් නොවේ, නමුත් SHA1. සහ කුමක් ද? git එකට හොදටම ඇති ඒ නිසා අපිටත් ගැලපෙනවා. තීරණය කරන ලදී: අපි ගබඩා කර ඇති සෑම තොරතුරක්ම චෙක්සම් සමඟ සපයනු ලබන අතර, විකේතනයෙන් පසුව එය ගැලපෙන්නේ නම්, එයින් අදහස් වන්නේ විකේතනය සාර්ථක වූ බවයි.

ඔබට රහස් දත්තවල කොටස් අංකය සහ සම්පූර්ණ දිග ද අවශ්‍ය වේ. ඛණ්ඩ අංකය යනු අප දැනටමත් විකේතනය කර ඇති සහ ඉතිරිව ඇති කොටස් පිළිබඳව සටහන් තබා ගැනීමයි. අනවශ්‍ය දත්ත (එනම් පෑඩිං) ලිවීමට නොහැකි වන පරිදි අවසාන කොටස සැකසීමේදී සම්පූර්ණ දිග අපට ප්‍රයෝජනවත් වනු ඇත. හොඳයි, අපට තවමත් ශීර්ෂයක් ඇති බැවින්, අපි එහි රහස් ගොනුවේ නම එක් කරන්නෙමු. එය විවෘත කරන්නේ කෙසේදැයි අනුමාන නොකිරීමට එය විකේතනයෙන් පසුව ප්රයෝජනවත් වනු ඇත.

ප්රායෝගිකව ක්රමවේදය පරීක්ෂා කිරීම

පරීක්ෂා කිරීම සඳහා, අපි වඩාත් පොදු මාධ්යය ගනිමු - ෆ්ලෑෂ් ධාවකය. මට 1 GB ධාරිතාවක් සහිත පැරණි එකක් හමු විය, එය අත්හදා බැලීම් සඳහා බෙහෙවින් සුදුසු ය. ඔබ, මා මෙන්, භෞතික මාධ්‍ය සමඟ කරදර නොවී, එය ගොනුවක් - තැටි රූපයක් මත පරීක්ෂා කිරීමේ අදහස ඉදිරිපත් කළේ නම්, මම වහාම කියමි: එය ක්‍රියා නොකරනු ඇත. එවැනි "තැටියක්" සංයුති කරන විට, ලිනක්ස් නැවත ගොනුව නිර්මාණය කරයි, සහ භාවිතා නොකළ සියලුම අංශ ශුන්ය වලින් පුරවනු ලැබේ.

Linux සමඟ යන්ත්‍රයක් ලෙස, අවාසනාවකට, මට බැල්කනියේ වැතිර ඇති Raspberry Pi 3 හි කාලගුණ මධ්‍යස්ථානයක් භාවිතා කිරීමට සිදු විය.එහි වැඩි මතකයක් නොමැත, එබැවින් අපි විශාල ගොනු සඟවන්නේ නැත. අපි උපරිම ප්‍රමාණය මෙගාබයිට් 10කට සීමා කරමු. ඉතා කුඩා ගොනු සැඟවීමේ තේරුමක් නැත: උපයෝගීතාව 4 KB පොකුරු තුළ තැටියට දත්ත ලියයි. එමනිසා, පහත අපි 3 kb ගොනුවකට සීමා කරමු - එය එවැනි එක් පොකුරකට ගැලපේ.

අපි ෆ්ලෑෂ් ධාවකය අදියර වශයෙන් සමච්චල් කරන්නෙමු, සැඟවුණු තොරතුරු කියවිය හැකිද යන්න එක් එක් අදියරෙන් පසුව පරීක්ෂා කරන්න:

  1. 16 KB පොකුරු ප්‍රමාණයෙන් FAT16 ආකෘතියෙන් වේගවත් හැඩතල ගැන්වීම. ගොනු පද්ධතියක් නොමැති ෆ්ලෑෂ් ධාවකය සමඟ වින්ඩෝස් 7 ඉදිරිපත් කරන්නේ මෙයයි.
  2. 50% කින් සියලු වර්ගවල කසළ සමඟ ෆ්ලෑෂ් ධාවකය පිරවීම.
  3. 100% කින් සියලු වර්ගවල කසළ සමඟ ෆ්ලෑෂ් ධාවකය පිරවීම.
  4. FAT16 ආකෘතියෙන් "දිගු" හැඩතල ගැන්වීම (සියල්ල නැවත ලිවීම).

පළමු පරීක්ෂණ දෙක, අපේක්ෂා කළ පරිදි, සම්පූර්ණ ජයග්රහණයෙන් අවසන් විය: ෆ්ලෑෂ් ධාවකය වෙතින් රහස් දත්ත මෙගාබයිට් 10 ක් සාර්ථකව උපුටා ගැනීමට උපයෝගීතාවයට හැකි විය. නමුත් ෆ්ලෑෂ් ඩ්‍රයිව් එක ලිපිගොනු වලින් පිරී ගිය පසු, අසාර්ථක වීමක් සිදු විය:

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

ඔබට පෙනෙන පරිදි, සාර්ථකව විකේතනය කර ඇත්තේ පොකුරු 158 ක් පමණි (අමු දත්ත කිලෝබයිට් 632 ක්, එය බයිට් 636424 ක් ගෙවා ඇත). මෙහි මෙගාබයිට් 10 ක් ලබා ගැනීමට ක්‍රමයක් නොමැති බව පැහැදිලිය, නමුත් මෙම පොකුරු අතර පැහැදිලිවම අනුපිටපත් තිබේ. ඔබට මේ ආකාරයෙන් මෙගාබයිට් 1ක් වත් අයකර ගත නොහැක. නමුත් ෆ්ලෑෂ් ඩ්‍රයිව් එකකින් එය ෆෝමැට් කර ධාරිතාවයට ලිවීමෙන් පසුව පවා අපි කිලෝබයිට් 3 ක රහස් දත්ත නැවත ලබා ගන්නා බවට අපට සහතික විය හැකිය. කෙසේ වෙතත්, අත්හදා බැලීම්වලින් පෙනී යන්නේ එවැනි ෆ්ලෑෂ් ධාවකයකින් කිලෝබයිට් 120 ක් දිග ගොනුවක් උකහා ගැනීමට බෙහෙවින් හැකි බවයි.

අවසාන පරීක්ෂණය, අවාසනාවකට මෙන්, සම්පූර්ණ ෆ්ලෑෂ් ඩ්‍රයිව් එක උඩින් ලියා ඇති බව පෙන්නුම් කළේය:

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

එක පොකුරක්වත් බේරී නැත ... කණගාටුයි, නමුත් ඛේදජනක නොවේ! හැඩතල ගැන්වීමට පෙර, ෆ්ලෑෂ් ධාවකය මත කොටසක් සෑදීමට උත්සාහ කරමු, සහ දැනටමත් එහි ගොනු පද්ධතියකි. මාර්ගය වන විට, එය හරියටම මෙම හැඩතල ගැන්වීම සමඟ කර්මාන්තශාලාවෙන් පැමිණියේය, එබැවින් අපි සැක සහිත කිසිවක් නොකරමු.
ෆ්ලෑෂ් ධාවකය මත පවතින ඉඩ ප්රමාණය තරමක් අඩු වී ඇති බව බෙහෙවින් අපේක්ෂා කෙරේ.

සම්පූර්ණයෙන්ම සම්පූර්ණ තැටියක මෙගාබයිට් 10 ක් සැඟවිය නොහැකි බව ද අපේක්ෂා කෙරේ. නමුත් දැන් සාර්ථකව විකේතනය කරන ලද පොකුරු ගණන දෙගුණයකටත් වඩා වැඩි වී ඇත!

Total clusters read: 250752, decrypted: 405

අවාසනාවකට, කෑලි වලින් මෙගාබයිට් එකලස් කිරීම කළ නොහැකි නමුත් කිලෝබයිට් දෙසීයක් පහසුය.

හොඳයි, පසුගිය, 4 වන චෙක්පත පිළිබඳ ප්රවෘත්තිය, මෙම කාලය ප්රීතිමත් ය: එවැනි ෆ්ලෑෂ් ධාවකය සම්පූර්ණයෙන්ම හැඩතල ගැන්වීම සියලු තොරතුරු විනාශ කිරීමට තුඩු දුන්නේ නැත! කිලෝබයිට් 120ක රහස් දත්ත භාවිතයට නොගත් අවකාශයට හොඳින් ගැලපේ.

පරීක්ෂණ සාරාංශ වගුව:

ලිපිගොනු මගින් Steganography: දත්ත සෘජුවම අංශවල සැඟවීම

ටිකක් න්යායකරණය: නිදහස් ඉඩ සහ භාවිතයට නොගත් අංශ ගැන

ඔබ කවදා හෝ ඔබේ දෘඪ තැටිය කොටස් වලට බෙදා ඇත්නම්, තැටියේ ඇති සියලුම නිදහස් ඉඩ වෙන් කිරීමට සැමවිටම නොහැකි බව ඔබ දැක ඇති. පළමු කොටස සෑම විටම ආරම්භ වන්නේ යම් ඉන්ඩෙන්ටේෂන් එකකින් (සාමාන්‍යයෙන් මෙගාබයිට් 1, හෝ අංශ 2048). අවසාන කොටස පිටුපස, භාවිතයට නොගත් අංශවල කුඩා “වලිගයක්” ඉතිරිව තිබීම ද සිදු වේ. සමහර විට කලාතුරකින් වුවද කොටස් අතර හිඩැස් ඇත.

වෙනත් වචන වලින් කිවහොත්, තැටිය සමඟ සාමාන්‍ය වැඩ කිරීමේදී ප්‍රවේශ විය නොහැකි අංශ තැටියේ ඇත, නමුත් මෙම අංශ වෙත දත්ත ලිවිය හැකිය! ඒ කියන්නෙ ඒකත් කියවන්න. තැටියේ ආරම්භයේ හිස් ප්රදේශයේ පිහිටා ඇති කොටස් වගුව සහ ඇරඹුම් කාරක කේතය ද ඇති බව සඳහා සකස් කර ඇත.

අපි ටික වේලාවක් කොටස් වලින් විවේකයක් ගෙන, කුරුල්ලෙකුගේ ඇසින් තැටිය දෙස බලමු. මෙන්න අපි තැටියේ හිස් කොටසක් ඇත. ඒකෙ file system එකක් හදමු. තැටියේ සමහර අංශ නොමැකෙන බව අපට පැවසිය හැකිද?

E-e-e - drum roll! පිළිතුර සෑම විටම පාහේ ඔව් වනු ඇත! ඇත්ත වශයෙන්ම, බොහෝ අවස්ථාවලදී, ගොනු පද්ධතියක් නිර්මාණය කිරීම තැටියට සේවා තොරතුරු බ්ලොක් කිහිපයක් පමණක් ලිවීමට පැමිණේ, එසේ නොමැතිනම් කොටසෙහි අන්තර්ගතය වෙනස් නොවේ.

තවද - සම්පූර්ණයෙන්ම ආනුභවිකව - ගොනු පද්ධතියට සෑම විටම අවසාන අංශය දක්වා වෙන් කර ඇති සියලුම ඉඩ ලබා ගත නොහැකි යැයි අපට උපකල්පනය කළ හැකිය. උදාහරණයක් ලෙස, කිලෝබයිට් 16ක පොකුරු ප්‍රමාණයකින් යුත් FAT64 ගොනු පද්ධතියකට පැහැදිලිවම කිලෝබයිට් 64ක ගුණාකාර නොවන ප්‍රමාණයකින් කොටසක් සම්පූර්ණයෙන් ගත නොහැක. එවැනි කොටසක අවසානයේ පරිශීලක දත්ත ගබඩා කිරීම සඳහා ප්‍රවේශ විය නොහැකි අංශ කිහිපයක “වලිගය” තිබිය යුතුය. කෙසේ වෙතත්, මෙම උපකල්පනය පර්යේෂණාත්මකව තහවුරු කළ නොහැකි විය.

එබැවින්, steganogram සඳහා පවතින ඉඩ උපරිම කිරීම සඳහා, ඔබ විශාල පොකුරු ප්රමාණයකින් ගොනු පද්ධතියක් භාවිතා කළ යුතුය. මෙය අනවශ්‍ය වුවද (උදාහරණයක් ලෙස ෆ්ලෑෂ් ඩ්‍රයිව් එකක) ඔබට කොටසක් සෑදිය හැක. හිස් කොටස් සෑදීමට හෝ වෙන් නොකළ ප්රදේශ අත්හැරීමට අවශ්ය නැත - මෙය උනන්දුවක් දක්වන පුරවැසියන්ගේ අවධානය ආකර්ෂණය වනු ඇත.

අත්හදා බැලීම් සඳහා උපයෝගීතාව

ඔබට උපයෝගීතාවයේ මූල කේතය ස්පර්ශ කළ හැකිය මෙහි

ගොඩනැගීමට, ඔබට Qt අනුවාදය 5.0 හෝ ඊට වැඩි සහ OpenSSL අවශ්‍ය වේ. යමක් ක්‍රියා නොකරන්නේ නම්, ඔබට steganodisk.pro ගොනුව සංස්කරණය කිරීමට සිදු විය හැක.

ඔබට පොකුරු ප්‍රමාණය 4 KB සිට බයිට් 512 දක්වා (secretfile.h වලින්) වෙනස් කළ හැක. ඒ සමගම, සේවා තොරතුරු වල පිරිවැය වැඩි වනු ඇත: ශීර්ෂකය සහ චෙක්සම් ස්ථාවර බයිට් 68 ක් ගනී.

ඔබ උපයෝගිතා ධාවනය කළ යුතුය, ඇත්ත වශයෙන්ම, root පරිශීලක අයිතිවාසිකම් සමඟ, සහ ප්රවේශමෙන්. නිශ්චිත ගොනුව හෝ උපාංගය උඩින් ලිවීමට පෙර ප්‍රශ්න අසනු නොලැබේ!

රසවිඳින්න.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න