Steganography

  

  

  

  

  

پيشگفتار : 

  

Steganography ، هنر مخفی کردن يک متن در متن ديگر ، يکی از هم خانواده های Cryptography يا رمزنگاری است که امروزه بدليل در خواست صنعت در به جا گذاشتن آثاری در فيلم های ويدئويی و صدا برای اعمال copyright استفاده فراوانی پيدا کرده است . به عمل اضافه کردن نشانه ای در عکس ، ويدئو يا صدا برای نشان دهنده هويت آن اثر ، watermarking يا fingerprinting می گويند .

البته watermarking و fingerprinting کمی با يکديگر تفاوت دارند ، وقتی نشانه تجاری يا مشخصه ای در يک اثر مانند عکس ، ويدئو يا صدا به شکل مخفيانه ذخيره می شود به آن watermarking می گويند ؛ اما مخفی کردن شماره سريال يا يک مشخصه از يک چيز در چيز مشابه ديگر را fingerprinting می نامند . هر دوی اين روش ها برای جلوگيری از دزدی آثار بکار می روند ، از دومی برای پيدا کردن ناقضين copyright و از اولی برای اثبات آن استفاده می شود . اما اين دو روش بخشی از مطلب کلی تری به نام Steganography هستند .

هدف ما از اين مقاله دادن اطلاعات کلی درباره steganography است . برای رسيدن به اين هدف ابتدا تاريخچه ای از اين عنوان را که يونان باستان باز می گردد می گوييم ، سپس روش های مختلف اين کار مانند مخفی کردن اطلاعات در متن ، در عکس و يا در صدا را کمی توضيح می دهيم .

در روش های steganography در متن 3 روش life-shift coding ، word-shift coding و feature coding را بررسی می کنيم . همچنين روش های جذاب ديگری مانند تغيير در گرامر جملات را نيز مورد بررسی قرار می دهيم .

Steganography در عکس از زمانی شروع شد که کامپيوتر های قدرتمند وارد صحنه شدند ، همچنين نرم افزار هايی که اين کار را انجام می دهند بر روی اينترنت بعضا ً به شکل مجانی يافت می شوند . در اين قسمت روشLeast Significant Bit insertion را بررسی می کنيم . همچنين روش های پيچيده تری مانند filtering و masking را نيز مشاهده خواهيم کرد .

سپس در قسمت صدا ، روش های مختلفی مانند Lease Significant Bit insertion ، phase coding ، spread spectrum coding و echo hiding را مورد بررسی قرار می دهيم .

در آخر توضيحاتی درباره steganalysis يا علم پيدا کردن اطلاعات مخفی می دهيم .

  

  

  

مقدمه :

  

  

به طور قطع وقتی شما کوچک بوديد با آبليمو روی کاغذ مطالبی را نوشته ايد و وقتی که کاغذ خشک شد با گرم کردن آن شاهد نمايان شدن معجزه آسای متن نوشته شده بوديد .

و همچنين قطعا ً وقتی کمی بزرگتر شديد و با اسکناس آشنا شديد ديديد که وقتی آن را جلوی نور بگيريد نوشته ها و عکس هايی (watermark) بر روی آن نمايان می شود  ، هر دوی اين روش ها مربوط به steganography می شود ، هنر نوشتن مخفيانه .

Steganography در يونانی به معنای پوشيده شده يا نوشتن مخفيانه است . با اينکه به Cryptography هم خانواده است ولی يکی نيستند . قصد steganography مخفی کردن وجود يک پيغام است در حالی که Cryptography تلاش می کند تا پيغام موجود را به پيغامی غير قابل فهم تبديل بکند . به طوری که در باب steganography می گويند ،

  

هدف steganography اين است که پيغامی را در يک پيغام ديگر ِ بی خطر به روشی ذخيره کند که دشمن پی به وجود پيغام اولی در پيغام دوم نبرد .

  

Steganography دارای روش های گسترده ای برای مخفی کردن اطلاعات در رسانه های مختلف است . در ميان اين روش ها می توان به جوهر های نامرئی ، microdot ، امضای ديجيتالی ، کانالهای پيچيده و ارتباطات spread-spectrum اشاره کرد . امروزه به خاطر تکنولوژی پيشرفته از steganography در متن ، عکس ، صدا ، سيگنالها و خيلی رسانه های ديگر استفاده می کنند .

برتری steganography در اين است که می توان پيغامی را فرستاد بدون اينکه کسی بفهمد پيغامی فرستاده شده است . به طور معمول در encryption درک می شود که فرستند و گيرنده در حال رد و بدل کردن اطلاعاتی هستند که نمی خواهند شخصيت سومی از آن خبردار باشد .

با اين حال steganography دارای عيب هايی نيز می باشد . به طور مثال ، برای فرستادن چند بيت احتياج به فرستادن تعداد بسيار زيادی بيت ِ بدون اطلاعات هستيم و over head آن زياد است . يا اينکه به محض لو رفتن الگوريتم يک روش ديگر از آن نمی توان در مخفی کردن اطلاعات استفاده کرد .

به طور معمول گفته می شود قبل از مخفی کردن متن در steganography بهتر است آن به encrypt کنيد تا لااقل اگر متن شما از پيغام پوشاننده بازيابی شد قابل خواندن نباشد . هر چند می توان بدون رمزنگاری متن را در پيغام پوشاننده جايگزينی کرد .

  

  

  

  

  

مقدمه ای بر اصطلاحات :

  

  

در زمينه Steganography تعدادی اصطلاح توسعه يافتند .

نام های Cover يا پوشاننده ، Host يا ميزبان ، Embedded يا جاسازی شده و استگو در کارگاه مخفی کردن اطلاعات در کمبريج تعريف شده اند . اصطلاح cover يا پوشاننده به پيغامی که اطلاعات ديگر در آن جايگزای می شود می گويند ، مانند عکس ، صدا ، فيلم و متن و ... . وقتی در steganography از صدا استفاده کنيم به سيگنال هايی که اطلاعات در آنها ذخيره می شود ميزبان می گويند .

اطلاعاتی که در پوشاننده جاسازی می شوند embedded نام دارند . و استگو اطلاعاتی است که هم پوشاننده را در بر دارد و هم اطلاعات جاسازی شده را . به طور منطقی به پردازشی که منجر به جاسازی اطلاعات در اطلاعات پوشاننده می شود embedding می گويند .

به طور خاص ، در steganography در عکس ، به عکس ِ ميزبان container گفته می شود .

  

  

  

 تاريخچه :

  

  

اولين استفاده های steganography توسط Herodotus يک مورخ يونانی به ثبت رسيده و ماجرای آن به يونان باستان باز می گردد .وقتی حاکم يونان Histiaeus به دست داريوش در شوش در قرن پنجم پيش از ميلاد زندانی شده بود می بايست پيغامی مخفيانه به بردار خوانده اش در Miletus بفرستد . برای همين منظور موی سر غلامش را تراشيد و پيغامی را روی فرق سرش خال کوبی کرد . وقتی موهای غلام به اندازه کافی رشد کرد او را عازم مقصد کرد .

داستان ديگری که از يونان باستان به ما رسيده مربوط به همين پادشاه است ، وسيله نوشتن در آن زمان لوح هايی بوده که روی آن با موم پوشانيده شده بود . يکی از حکام برای اطلاع دادن به وی مبنی بر اينکه کشورش مورد تاخت و تاز قرار خواهد گرفت و برای اينکه اين پيغام پيدا نشود موم ِ روی لوح ها را پاک کرد و متنش را بر روی لوح ِ چوبی حک کرد سپس دوباره موم بر روی آن زد و لوح مانند لوح های استفاده نشد تبديل شد . سپس بدون اينکه در بازرسی ها برای متن و لوح مشکلی پيش آيد به مقصد رسيد .

جوهر های نامرئی يکی از عمومی ترين ابزارها برای steganography هستند . در روم باستان از جوهر هايی مانند آبليمو برای نوشتن بين خطوط استفاده می کردند . وقتی متن ها را حرارت می دادند متن آن تيره و نمايان می شد . جوهر های نامرئی در جنگ جهانی دوم نيز مورد استفاده قرار می گرفتند .

يکی از پيشگامان steganography و cryptography ، Johannes Trithemius  - 1462 تا 1526 ، يک روحانی آلمانی بود . اولين کار وی بر روی steganography ، Steganographia نام داشت که درباره سيستم های جادو و پيشگويی توضيحاتی داده بود ، همچنين در آن کتاب درباره سيستم های پيچيده Cryptography هم مطالبی يافت می شد . اين کتاب در زمان وی منتشر نشد ، زيرا او از فاش شدن اسرارش می ترسيد .

 

Johannes Trithemius و نمونه ای از کتاب هايش

   

اولين کتاب واقعی در اين زمينه را Gaspari Schotti در سال 1665 در 400 صفحه با نام Steganographica نوشت . اما اکثر ايده هايش مربوط به Trithemius بود ، او آغازگر اين راه بود .

  

Steganography در قرن های 15 و 16 توسعه يافت . بدليل اينکه اکثر نويسندگان اين کتاب ها از ايجاد تفرقه بين احزاب و فرقه ها می ترسيدند نام خود را مانند داستان ها در ميان کتاب مخفی می کردند . يکی از رساله هايی که در اين زمينه نوشته شده توسط Bishop John Wilkins که بعدا ً در Trinity College به استادی رسيد بوده است . او روشهايی را از کد کردن پيغام ها در موزيک تا جوهر های نامرئی پيشنهاد داد . همچنين او اولين طرح ها را در رمز گشايی با استفاده از تناوب کلمات ساخت .

  

يکی از مثال های آن به اوايل قرن در زمان جنگ Boer باز می گردد . Robert Baden-Powell برای ثبت مکان توپخانه دشمن به جای اينکه نقشه را به روش معمولی بکشد آن را به شکل يک پروانه می کشيد تا اگر دستگير شد کسی چيزی از آن نفهمد .

  

در جنگ جهانی دوم توجه زيادی به steganography شد و تجربيات زيادی در اين مورد کسب شد . در اوايل جنگ از جوهر های نامرئی استفاده می شد ولی بعدا ً از حروف و پيغام های معمولی برای مخفی کردن پيغام اصلی استفاده کردند . اين پيغام ها درباره اتفاقات بسيار ساده و پيش پا افتاده بودند که توجه هيچ کس را جلب نکند ، بنابراين بدون اينکه کسی مشکوک بشود آن متنها را انتقال می دادند . برای مثال اين متن توسط جاسوسان آلمانی در زمان جنگ جهانی دوم فرستاده شده :

  

Apparently neutral's protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by-products, ejecting suets and vegetable oils.

  

اما بعد از رمز گشايی اين متن بعد از رسيدن نامه دوم ، متن زير از کلمات آن استخراج شد:

  

Pershing sails from NY June 1.

  

از طرح بندی متنها نيز در مخفی کردن اطلاعات استفاده می شد . بوسيله تنظيم کردن مکان خط ها و کلمه ها متن را نشانه گذاری و قابل شناسايی می کردند . از وسايلی مانند سوزن نيز برای مشخص کردن لغات مورد نظر نيز استفاده می شد .

همان طور که به خاطر پيشرفت تکنولوژی مخفی کردن اطلاعات بدون نمايان شدن با حجم زيادی انجام می گرفت علم پيدا کردن متون مخفی نيز در حال پيشرفت بود .مسئول FBI نسبت به  اختراع Microdot بوسيله آلمانی ها چنين تعبيری داشت ، the enemy's masterpiece of espionage'' ، microdot عکس های بسيار کوچکی بودند که اطلاعات مختلفی مانند عکس و متن را در خود جای می دادند ، اين عکس ها در اندازه يک نقطه بودند بنابراين می توان با آنها يک متن ساده نوشت . مثلا ً يک در روی خطوط يک کلمه می توان اطلاعات زيادی قرارداد .

در حقيقت فضای فرستادن متن ها به اين روش ها آنچنان بود که محدوديت های زيادی برای ارسال متن و حتی عکس اعمال می شد ، محدوديت هايی که امروز بسيار بی معنی می باشند . در آمريکا پست شطرنج ، نقشه های بافندگی ، تکه های روزنامه و حتی نقاشی کودکان ممنوع بود . حتی فرستادن گل در انگلستان و آمريکا ممنوع شد .

اما در قرن بيستم بود که حقيقتا ً steganography شکوفا شد .

در زمان کامپيوتر ها steganography ترفی حيرت انگيزی داشت . روش های قديمی مخفی کردن در عکس با ورود کامپيوتر های پر قدرت نيرو گرفتند . در آينده شاهد آمدن روشهای ديگر steganography خواهيم بود .

  

  

  

تفاوت Steganography و Cryptography :

  

  

 امکان دارد steganography و cryptography با هم اشتباه گرفته شوند . در حقيقت فلسفه steganography اين است که پيغام را به شکلی مخفی کند که کسی متوجه حضور آن نشود در حالی که در cryptography هدف تغيير پيغام به شکلی است که برای شخص ديگری نا مفهوم باشد و اينکه کسی متوجه پيغام بشود يا نه اهميتی ندارد .

  

  

  

  

Steganography در رسانه های مختلف :

  

  

  

در سه بخش بعدی درباره اينکه چگونه از steganography در متن ، عکس و صدا ايجاد و استفاده می شود بحث می کنيم .

اغلب ، در حالی که احتياجی به آن نيست ، متنهايی که در مخفی می شوند را نيز encrypt می کنند . اين برای تبعيت از يکی از قوانين کرشهف در رمزنگاری است . طبق اين قانون بايد فرض شود دشمن از علم و تکنولوژی برخوردار است که می تواند تشخيص دهد شما از steganography استفاده کرده ايد . تنها قسمتی که دشمن از آن بی خبر است کلمه کوتاهی است که برای رمزگشايی مورد استفاده قرار می گيرد . سيستم بايد به شکلی باشد که دشمن بدون آن کلمه بختی برای يافتن متن شما نداشته باشد .

  

وقتی اطلاعات را جاسازی می کنيم بايد نکات زير را در نظر داشته باشيم :

  

·    اطلاعات پوشاننده بايد به شکلی باشد که وقتی اطلاعات مورد نظر را درون آن جاسازی می کنيم تغيير نکند ، اطلاعاتی که جاسازی می شود نيز بايد به شکلی باشد که ديده نشود ، البته منظور هميشه مخفی بودن نيست ، اطلاعات می تواند ديده بشود ولی نظر کسی را جلب نکند .

·    اطلاعات جاسازی شده بايد مستقيما ً در خود اطلاعات پوشاننده جاسازی شود و در header آن يا بالای آن قرار نگيرد .

·    اطلاعات جاسازی شده بايد مقاومت کافی در برابر حمله ها و روش های مقابله با آن را داشته باشد .

·    ممکن است وقتی اطلاعات پوشاننده تغيير می کنند اطلاعات جاسازی شده کمی تغيير بکند ، بدين منظور بايد قابليت استفاده از کد های خطاياب را داشته باشد .

·    اطلاعات جاسازی شده بايد قابليت آن را داشته باشد تا اگر قسمتی از اطلاعات پوشاننده از دست رفت دوباره بازيابی شود . مثلا ً اگر فقط قسمتی از عکس در دست بود بتوان همان قسمت از پيغام اصلی را استخراج کرد .

  

  

  

  

  

  

Steganography در متن :

  

  

يکی از مشکلاتی که برای نويسندگان وجود دارد توزيع غير قانونی نوشته ها بوسيله ابزار های پيشرفته مانند پست الکترونيکی است . بدين معنی که بدون پرداخت هزينه به نويسنده ، نوشته وی را به ديگران می دهند . برای جلوگيری از اين کار روش هايی ابداع شد ، مانند ساختن کلمه ای که از نظر خواننده ديده نمی شود ولی مشخصه آن متن است ، يا کد کردن متن يا تغيير آن به روشی که قابل کپی برداری با دستگاه های photocopy نباشد ، روش ديگر استفاده از کلمات حاشيه ای است که مخفی می باشد ولی mail server ها را می توان نسبت به آن حساس کرد تا از پخش آن جلوگيری کنند . روشهايی که در بعضی متون مورد استفاده قرار می گرفت در زير آمده است .

  

Line-Shift Coding :

  

در اين روش خطوط متن در راستای عمودی کمی تغيير مکان می دهند تا يک شکل منحصر به فردی را بسازند . رمز کردن و رمز گشايی کردن آن معمولا ً توسط بررسی عکس ِ متن انجام می شود .

  

بوسيله تغيير مکان دومين خط هر صفحه به ميزان يک سی صدم اينچ به بالا يا پايين ترکيب خوبی ايجاد شد که بعد از 20 بار کپی گرفتن از متن همچنان خواص خود را حفظ می کرد .

اما اين روش خواننده می تواند با استفاده از ابزار های تشخيص فاصله ببيند ، يا اگر قسمتی از متن را کپی کند اطلاعات از دست می رود .

به هر حال اين روش برای متن هايی چاپی خوب است زيرا برای تغيير آن متن بايد scan بشود ، دوباره خطوطش به جای ديگر انتقال يابد و دوباره چاپ شود  .

  

Word-Shift Coding :

  

در اين روش رمز بوسيله جابجايی افقی در بعضی کلمات به نحوی که از حالت طبيعی خارج نشود ذخيره می شود . اين روش را هم می توان در فايل ِ حاوی متن اعمال کرد و هم در تصوير آن . برای اعمال اين روش تنها متنی قابل قبول است که کلمات آن منظم باشد ، يعنی يا به سمت چپ ، راست يا وسط متمايل باشد .

برای مثال می توان بيشتر و کمترين فاصله بين کلمات را در يک خط پيدا کرد و فاصله بيشتر را مقدار معينی کم کرد و فاصله کمتر را با همان مقدار معين زياد کرد . با اين روش طول خط حفظ می شود .

اين روش توسط خواننده کمتر ديده می شود زيرا تغيير فاصله بين کلمات برای پر کردن يک خط بسيار متداول است .

اما word-shift coding با دو روش قابل ديدن و شناسايی است .

اگر شخصی از الگوريتم فاصله ها اطلاع داشته باشد می تواند متن فعلی را با الگوريتم مقايسه کند و با استفاده از اختلاف ها اطلاعات مخفی شده را پيدا کند .

روش دوم بررسی نقطه به نقطه عکس ِ متن است تا فاصله های تغيير يافته مشخص شود .

  

اين روش بسيار وقت گير است و امکان پيدا شدن اطلاع مخفی شده در آن بسيار زياد است .

  

  

Feature Coding :

  

روش سومی که برای اين کار پيشنهاد شده است Feature Coding است که در عکس متن يا فايل ِ فرمت دار ِ آن اعمال می شود . در اين روش بعضی از خواص متن با توجه به کلمه کد تغيير می کند . برای مثال ممکن است با توجه به کلمه کد و بيت هايی که می خواهند در متن جاسازی شوند حروف آخر بعضی از خط ها که b , h يا ... هستند کمی بالا يا پايين می رود يا طول آن را زياد يا کم می کنند . با اين روش متن اصلی را می توان با استفاده از عکس ِ متن پوشاننده بدون متن جاسازی شده يا با دانستن الگوريتم جاسازی پيدا کرد .

در اين روش به خاطر وجود مکان های زياد در متن برای تغيير يافتن می توان اطلاعات زيادی را جاسازی کرد در حالی که اصلا ً از نظر خواننده به آنها توجه نمی شود . برای خنثی کردن اين روش به راحتی می توان تمامی حروف را در يک فاصله ثابت با بقيه قرار داد . گاهی اوقات اين روش با Word-Shifting ترکيب می شود تا الگوريتم های پيچيده تری را بسازد .

  

  

روش های ديگر :

  

چند راه جذاب ديگر برای کد کردن متن ها وجود دارد :

  

·        روش Open Space ، مانند روش های بالا عمل می کند .

·        روش Syntactic که با نقطه و ديگر علائم اعمال می شود .

·        روش Semantic که کلمه ها را تغيير می دهد .

  

در روش syntactic که روش بسيار جذابی است از قرار دادن تعدادی نقطه يا علائم متنی اضافه استفاده می شود . برای مثال هر دو متن زير از نظر معنی درست هستند اما اولی يک کاما اضافه دارد . bread, butter, and milk و bread, butter and milk . با استفاده از اين تغيير ساده می توان بيت هايی را در متن ذخيره کرد . همچنين روش ديگر استفاده از مخفف هاست . روش Syntactic تقريبا ً در زبان انگليسی انجام پذير است ، اين روش بازدهی کمی دارد به اين معنی که برای مخفی کردن تنها چند بيت احتياج به متن اصلی معادل چندين کيلوبايت است .

  

روش ديگر ، Semantic است . با استفاده از کلمه های هم معنی می توان متنی را در متن ديگر جای داد ، برای مثال کلمه big می تواند دارای مقدار 1 و کلمه large معادل 0 باشد . اين روش گاهی اوقات متن را بی معنی می کند .

  

  

  

  

  

  

Steganography در عکس ها :

  

  

در اين بخش درباره steganography در عکس های ديجيتالی بحث می کنيم . در حقيقت steganography در عکس درباره استفاده از محدوديت بينايی چشم است . به همين دليل متن ، متن کد شده يک عکس و کلا ً هر چيزی که بتوان آن را به بيت تقسيم بندی کرد را می توان در يک عکس جاسازی کرد . steganography در عکس در سال های اخير به دليل بوجود آمدن کامپيوتر های قدرتمند که عکس ها را با سرعت زياد بررسی می کنند پيشرفت زيادی کرد ، همچنين نرم افزارهايی که اين کار را انجام می دهند نيز از اينترنت قابل دريافت هستند .

  

کمی راهنمايی درباره Steganography در عکس :

  

قبل از اينکه جلوتر برويم کمی بايد درباره فايلهای عکس در کامپيوتر توضيح داده شود . برای کامپيوتر عکس چيزی نيست جز يک آرايه از تصاوير که حاوی اطلاعات رنگی ِ هر نقطه يا pixel می باشد . pixel ها اطلاعات تصويری عکس را می سازند . عکس هايی با اندازه 640 در 480 پيکسل با تعداد رنگ ِ 256 ( 8 بيت در هر پيکسل ) بسيار معمول هستند ، اين چنين عکسی حدود 300 کيلوبايت اطلاعات دارد .

  

عکس های ديجيتالی در مد های 24 بيت در پيکسل يا 8 بيت در هر پيکسل ذخيره می شوند . به عکس هايی که از 24 بيت استفاده می کنند True Color نيز گفته می شود . عکسی که از 24 بيت استفاده می کند فضای بيشتری برای جاسازی اطلاعات در اختيار می گذارد . البته اين عکس ها حجم بيشتری دارند ، برای مثال ، يک عکس 24 بيتی با اندازه 1024 در 768 پيکسل حجمی حدود 2 مگابايت خواهد داشت . انتقال يک عکس با چنين حجمی بر روی شبکه هايی با سرعت پايين بسيار وقت گير خواهد بود ، در اينجا فشرده سازی مطرح می ش