கோப்புகள் மூலம் ஸ்டெகானோகிராபி: தரவை நேரடியாக துறைகளில் மறைத்தல்

ஒரு சிறிய முன்னுரை

ஸ்டெகானோகிராபி, யாருக்கும் நினைவில் இல்லை என்றால், சில கொள்கலன்களில் தகவல்களை மறைக்கிறது. எடுத்துக்காட்டாக, படங்களில் (விவாதிக்கப்பட்டது இங்கே и இங்கே) கோப்பு முறைமையின் சேவை அட்டவணைகளிலும் தரவை மறைக்க முடியும் (இது பற்றி எழுதப்பட்டது இங்கே), மற்றும் கூட TCP நெறிமுறை சேவை பாக்கெட்டுகளில். துரதிர்ஷ்டவசமாக, இந்த முறைகள் அனைத்திற்கும் ஒரு குறைபாடு உள்ளது: ஒரு கொள்கலனில் தகவலை "செருக" செய்ய, கொள்கலனின் உள் கட்டமைப்பின் தனித்தன்மையை கணக்கில் எடுத்துக்கொள்ளும் தந்திரமான வழிமுறைகள் உங்களுக்குத் தேவை. கையாளுதலுக்கான கொள்கலனின் எதிர்ப்பில் சிக்கல்கள் எழுகின்றன: எடுத்துக்காட்டாக, நீங்கள் படத்தை சிறிது திருத்தினால், மறைக்கப்பட்ட தகவல்கள் இழக்கப்படும்.

தந்திரமான வழிமுறைகள் மற்றும் தரவுகளுடன் நுட்பமான கையாளுதல்கள் இல்லாமல் எப்படியாவது செய்ய முடியுமா, இன்னும் கொள்கலனின் செயல்பாடு மற்றும் மறைக்கப்பட்ட தரவின் ஏற்றுக்கொள்ளக்கூடிய அளவிலான பாதுகாப்பை உறுதிப்படுத்த முடியுமா? முன்னோக்கிப் பார்த்து, நான் சொல்கிறேன் - ஆம், உங்களால் முடியும்! நான் ஒரு பயன்பாட்டை கூட வழங்குவேன்.

முறையின் இரத்தக்களரி விவரங்கள்

அடிப்படை யோசனை நெற்றியில் ஒரு அடி போன்ற எளிமையானது: இயக்க முறைமை ஒருபோதும் எழுதாத (அல்லது அரிதான நிகழ்வுகளில் எழுதும்) வட்டில் பகுதிகள் உள்ளன. தந்திரமான வழிமுறைகளைப் பயன்படுத்தி இந்தப் பகுதிகளைத் தேட வேண்டிய அவசியத்தைத் தவிர்க்க, பணிநீக்கத்தைப் பயன்படுத்துவோம் - அதாவது, எங்கள் மறைக்கப்பட்ட தகவல்களை வட்டின் அனைத்துத் துறைகளிலும் பல முறை நகலெடுப்போம். பின்னர், இந்த அனைத்து சிறப்பிற்கும் மேலாக, நீங்கள் தேவையான பகிர்வுகளை உருவாக்கலாம், கோப்பு முறைமைகளை வடிவமைக்கலாம், கோப்புகளை எழுதலாம் மற்றும் OS களை நிறுவலாம் - அதே போல், ரகசியத் தரவின் ஒரு பகுதி சேமிக்கப்படும் மற்றும் மீட்டெடுக்கப்படும், மேலும் மீண்டும் மீண்டும் நகலெடுப்பது எங்களுக்கு உதவும். துண்டுகளிலிருந்து அசல் முழுவதையும் ஒன்றாக இணைக்கவும்.

இந்த முறையின் நன்மை வெளிப்படையானது: நாங்கள் கோப்பு வடிவத்தையோ அல்லது பயன்படுத்தப்படும் கோப்பு முறைமையின் வகையையோ சார்ந்து இருப்பதில்லை.

குறைபாடுகளும் கூட, நான் நினைக்கிறேன், வெளிப்படையானது:

  • முழு வட்டையும் முழுவதுமாக மீண்டும் எழுதுவதன் மூலம் மட்டுமே ரகசியத் தரவை மாற்ற முடியும், அதைத் தொடர்ந்து பயனருக்குத் தெரியும் உள்ளடக்கத்தை மீண்டும் உருவாக்கலாம். இருப்பினும், ஒரு படத்திலிருந்து வட்டை மீண்டும் உருவாக்கும் மென்பொருளை நீங்கள் பயன்படுத்த முடியாது: இது முந்தைய ரகசியத் தரவையும் மீண்டும் உருவாக்கும்.
  • இரகசியத் தரவுகளின் அளவு பெரியது, சில தகவல்களை இழக்கும் வாய்ப்பு அதிகம்.
  • வட்டில் இருந்து தரவை மீட்டெடுக்க நீண்ட நேரம் ஆகலாம். பல நிமிடங்கள் முதல் பல நாட்கள் வரை (நவீன வட்டுகள் பெரியவை).

இப்போது விவரங்களுக்கு செல்லலாம்.

வட்டு முழுவதும் ரகசியத் தரவை வெறுமனே தடவினால், அது நிர்வாணக் கண்ணிலிருந்து மட்டுமே மறைக்கப்படும் என்பது தெளிவாகிறது. உங்கள் பார்வையை ஒரு வட்டு எடிட்டருடன் சித்தப்படுத்தினால், தரவு அதன் எல்லா மகிமையிலும் தோன்றும். எனவே, தரவைக் காட்டாதவாறு குறியாக்கம் செய்வது நல்லது. நாங்கள் எளிமையாக, ஆனால் சுவையாக குறியாக்கம் செய்வோம்: aes256-cbc அல்காரிதம் பயன்படுத்தி. பயனரிடம் குறியாக்க விசையைக் கேட்டு, நல்ல கடவுச்சொல்லைக் கொண்டு வர அனுமதிப்போம்.

அடுத்த கேள்வி என்னவென்றால், “நல்ல” தரவை மோசமான தரவிலிருந்து எவ்வாறு வேறுபடுத்துவது என்பதுதான். இங்கே செக்சம் எங்களுக்கு உதவும், ஆனால் எளிமையானது அல்ல, ஆனால் SHA1. அடுத்து என்ன? இது கிட் போதுமானது, எனவே இது நமக்கும் பொருந்தும். முடிவு செய்யப்பட்டது: சேமிக்கப்பட்ட ஒவ்வொரு தகவலையும் செக்சம் மூலம் வழங்குகிறோம், மறைகுறியாக்கத்திற்குப் பிறகு அது பொருந்தினால், மறைகுறியாக்கம் வெற்றிகரமாக இருந்தது என்று அர்த்தம்.

துண்டு எண் மற்றும் ரகசியத் தரவின் மொத்த நீளமும் உங்களுக்குத் தேவைப்படும். துண்டு எண் என்பது எந்தெந்த துண்டுகளை நாம் ஏற்கனவே புரிந்துகொண்டோம், எவை எஞ்சியுள்ளன என்பதைக் கண்காணிப்பதாகும். தேவையற்ற தரவை (அதாவது, திணிப்பு) எழுதாமல் இருக்க, கடைசி பகுதியை செயலாக்கும்போது மொத்த நீளம் எங்களுக்கு பயனுள்ளதாக இருக்கும். சரி, எங்களிடம் இன்னும் தலைப்பு இருப்பதால், ரகசிய கோப்பின் பெயரை அங்கே சேர்ப்போம். மறைகுறியாக்கத்திற்குப் பிறகு இது பயனுள்ளதாக இருக்கும், எனவே அதை எவ்வாறு திறப்பது என்று யூகிக்க வேண்டாம்.

நடைமுறையில் முறை சோதனை

சரிபார்க்க, மிகவும் பொதுவான ஊடகத்தை எடுத்துக்கொள்வோம் - ஒரு ஃபிளாஷ் டிரைவ். 1 ஜிபி திறன் கொண்ட பழையதைக் கண்டேன், இது சோதனைகளுக்கு மிகவும் பொருத்தமானது. நீங்கள், என்னைப் போலவே, இயற்பியல் ஊடகத்தைப் பற்றி கவலைப்படாமல், அதை ஒரு கோப்பில் - ஒரு வட்டுப் படத்தில் சோதிக்க வேண்டும் என்ற யோசனையுடன் வந்தால், நான் இப்போதே கூறுவேன்: அது வேலை செய்யாது. அத்தகைய "வட்டு" வடிவமைக்கும் போது, ​​லினக்ஸ் மீண்டும் கோப்பை உருவாக்குகிறது, மேலும் பயன்படுத்தப்படாத அனைத்து பிரிவுகளும் பூஜ்ஜியங்களால் நிரப்பப்படும்.

லினக்ஸுடன் ஒரு இயந்திரமாக, துரதிர்ஷ்டவசமாக, பால்கனியில் கிடக்கும் ராஸ்பெர்ரி பை 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 கிலோபைட் ரகசியத் தரவு பயன்படுத்தப்படாத இடத்தில் சரியாகப் பொருந்துகிறது.

சோதனை சுருக்க அட்டவணை:

கோப்புகள் மூலம் ஸ்டெகானோகிராபி: தரவை நேரடியாக துறைகளில் மறைத்தல்

ஒரு சிறிய கோட்பாடு: இலவச இடம் மற்றும் பயன்படுத்தப்படாத துறைகள் பற்றி

நீங்கள் எப்போதாவது உங்கள் ஹார்ட் டிரைவை பகிர்வுகளாகப் பிரித்திருந்தால், வட்டில் உள்ள அனைத்து இலவச இடத்தையும் ஒதுக்குவது எப்போதும் சாத்தியமில்லை என்பதை நீங்கள் கவனித்திருக்கலாம். முதல் பிரிவு எப்போதும் சில உள்தள்ளலுடன் தொடங்குகிறது (பொதுவாக 1 மெகாபைட் அல்லது 2048 பிரிவுகள்). கடைசி பகுதியின் பின்னால், பயன்படுத்தப்படாத துறைகளின் சிறிய "வால்" உள்ளது. மற்றும் சில நேரங்களில் பிரிவுகளுக்கு இடையில் இடைவெளிகள் உள்ளன, அரிதாக இருந்தாலும்.

வேறு வார்த்தைகளில் கூறுவதானால், வட்டுடன் சாதாரண வேலையின் போது அணுக முடியாத வட்டில் உள்ள பிரிவுகள் உள்ளன, ஆனால் இந்தத் துறைகளுக்கு தரவு எழுதப்படலாம்! அதையும் படிக்க வேண்டும் என்று அர்த்தம். ஒரு பகிர்வு அட்டவணை மற்றும் துவக்க ஏற்றி குறியீடு உள்ளது என்பதற்காக சரிசெய்யப்பட்டது, அவை வட்டின் தொடக்கத்தில் வெற்று பகுதியில் அமைந்துள்ளன.

சிறிது நேரம் பிரிவுகளில் இருந்து ஓய்வு எடுத்துக்கொண்டு வட்டில் ஒரு பறவையின் பார்வையில் இருந்து பார்க்கலாம். இங்கே வட்டில் ஒரு வெற்று பகிர்வு உள்ளது. அதில் கோப்பு முறைமையை உருவாக்குவோம். வட்டில் உள்ள சில பிரிவுகள் அழிக்கப்படாமல் உள்ளன என்று சொல்ல முடியுமா?

இ-இ-இ - டிரம் ரோல்! பதில் கிட்டத்தட்ட எப்போதும் ஆம்! உண்மையில், பெரும்பாலான சந்தர்ப்பங்களில், ஒரு கோப்பு முறைமையை உருவாக்குவது வட்டில் சில சேவைத் தகவல்களை மட்டுமே எழுதுகிறது, இல்லையெனில் பகிர்வின் உள்ளடக்கங்கள் மாறாது.

மேலும் - முற்றிலும் அனுபவபூர்வமாக - கடைசித் துறை வரை ஒதுக்கப்பட்ட அனைத்து இடத்தையும் கோப்பு முறைமை எப்போதும் ஆக்கிரமிக்க முடியாது என்று நாம் கருதலாம். எடுத்துக்காட்டாக, 16 கிலோபைட் அளவு கொண்ட ஒரு FAT64 கோப்பு முறைமையானது 64 கிலோபைட்டுகளின் பெருக்கமில்லாத அளவு கொண்ட பகிர்வை முழுமையாக ஆக்கிரமிக்க முடியாது. அத்தகைய பிரிவின் முடிவில், பயனர் தரவைச் சேமிப்பதற்கு அணுக முடியாத பல பிரிவுகளின் "வால்" இருக்க வேண்டும். இருப்பினும், இந்த அனுமானத்தை சோதனை ரீதியாக உறுதிப்படுத்த முடியவில்லை.

எனவே, ஸ்டெகானோகிராமிற்கான இடத்தை அதிகரிக்க, நீங்கள் ஒரு பெரிய கிளஸ்டர் அளவு கொண்ட கோப்பு முறைமையை பயன்படுத்த வேண்டும். நீங்கள் ஒரு பகிர்வை உருவாக்கலாம், இது தேவையில்லை என்றாலும் (எடுத்துக்காட்டாக, ஃபிளாஷ் டிரைவில்). வெற்று பிரிவுகளை உருவாக்கவோ அல்லது ஒதுக்கப்படாத பகுதிகளை விட்டு வெளியேறவோ தேவையில்லை - இது ஆர்வமுள்ள குடிமக்களின் கவனத்தை ஈர்க்கும்.

சோதனைகளுக்கான பயன்பாடு

பயன்பாட்டின் மூலக் குறியீட்டை நீங்கள் தொடலாம் இங்கே

உருவாக்க, உங்களுக்கு Qt பதிப்பு 5.0 அல்லது அதற்கு மேல் மற்றும் OpenSSL தேவைப்படும். ஏதாவது வேலை செய்யவில்லை என்றால், நீங்கள் steganodisk.pro கோப்பைத் திருத்த வேண்டியிருக்கும்.

நீங்கள் கிளஸ்டர் அளவை 4 KB இலிருந்து 512 பைட்டுகளாக மாற்றலாம் (secretfile.h இல்). அதே நேரத்தில், சேவை தகவலின் விலை அதிகரிக்கும்: தலைப்பு மற்றும் செக்சம் ஒரு நிலையான 68 பைட்டுகளை ஆக்கிரமித்துள்ளது.

நீங்கள் நிச்சயமாக, ரூட் பயனர் உரிமைகளுடன், மற்றும் எச்சரிக்கையுடன் பயன்பாட்டை இயக்க வேண்டும். குறிப்பிட்ட கோப்பு அல்லது சாதனத்தை மேலெழுதுவதற்கு முன் கேள்விகள் எதுவும் கேட்கப்படாது!

மகிழுங்கள்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்