avtkurd
28th October 2010, 02:16 PM
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 مگابايت خواهد داشت . انتقال يک عکس با چنين حجمی بر روی شبکه هايی با سرعت پايين بسيار وقت گير خواهد بود ، در اينجا فشرده سازی مطرح می شود .
از عکس های 8 بيتی نيز می توان برای مخفی کردن اطلاعات استفاده کرد . در عکس هايی که از 8 بيت برای رنگ استفاده می کنند ، مانند GIF ، هر پيکسل معرفی کننده يک بايت است . هر پيکسل به ايندکس جدولی به نام palette که می تواند 256 را مشخص کند اشاره می کند . مقادير پيکسل ها نيز بين 0 تا 255 است . نرم افزاری که عکس را می خواهد نمايش دهد بايد با توجه به جدول رنگ ها و عددی که در هر پيکسل مشخص شده است تصوير را نمايش دهد .
اگر از عکس های 8 بيتی به عنوان پوشاننده استفاده می کنيد ، خيلی از متخصصين steganography توصيه کرده اند که از رنگ خاکستری و مشتقاتش در palette استفاده کنيد ، به خاطر اينکه تغيير رنگ در مشتقات خاکستری آنچنان محسوس نيست بنابراين می توان اطلاعات را درونش مخفی کرد بدون اينکه مشخص شود .
وقتی به عکس های 8 بيتی کار می کنيد بايد به غير از palette به خود عکس نيز توجه کنيد . به طور مشهود ، اگر عکس انتخابی دارای فضاهای زيادی باشد که رنگ آن ثابت است آن عکس برای steganography مناسب نيست زيرا تغييراتی که به خاطر مخفی کردن اطلاعات در آن اعمال می شود در مکان هايی که رنگش ثابت است ديده خواهد شد . بعد از اينکه عکس مناسب انتخاب شد ، نکته بعدی انتخاب تکنيکی است که برای مخفی کردن به کار می بريد .
فشرده سازی عکس ها :
فشرده سازی عکس ها يک راه برای مشکل فايل های حجيم است . دو روش فشرده سازی عکس ها عبارتند از Lossless و lossy . هر دوی اين روش ها عکس را از نظر حجم فشرده تر می کنند ولی آثار متفاوتی بر روی اطلاعات مخفی شده در عکس دارند .
فشرده سازی Lossy ، که بوسيله فايلهای JPEG يا Joint Photographic Experts Group مورد استفاده قرار می گيرد ، فشرده سازی بسيار بالايی دارد ، اما تماميت و خواص عکس اصلی را کاملا ً حفظ نمی کند و اين می تواند اثر منفی بر روی اطلاعات جاسازی شده در عکس داشته باشد . اين به خاطر الگوريتم Lossy است ، که می تواند اطلاعاتی که در عکس مفيد نيست را حذف کند به شرطی که حداکثر کيفيت و تشابه را به عکس اصلی حفظ کند ، از اين رو به آن روش lossy می گويند . از lossy در عکس های true color معمولا ً استفاده می شود و کيفيت و قدرت فشرده سازی بالايی دارد .
روش فشرده سازی Lossless تمامی اطلاعات عکس اصلی را نگهداری می کند . وقتی از اين روش استفاده می شود که اطلاعات اصلی بايد دست نخورده باقی بماند ، و اين دليل آن است که در steganography بيشتر مورد توجه قرار می گيرد . متاسفانه روش فشرده سازی lossless نمی تواند به اندازه روش lossy اطلاعات را فشرده کند . مهمترين مثال های اين گروه فرمت های Compuserve's Gif يا Graphics Interchange Format و Microsoft's BMP يا Bitmap است .
روش های رمز کردن عکس :
اطلاعات به روش های خيلی متفاوتی می توانند در عکس مخفی شوند . بوسيله رمز کردن هر بيت از اطلاعات می توان آن را مستقيما ً در عکس قرار داد . در روش های پيچيده تر می توان اطلاعات را فقط در قسمت هايی از عکس که پيچيدگی بيشتری دارد قرار داد تا توجه کمتری جلب کند . همچنين پيغام می تواند به شکل تصادفی در عکس ِ پوشاننده پراکنده شود .
معمول ترين روش های مخفی کردن اطلاعات در عکس عبارتند از :
· Least Significant Bit insertion يا LSB
· Masking and Filtering
· الگوريتم ها و transformation ها
هر يک از اينها می تواند بر خيلی از عکس ها به صورت موفقيت آميزی اعمال شود . هر يک از آنها از نظر اهميت دارای رتبه بندی متفاوتی در زمانی است که روی عکس تغييراتی مانند برش ، اندازه و رنگ داده شود .
Least Significant Bit insertion
روش LSB يکی مهمترين و متداول ترين روش ها در steganography در عکس ها می باشد . ولی بسيار آسيب پذير دربرابر حملاتی مانند دستکاری در عکس است .يک تغيير فرمت از Gif يا BMP به يک روش فشرده سازی ديگر مانندlossy که در Jpeg فايلها استفاده می شود می تواند باعث از دست رفتن اطلاعات مخفی شده بشود .
وقتی از LSB در عکس های 24 بيتی استفاده می شود می توان از 3 بايت که هر پيکسل را تشکيل می دهد استفاده کرد . هر تغييری در اين بايت ها هيچ گونه نشانه ای برای چشمان انسان ايجاد نمی کند . برای مثال حرف A می تواند در 3 پيکسل ذخيره شود . فرض کنيد سه پيکسل در عکس 24 بيتی مشخصاتی مانند زير داشته باشند .
(00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001)
عدد دو دويی برای حرف A معادل 10000011 است . عدد دودويی A را در پيکسل ها از بالا سمت چپ اضافه می کنيم .
(00100111 11101000 11001000) (00100110 11001000 11101000)(11001000 00100111 11101001)
بيت های با اهميت تنها آنهايی هستند که تغيير کرده اند . مهمترين برتری LSB اين است که با تغيير در بيت ها چشم انسان نمی تواند آن تغيير را مشاهده کند .
روش ديگر تغيير کل يکی از اجزای رنگی هر پيکسل است ، يعنی بعد از انتخاب پيکسل مقدار قرمز آن را با مقدار کد اسکی حرف مورد نظر تغيير دهيم ، سپس پيکسل ديگری را انتخاب کنيم و مقدار سبز آن را کد اسکی حرف بعدی جابجا کنيم و در آخر پيکسل ديگری را انتخاب و کد آبی آن را با مقدار اسکی حرف بعدی تغيير می دهيم ، با اين روش هر سه حرف ِ متوالی در 3 پيکسل جاسازی می شود ، هر چند اين روش تغيير قابل محسوس تری نسبت به روش LSB می دهد ولی نتيجه قابل قبولی دارد .
برای انتخاب پيکسل ها نيز می توان از روش های مختلف استفاده کرد ، در يک روش می توان با استفاده از الگوريتم های random ساز و استفاده از seed ی که به عنوان يکی از رمز ها می تواند باشد يک سری پيکسل های ثابتی را استخراج کرد . در اين روش ممکن است تصادفا ً پيکسل انتخابی در جايی باشد که رنگ های اطراف آن ثابت است و در آنجا عکس پيچيدگی ندارد . در چنين وضعيتی هر گونه تغيير در رنگ پيکسل می تواند مشاهده شود ، هر چند در LSB تقريبا ً ديدن تغييرات با چشم انسان غير ممکن است .
روش ديگری که می تواند مورد استفاده قرار گيرد استفاده از الگوريتم هايی است که مکان هايی از عکس که دارای پيچيدگی خاصی است را پيدا کند . برای اين کار می توان بلاک هايی مثلا ً با ابعاد 8 پيکسل در 8 پيکسل را انتخاب کرد و ميانگين رنگ های آن را بدست آورد ، سپس اگر تعداد پيکسل هايی که در آن بلاک رنگش خيلی بيشتر يا کمتر از ميانگين بود زياد شد آن بلاک را به عنوان بلاک پيچيده در نظر می گيرد . سپس در خود اين بلاک ها با استفاده از LSB و همچنين الگوريتم های random ساز رنگ پيکسلی را تغيير داد . با استفاده از اين تکنيک کمتر امکان ديده شدن تغييرات وجود دارد .
نمونه بلاک های پيچيده
وقتی از LSB برای عکس های 8 بيتی استفاده می کنيد بايد دقت بيشتری داشته باشيد زيرا عکس های 8 بيتی قابليت های عکس های 24 بيتی را ندارد . برای انتخاب عکس پوشاننده بايد دقت زيادی داشت تا وقتی پيغام دوم در آن جاسازی شد تغييرات بوجود آمده محسوس نباشد . از استفاده از عکس های معروف ( مانند موناليزا ) بايد پرهيز کرد ، در حقيقت يک عکس از سگ شما می تواند برای اين کار کافی باشد .
وقتی بيتهای LSB را در عکس های 8 بيتی تغيير می دهيد ، نشانه گر که palette اشاره می کند تغيير می يابد . اين مهم است که به ياد داشته باشيد تغيير يک بيت ممکن است رنگ يک پيکسل را از قرمز به آبی در palette تغيير دهد . اين چنين تغييری در عکس کاملا ً مشخص است و روشی که چنين تغييری بدهد اصلا ً قابل قبول نيست . برای همين علت متخصصان مخفی کردن اطلاعات می گويند که در عکس های 8 بيتی از palette خاکستری استفاده کنيد زيرا تغيير رنگ بين طيف خاکستری محسوس نمی باشد و در صورت تغيير انديس هر پيکسل در palette رنگ هايی که جلب نظر بکند ديده نخواهد شد .
Masking and Filtering :
تکنيک های Masking و Filtering اطلاعات را مشابه تکنيک های watermarking در عکس مخفی می کند . بدليل اينکه تکنيک های watermarking بيشتر در عکس ادغام می شود از آنها بدون ترس از دست رفتن بر اثر تغيير يا فشرده سازی عکس می توان استفاده کرد . بوسيله پوشانيدن يا masking يک نور ضعيف که قابل درک است بوسيله يک سيگنال ديگر سعی می کنيم اولی را غير قابل درک کنيم ، در حقيقت ما از ضعف سيستم بينايی انسان در تغييرات بسيار کم در يک محيط محدود و مشخص استفاده می کنيم .
از نظر تکنيکی ، watermarking يک نوع از steganography نيست . steganography اطلاعات را در عکس مخفی می کند ؛ watermarking اطلاعات را توسعه می دهد و آن را به عنوان يکی از خواص عکس پوشاننده تبديل می کند ، اطلاعاتی مانند مالکيت ، اجازه و copyright .
استفاده از تکنيک های Masking در عکسهای jpeg که از lossy استفاده می کنند بسيار مناسب تر از LSB است ، زيرا سازگاری ِ خاصی با فشرده سازی و برش عکس دارد .
Algorithms and Transformation :
بدليل اينکه عکس های JPEG دارای کيفيت بالا و فشرده سازی خوب هستند بسيار مناسب است که از آنها برای استفاده در شبکه ها و اينترنت استفاده کنيم . در حقيقت JPEG متداول ترين فرمت بر روی اينترنت است .
عکس JPEG از Discrete Cosine Transform يا DCT برای فشرده سازی استفاده می کنند . DCT يک تبديل lossy برای فشرده سازی است . بدليل اينکه مقدار کسينوس به دقت ِ کامل محاسبه نمی شود هميشه احتمال خطا وجود دارد و اطلاعاتی که بازيابی می شود با توجه به مقاديری که DCT محاسبه کرده ممکن است با مقدار اوليله تفاوت داشته باشد .
همچنين عکس را می توان توسط تبديل فوريه يا تبديل wavelet پردازش کرد . از روشنايی ِ عکس ها هم می توان استفاده کرد ، سيستم بينايی انسان حساسيت کمی نسبت به تغييرات کم در روشنايی دارد .
بقيه تکنيک ها اطلاعات مخفی شده را کد گزاری می کند . آنها فرض می کنند که اگر بيت های پيغام کشف شد اگر الگوريتم و کلمه رمز وجود نداشته باشد پيغام را نتوان رمزگشايی کرد . با اينکه اين تکنيک ها در محافظت از پيغام در برابر کشف شدن کمک می کند ولی در مقابل دستکاری ِ عکس مصونيت ندارند .
Steganography در صدا
بدليل محدوده سيستم شنوايی انسان مخفی کردن اطلاعات در صدا نيز می تواند مورد استفاده قرار گيرد . سيستم شنوايی انسان می تواند قدرتی بين يک تا يک ميليون و فرکانسی بيشتر يک هزار تا يک را درک کند . همچنين نسبت به پارازيت هايی که اضافه می شود بسيار حساس است . هر گونه مزاحمتی در يک فايل ِ صوتی قابل درک است حتی اگر به کمی 1 قسمت از ده ميليون باشد . به هر حال با اينکه سيستم شنوايی انسان حساسيت زيادی دارد ولی دربرابر بعضی تغييرات حساسيت خود را از دست می دهد مثلا ً صداهای بلند صداهای آرام را در خود جای می دهند .
برای استفاده از صدا برای مخفی کردن اطلاعات دو نکته را بايد در نظر داشت ، اول ، بايد از ضعف سيستم شنوايی انسان سو استفاده کرد و دوم توجه خاصی به حساسيت فوق العاده آن داشت .
محيط های صدا
وقتی سيگنال های صدا فرستاده می شود دو نکته مد نظر است ، يکی وسيله ذخيره صدا و ديگری وسيله پخش آن .
ذخيره صدا
فايلهای صدای ديجيتالی دارای دو خصوصيت هستند :
· الگوی ِ quantisation : معمول ترين فرمت های ذخيره صدا با کيفيت بالا استفاده از فرمت های 16 بيتی ِ خطی ِ quantization است ، مانند آن چيزی که در WAV يا Windows Audio Visual يا AIFF يا Audio Interchange File Format استفاده می شود . مقداری از سيگنال های بوسيله اين فرمت دچار اعوجاج می شود .
· Temporal نرخ نمونه گيری : پر استفاده ترين temporal نرخ نمونه گيری ها برای صدا عبارتند از 8KHz , 9.6KHz , 10KHz , 12KHz , 16KHz , 22.05KHz و 44.1KHz که KHz همان Kilohertz است .نرخ نمونه گيری يک حد بالا برای استفاده از فرکانس های مختلف در صدا ايجاد می کند . به طور کلی فضای قابل استفاده نسبت خطی با نرخ نمونه گيری دارد .
يکی ديگر از روش های ذخيره که بايد به آن توجه کرد ISO MPEG است . در اين فرمت خصوصيات سيگنال ها بوسيله کد کردن بخش قابل شنيدن آن تغيير می يابد ، اينگونه که صدا را حفظ می کند ولی سيگنال را تغيير می دهد .
وسايل پخش
وسيله پخش يا محيط پخش در يک سيگنال صدا به محيطی گفته می شود که سيگنال در آن از encoder به decoder می رود .
چهار محيط پخش عبارتند از :
· محيط Digital End-to-End : وقتی يک فايل صوتی مستقيما ً از يک ماشين به ماشين ديگر کپی شود اما تغييری در آن اعمال نشود آنگاه آن فايل از طريق Digital end to end منتقل شده است . در نتيجه sampling بين encoder و decoder تغيير نخواهد کرد . در اين محيط اطلاعات خيلی کمی می توان مخفی کرد .
· محيطی با استفاده از کم يا زياد کردن و نمونه گيری مجدد : در اين محيط يک سيگنال دوباره نمونه گيری می شود تا به يک سطح بالاتر يا پايين تری از نرخ نمونه گيری برسد اما همچنان دارای خروجی يکسان باشد . اما همچنان بزرگی و فاز سينگال ها حفظ می شود و فقط خاصيت های temporal ِ سيگنال تغيير می کند .
· پخش آنالوگ و نمونه گيری مجدد : اين وقتی اتفاق می افتد که سيگنال به آنالوگ تغيير می کند و آن بر روی يک خط آنالوگ پخش می شود . بزرگی سيگنال ، نمونه quantization و نرخ نمونه گيری temporal حفظ نمی شود . به طور کلی فقط فاز ِ سيگنال حفظ می شود .
· محيط هوا : اين وقتی اتفاق می افتد که سيگنال در هوا پخش شود و دوباره بوسيله ميکروفن از آن نمونه برداری کنند . در اين حالت سيگنال تغييرات غير خطی زيادی می کند مانند تغيير در فاز ، دامنه ، فرکانس و غيره .
هر دوی محيط پخش و وسيله ذخيره سينگال در نوع الگوريتم هايی که برای مخفی کردن اطلاعات به کار می رود اهميت دارند .
روش های مخفی کردن اطلاعات در صدا
حالا بعضی از روش های مخفی کردن اطلاعات در صدا را بررسی می کنيم .
Low-Bit encoding :
مشابه روش LSB يا Least Significant Bit در عکس ها ، اطلاعات دودويی نيز می توانند با روش least significant bit در فايلهای صوتی ذخيره شوند . در بهترين حالت حجم کانال يک کيلوبيت بر ثانيه برای هر کيلوهرتز است بنابراين ظرفيت کانال برای 44KHz معادل 44Kbps است . متاسفانه اين يک پارازيت قابل شنيدن ايجاد می کند . البته مهمترين ضعف اين سيستم مقاومت نکردن در برابر تغييرات است ، هر گونه تغييری می تواند منجر به از دست رفتن اطلاعات مخفی شده باشد .
روش ديگر تغيير کمی در دامنه سيگنالهای نمونه است به قسمی که تغييرات آنها قابل ملاحظه نباشد . از اين روش در فرمت های MPEG می توان استفاده کرد .
Phase Coding :
در phase coding فاز بخشی از سيگنال را با اطلاعات مورد نظر تعويض می کنند . روش اينکار بدين شرح است :
دنباله صدای اصلی به N قسمت کوچک تقسيم می شود .
از تبديل گسسته فوريه برای پيدا کردن ماتريس فاز و اندازه هر قسمت استفاده می شود .
تفاوت فاز بين هر دو قسمت مجاور محاسبه می شود .
برای بخش آغازين ، S0 يک فاز مطلق برابر P0 در نظر گرفته می شود .
برای هر بخش ديگر قاب فازهايشان ساخته می شود.
فاز ِ جديد و بزرگی اصلی هر کدام با هم ترکيب می شوند و بخش جديد Sn را می سازند .
در آخر ، بخش های جديد به هم متصل می شوند تا خروجی کد شده را بسازند .
برای پردازش رمز گشايی ، ابتدا دنباله همزمان می شود . طول هر بخش ، نقاط DFT و وقفه ها بايد به decoder داده شود . محتوای فاز بخش اول يک يا صفر در نظر می گيرد که نشان دهنده متن کد شده دودويی است .
مخفی کردن اطلاعات در Echo :
در روش مخفی کردن اطلاعات با اکو ، اطلاعات بوسيله يک اکوی صدا در سيگنال ِ ميزبان جاسازی می شود . اطلاعات بوسيله تغيير در اين سه مشخصه مخفی می شود ، دامنه آغازين ، پايين آوردن سرعت و تاخير . وقتی فاصله بين سيگنال اصلی و اکو کم شود هر دو سيگنال با هم مخلوط می شود . در يک نقطه مشخص ، گوش انسان نمی تواند تفاوتی بين اين دو سيگنال قائل شود ، در اين حالت اکو به عنوان يک تشديد در سيگنال اصلی شنيده می شود . اين نکته به عواملی مانند کيفيت ضبط صدای اصلی و کيفيت گوش دهنده بستگی دارد .
بوسيله استفاده از دو متغيير برای تاخير زمامی که هر دو کمتر از قدرت تشخيص گوش انسان باشد می توان اطلاعات دودويی ِ صفر و يک را encode کرد . پايين آوردن نرخ سرعت و دامنه می تواند در حد پايين تر از آستانه شنوايی انسان باشد تا اينکه مطمئن باشيم صدا قابل تشخيص نيست . برای اينکه بيشتر از يک بيت را encode کنيم سيگنال اصلی را به قسمت های کوچکتری تقسيم می کنيم . هر کدام از آنها را می توان با اکو encode کرد ، در نهايت سيگنال خروجی از به هم پيوستن همه اين تکه ها خواهد بود .در اين روش از تاخيری به مدت y برای عدد يک و تاخير ديگری به مدت x برای صفر استفاده می کنند .
Steganalysis :
در حالی که هدف steganography مخفی کردن اطلاعات و جلوگيری از پيدا شدن و جلب توجه آنهاست ، steganalysis علمی است که برای پيدا کردن چنين مطالب مخفی شده ای به کار می رود .
دو عملی در اين علم مورد بررسی قرار می گيرد يک ، پيدا کردن و دوم نابودی پيغام های جاسازی شده است . پيدا کردن پيغام ها که بسيار مفيد تر از نابودی آن است می تواند به دو دسته کلی تقسيم شود ، عکس ها و متن ها . البته دسته های ديگری مانند بررسی های real time بر روی ISDN و TCP/IP می تواند باشد که برای آنها به علت حجم بسيار بالای اطلاعات منتقل شده بايد از الگوريتم های پيچيده استفاده کرد . همچنين در مورد پيدا کردن پيغام در متن ، يک text بايد از جنبه هايی مثل : گرامر ، تعداد لغات تکرار شده ، تعداد حرف های تکرار شده ، محتوای متن و معنای آن . با وجود روش های بسيار زياد انتقال متن مانند فکس ، پست الکترونيکی ، چاپ های با کيفيت بالا حتی با چاپگر های خانگی ، تلگراف ، پيدا کردن يک پيغام مخفی شده در حجم عظيمی از متنها که جابجا می شوند کار بسيار دشوار و تقريبا ً غير ممکن است .
نتيجه گيری :
همان طور که مشاهده کرديد برای انتقال اطلاعات به روش هايی که کسی متوجه آن نشود راه های زياد و موثری وجود دارد . 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 مگابايت خواهد داشت . انتقال يک عکس با چنين حجمی بر روی شبکه هايی با سرعت پايين بسيار وقت گير خواهد بود ، در اينجا فشرده سازی مطرح می شود .
از عکس های 8 بيتی نيز می توان برای مخفی کردن اطلاعات استفاده کرد . در عکس هايی که از 8 بيت برای رنگ استفاده می کنند ، مانند GIF ، هر پيکسل معرفی کننده يک بايت است . هر پيکسل به ايندکس جدولی به نام palette که می تواند 256 را مشخص کند اشاره می کند . مقادير پيکسل ها نيز بين 0 تا 255 است . نرم افزاری که عکس را می خواهد نمايش دهد بايد با توجه به جدول رنگ ها و عددی که در هر پيکسل مشخص شده است تصوير را نمايش دهد .
اگر از عکس های 8 بيتی به عنوان پوشاننده استفاده می کنيد ، خيلی از متخصصين steganography توصيه کرده اند که از رنگ خاکستری و مشتقاتش در palette استفاده کنيد ، به خاطر اينکه تغيير رنگ در مشتقات خاکستری آنچنان محسوس نيست بنابراين می توان اطلاعات را درونش مخفی کرد بدون اينکه مشخص شود .
وقتی به عکس های 8 بيتی کار می کنيد بايد به غير از palette به خود عکس نيز توجه کنيد . به طور مشهود ، اگر عکس انتخابی دارای فضاهای زيادی باشد که رنگ آن ثابت است آن عکس برای steganography مناسب نيست زيرا تغييراتی که به خاطر مخفی کردن اطلاعات در آن اعمال می شود در مکان هايی که رنگش ثابت است ديده خواهد شد . بعد از اينکه عکس مناسب انتخاب شد ، نکته بعدی انتخاب تکنيکی است که برای مخفی کردن به کار می بريد .
فشرده سازی عکس ها :
فشرده سازی عکس ها يک راه برای مشکل فايل های حجيم است . دو روش فشرده سازی عکس ها عبارتند از Lossless و lossy . هر دوی اين روش ها عکس را از نظر حجم فشرده تر می کنند ولی آثار متفاوتی بر روی اطلاعات مخفی شده در عکس دارند .
فشرده سازی Lossy ، که بوسيله فايلهای JPEG يا Joint Photographic Experts Group مورد استفاده قرار می گيرد ، فشرده سازی بسيار بالايی دارد ، اما تماميت و خواص عکس اصلی را کاملا ً حفظ نمی کند و اين می تواند اثر منفی بر روی اطلاعات جاسازی شده در عکس داشته باشد . اين به خاطر الگوريتم Lossy است ، که می تواند اطلاعاتی که در عکس مفيد نيست را حذف کند به شرطی که حداکثر کيفيت و تشابه را به عکس اصلی حفظ کند ، از اين رو به آن روش lossy می گويند . از lossy در عکس های true color معمولا ً استفاده می شود و کيفيت و قدرت فشرده سازی بالايی دارد .
روش فشرده سازی Lossless تمامی اطلاعات عکس اصلی را نگهداری می کند . وقتی از اين روش استفاده می شود که اطلاعات اصلی بايد دست نخورده باقی بماند ، و اين دليل آن است که در steganography بيشتر مورد توجه قرار می گيرد . متاسفانه روش فشرده سازی lossless نمی تواند به اندازه روش lossy اطلاعات را فشرده کند . مهمترين مثال های اين گروه فرمت های Compuserve's Gif يا Graphics Interchange Format و Microsoft's BMP يا Bitmap است .
روش های رمز کردن عکس :
اطلاعات به روش های خيلی متفاوتی می توانند در عکس مخفی شوند . بوسيله رمز کردن هر بيت از اطلاعات می توان آن را مستقيما ً در عکس قرار داد . در روش های پيچيده تر می توان اطلاعات را فقط در قسمت هايی از عکس که پيچيدگی بيشتری دارد قرار داد تا توجه کمتری جلب کند . همچنين پيغام می تواند به شکل تصادفی در عکس ِ پوشاننده پراکنده شود .
معمول ترين روش های مخفی کردن اطلاعات در عکس عبارتند از :
· Least Significant Bit insertion يا LSB
· Masking and Filtering
· الگوريتم ها و transformation ها
هر يک از اينها می تواند بر خيلی از عکس ها به صورت موفقيت آميزی اعمال شود . هر يک از آنها از نظر اهميت دارای رتبه بندی متفاوتی در زمانی است که روی عکس تغييراتی مانند برش ، اندازه و رنگ داده شود .
Least Significant Bit insertion
روش LSB يکی مهمترين و متداول ترين روش ها در steganography در عکس ها می باشد . ولی بسيار آسيب پذير دربرابر حملاتی مانند دستکاری در عکس است .يک تغيير فرمت از Gif يا BMP به يک روش فشرده سازی ديگر مانندlossy که در Jpeg فايلها استفاده می شود می تواند باعث از دست رفتن اطلاعات مخفی شده بشود .
وقتی از LSB در عکس های 24 بيتی استفاده می شود می توان از 3 بايت که هر پيکسل را تشکيل می دهد استفاده کرد . هر تغييری در اين بايت ها هيچ گونه نشانه ای برای چشمان انسان ايجاد نمی کند . برای مثال حرف A می تواند در 3 پيکسل ذخيره شود . فرض کنيد سه پيکسل در عکس 24 بيتی مشخصاتی مانند زير داشته باشند .
(00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001)
عدد دو دويی برای حرف A معادل 10000011 است . عدد دودويی A را در پيکسل ها از بالا سمت چپ اضافه می کنيم .
(00100111 11101000 11001000) (00100110 11001000 11101000)(11001000 00100111 11101001)
بيت های با اهميت تنها آنهايی هستند که تغيير کرده اند . مهمترين برتری LSB اين است که با تغيير در بيت ها چشم انسان نمی تواند آن تغيير را مشاهده کند .
روش ديگر تغيير کل يکی از اجزای رنگی هر پيکسل است ، يعنی بعد از انتخاب پيکسل مقدار قرمز آن را با مقدار کد اسکی حرف مورد نظر تغيير دهيم ، سپس پيکسل ديگری را انتخاب کنيم و مقدار سبز آن را کد اسکی حرف بعدی جابجا کنيم و در آخر پيکسل ديگری را انتخاب و کد آبی آن را با مقدار اسکی حرف بعدی تغيير می دهيم ، با اين روش هر سه حرف ِ متوالی در 3 پيکسل جاسازی می شود ، هر چند اين روش تغيير قابل محسوس تری نسبت به روش LSB می دهد ولی نتيجه قابل قبولی دارد .
برای انتخاب پيکسل ها نيز می توان از روش های مختلف استفاده کرد ، در يک روش می توان با استفاده از الگوريتم های random ساز و استفاده از seed ی که به عنوان يکی از رمز ها می تواند باشد يک سری پيکسل های ثابتی را استخراج کرد . در اين روش ممکن است تصادفا ً پيکسل انتخابی در جايی باشد که رنگ های اطراف آن ثابت است و در آنجا عکس پيچيدگی ندارد . در چنين وضعيتی هر گونه تغيير در رنگ پيکسل می تواند مشاهده شود ، هر چند در LSB تقريبا ً ديدن تغييرات با چشم انسان غير ممکن است .
روش ديگری که می تواند مورد استفاده قرار گيرد استفاده از الگوريتم هايی است که مکان هايی از عکس که دارای پيچيدگی خاصی است را پيدا کند . برای اين کار می توان بلاک هايی مثلا ً با ابعاد 8 پيکسل در 8 پيکسل را انتخاب کرد و ميانگين رنگ های آن را بدست آورد ، سپس اگر تعداد پيکسل هايی که در آن بلاک رنگش خيلی بيشتر يا کمتر از ميانگين بود زياد شد آن بلاک را به عنوان بلاک پيچيده در نظر می گيرد . سپس در خود اين بلاک ها با استفاده از LSB و همچنين الگوريتم های random ساز رنگ پيکسلی را تغيير داد . با استفاده از اين تکنيک کمتر امکان ديده شدن تغييرات وجود دارد .
نمونه بلاک های پيچيده
وقتی از LSB برای عکس های 8 بيتی استفاده می کنيد بايد دقت بيشتری داشته باشيد زيرا عکس های 8 بيتی قابليت های عکس های 24 بيتی را ندارد . برای انتخاب عکس پوشاننده بايد دقت زيادی داشت تا وقتی پيغام دوم در آن جاسازی شد تغييرات بوجود آمده محسوس نباشد . از استفاده از عکس های معروف ( مانند موناليزا ) بايد پرهيز کرد ، در حقيقت يک عکس از سگ شما می تواند برای اين کار کافی باشد .
وقتی بيتهای LSB را در عکس های 8 بيتی تغيير می دهيد ، نشانه گر که palette اشاره می کند تغيير می يابد . اين مهم است که به ياد داشته باشيد تغيير يک بيت ممکن است رنگ يک پيکسل را از قرمز به آبی در palette تغيير دهد . اين چنين تغييری در عکس کاملا ً مشخص است و روشی که چنين تغييری بدهد اصلا ً قابل قبول نيست . برای همين علت متخصصان مخفی کردن اطلاعات می گويند که در عکس های 8 بيتی از palette خاکستری استفاده کنيد زيرا تغيير رنگ بين طيف خاکستری محسوس نمی باشد و در صورت تغيير انديس هر پيکسل در palette رنگ هايی که جلب نظر بکند ديده نخواهد شد .
Masking and Filtering :
تکنيک های Masking و Filtering اطلاعات را مشابه تکنيک های watermarking در عکس مخفی می کند . بدليل اينکه تکنيک های watermarking بيشتر در عکس ادغام می شود از آنها بدون ترس از دست رفتن بر اثر تغيير يا فشرده سازی عکس می توان استفاده کرد . بوسيله پوشانيدن يا masking يک نور ضعيف که قابل درک است بوسيله يک سيگنال ديگر سعی می کنيم اولی را غير قابل درک کنيم ، در حقيقت ما از ضعف سيستم بينايی انسان در تغييرات بسيار کم در يک محيط محدود و مشخص استفاده می کنيم .
از نظر تکنيکی ، watermarking يک نوع از steganography نيست . steganography اطلاعات را در عکس مخفی می کند ؛ watermarking اطلاعات را توسعه می دهد و آن را به عنوان يکی از خواص عکس پوشاننده تبديل می کند ، اطلاعاتی مانند مالکيت ، اجازه و copyright .
استفاده از تکنيک های Masking در عکسهای jpeg که از lossy استفاده می کنند بسيار مناسب تر از LSB است ، زيرا سازگاری ِ خاصی با فشرده سازی و برش عکس دارد .
Algorithms and Transformation :
بدليل اينکه عکس های JPEG دارای کيفيت بالا و فشرده سازی خوب هستند بسيار مناسب است که از آنها برای استفاده در شبکه ها و اينترنت استفاده کنيم . در حقيقت JPEG متداول ترين فرمت بر روی اينترنت است .
عکس JPEG از Discrete Cosine Transform يا DCT برای فشرده سازی استفاده می کنند . DCT يک تبديل lossy برای فشرده سازی است . بدليل اينکه مقدار کسينوس به دقت ِ کامل محاسبه نمی شود هميشه احتمال خطا وجود دارد و اطلاعاتی که بازيابی می شود با توجه به مقاديری که DCT محاسبه کرده ممکن است با مقدار اوليله تفاوت داشته باشد .
همچنين عکس را می توان توسط تبديل فوريه يا تبديل wavelet پردازش کرد . از روشنايی ِ عکس ها هم می توان استفاده کرد ، سيستم بينايی انسان حساسيت کمی نسبت به تغييرات کم در روشنايی دارد .
بقيه تکنيک ها اطلاعات مخفی شده را کد گزاری می کند . آنها فرض می کنند که اگر بيت های پيغام کشف شد اگر الگوريتم و کلمه رمز وجود نداشته باشد پيغام را نتوان رمزگشايی کرد . با اينکه اين تکنيک ها در محافظت از پيغام در برابر کشف شدن کمک می کند ولی در مقابل دستکاری ِ عکس مصونيت ندارند .
Steganography در صدا
بدليل محدوده سيستم شنوايی انسان مخفی کردن اطلاعات در صدا نيز می تواند مورد استفاده قرار گيرد . سيستم شنوايی انسان می تواند قدرتی بين يک تا يک ميليون و فرکانسی بيشتر يک هزار تا يک را درک کند . همچنين نسبت به پارازيت هايی که اضافه می شود بسيار حساس است . هر گونه مزاحمتی در يک فايل ِ صوتی قابل درک است حتی اگر به کمی 1 قسمت از ده ميليون باشد . به هر حال با اينکه سيستم شنوايی انسان حساسيت زيادی دارد ولی دربرابر بعضی تغييرات حساسيت خود را از دست می دهد مثلا ً صداهای بلند صداهای آرام را در خود جای می دهند .
برای استفاده از صدا برای مخفی کردن اطلاعات دو نکته را بايد در نظر داشت ، اول ، بايد از ضعف سيستم شنوايی انسان سو استفاده کرد و دوم توجه خاصی به حساسيت فوق العاده آن داشت .
محيط های صدا
وقتی سيگنال های صدا فرستاده می شود دو نکته مد نظر است ، يکی وسيله ذخيره صدا و ديگری وسيله پخش آن .
ذخيره صدا
فايلهای صدای ديجيتالی دارای دو خصوصيت هستند :
· الگوی ِ quantisation : معمول ترين فرمت های ذخيره صدا با کيفيت بالا استفاده از فرمت های 16 بيتی ِ خطی ِ quantization است ، مانند آن چيزی که در WAV يا Windows Audio Visual يا AIFF يا Audio Interchange File Format استفاده می شود . مقداری از سيگنال های بوسيله اين فرمت دچار اعوجاج می شود .
· Temporal نرخ نمونه گيری : پر استفاده ترين temporal نرخ نمونه گيری ها برای صدا عبارتند از 8KHz , 9.6KHz , 10KHz , 12KHz , 16KHz , 22.05KHz و 44.1KHz که KHz همان Kilohertz است .نرخ نمونه گيری يک حد بالا برای استفاده از فرکانس های مختلف در صدا ايجاد می کند . به طور کلی فضای قابل استفاده نسبت خطی با نرخ نمونه گيری دارد .
يکی ديگر از روش های ذخيره که بايد به آن توجه کرد ISO MPEG است . در اين فرمت خصوصيات سيگنال ها بوسيله کد کردن بخش قابل شنيدن آن تغيير می يابد ، اينگونه که صدا را حفظ می کند ولی سيگنال را تغيير می دهد .
وسايل پخش
وسيله پخش يا محيط پخش در يک سيگنال صدا به محيطی گفته می شود که سيگنال در آن از encoder به decoder می رود .
چهار محيط پخش عبارتند از :
· محيط Digital End-to-End : وقتی يک فايل صوتی مستقيما ً از يک ماشين به ماشين ديگر کپی شود اما تغييری در آن اعمال نشود آنگاه آن فايل از طريق Digital end to end منتقل شده است . در نتيجه sampling بين encoder و decoder تغيير نخواهد کرد . در اين محيط اطلاعات خيلی کمی می توان مخفی کرد .
· محيطی با استفاده از کم يا زياد کردن و نمونه گيری مجدد : در اين محيط يک سيگنال دوباره نمونه گيری می شود تا به يک سطح بالاتر يا پايين تری از نرخ نمونه گيری برسد اما همچنان دارای خروجی يکسان باشد . اما همچنان بزرگی و فاز سينگال ها حفظ می شود و فقط خاصيت های temporal ِ سيگنال تغيير می کند .
· پخش آنالوگ و نمونه گيری مجدد : اين وقتی اتفاق می افتد که سيگنال به آنالوگ تغيير می کند و آن بر روی يک خط آنالوگ پخش می شود . بزرگی سيگنال ، نمونه quantization و نرخ نمونه گيری temporal حفظ نمی شود . به طور کلی فقط فاز ِ سيگنال حفظ می شود .
· محيط هوا : اين وقتی اتفاق می افتد که سيگنال در هوا پخش شود و دوباره بوسيله ميکروفن از آن نمونه برداری کنند . در اين حالت سيگنال تغييرات غير خطی زيادی می کند مانند تغيير در فاز ، دامنه ، فرکانس و غيره .
هر دوی محيط پخش و وسيله ذخيره سينگال در نوع الگوريتم هايی که برای مخفی کردن اطلاعات به کار می رود اهميت دارند .
روش های مخفی کردن اطلاعات در صدا
حالا بعضی از روش های مخفی کردن اطلاعات در صدا را بررسی می کنيم .
Low-Bit encoding :
مشابه روش LSB يا Least Significant Bit در عکس ها ، اطلاعات دودويی نيز می توانند با روش least significant bit در فايلهای صوتی ذخيره شوند . در بهترين حالت حجم کانال يک کيلوبيت بر ثانيه برای هر کيلوهرتز است بنابراين ظرفيت کانال برای 44KHz معادل 44Kbps است . متاسفانه اين يک پارازيت قابل شنيدن ايجاد می کند . البته مهمترين ضعف اين سيستم مقاومت نکردن در برابر تغييرات است ، هر گونه تغييری می تواند منجر به از دست رفتن اطلاعات مخفی شده باشد .
روش ديگر تغيير کمی در دامنه سيگنالهای نمونه است به قسمی که تغييرات آنها قابل ملاحظه نباشد . از اين روش در فرمت های MPEG می توان استفاده کرد .
Phase Coding :
در phase coding فاز بخشی از سيگنال را با اطلاعات مورد نظر تعويض می کنند . روش اينکار بدين شرح است :
دنباله صدای اصلی به N قسمت کوچک تقسيم می شود .
از تبديل گسسته فوريه برای پيدا کردن ماتريس فاز و اندازه هر قسمت استفاده می شود .
تفاوت فاز بين هر دو قسمت مجاور محاسبه می شود .
برای بخش آغازين ، S0 يک فاز مطلق برابر P0 در نظر گرفته می شود .
برای هر بخش ديگر قاب فازهايشان ساخته می شود.
فاز ِ جديد و بزرگی اصلی هر کدام با هم ترکيب می شوند و بخش جديد Sn را می سازند .
در آخر ، بخش های جديد به هم متصل می شوند تا خروجی کد شده را بسازند .
برای پردازش رمز گشايی ، ابتدا دنباله همزمان می شود . طول هر بخش ، نقاط DFT و وقفه ها بايد به decoder داده شود . محتوای فاز بخش اول يک يا صفر در نظر می گيرد که نشان دهنده متن کد شده دودويی است .
مخفی کردن اطلاعات در Echo :
در روش مخفی کردن اطلاعات با اکو ، اطلاعات بوسيله يک اکوی صدا در سيگنال ِ ميزبان جاسازی می شود . اطلاعات بوسيله تغيير در اين سه مشخصه مخفی می شود ، دامنه آغازين ، پايين آوردن سرعت و تاخير . وقتی فاصله بين سيگنال اصلی و اکو کم شود هر دو سيگنال با هم مخلوط می شود . در يک نقطه مشخص ، گوش انسان نمی تواند تفاوتی بين اين دو سيگنال قائل شود ، در اين حالت اکو به عنوان يک تشديد در سيگنال اصلی شنيده می شود . اين نکته به عواملی مانند کيفيت ضبط صدای اصلی و کيفيت گوش دهنده بستگی دارد .
بوسيله استفاده از دو متغيير برای تاخير زمامی که هر دو کمتر از قدرت تشخيص گوش انسان باشد می توان اطلاعات دودويی ِ صفر و يک را encode کرد . پايين آوردن نرخ سرعت و دامنه می تواند در حد پايين تر از آستانه شنوايی انسان باشد تا اينکه مطمئن باشيم صدا قابل تشخيص نيست . برای اينکه بيشتر از يک بيت را encode کنيم سيگنال اصلی را به قسمت های کوچکتری تقسيم می کنيم . هر کدام از آنها را می توان با اکو encode کرد ، در نهايت سيگنال خروجی از به هم پيوستن همه اين تکه ها خواهد بود .در اين روش از تاخيری به مدت y برای عدد يک و تاخير ديگری به مدت x برای صفر استفاده می کنند .
Steganalysis :
در حالی که هدف steganography مخفی کردن اطلاعات و جلوگيری از پيدا شدن و جلب توجه آنهاست ، steganalysis علمی است که برای پيدا کردن چنين مطالب مخفی شده ای به کار می رود .
دو عملی در اين علم مورد بررسی قرار می گيرد يک ، پيدا کردن و دوم نابودی پيغام های جاسازی شده است . پيدا کردن پيغام ها که بسيار مفيد تر از نابودی آن است می تواند به دو دسته کلی تقسيم شود ، عکس ها و متن ها . البته دسته های ديگری مانند بررسی های real time بر روی ISDN و TCP/IP می تواند باشد که برای آنها به علت حجم بسيار بالای اطلاعات منتقل شده بايد از الگوريتم های پيچيده استفاده کرد . همچنين در مورد پيدا کردن پيغام در متن ، يک text بايد از جنبه هايی مثل : گرامر ، تعداد لغات تکرار شده ، تعداد حرف های تکرار شده ، محتوای متن و معنای آن . با وجود روش های بسيار زياد انتقال متن مانند فکس ، پست الکترونيکی ، چاپ های با کيفيت بالا حتی با چاپگر های خانگی ، تلگراف ، پيدا کردن يک پيغام مخفی شده در حجم عظيمی از متنها که جابجا می شوند کار بسيار دشوار و تقريبا ً غير ممکن است .
نتيجه گيری :
همان طور که مشاهده کرديد برای انتقال اطلاعات به روش هايی که کسی متوجه آن نشود راه های زياد و موثری وجود دارد . Steganography علمی است که از زمان های دور از مفهوم آن برای انتقال اطلاعات سری استفاده می شد و امروزه نيز در سطح گسترده ای از آن استفاده می کنند . اکثر سرويس های اطلاعاتی روش های مشابهی برای انتقال اطلاعات سری خود بکار می گيرند . در اين ميان گروه های خراب کار و گروه های تروريستی نيز که معمولا ً از امکانات مالی خوبی بر خوردار هستند از اين تکنولوژی چشم پوشی نمی کنند ، شايد وقتی شما برنامه را در تلويزيون تماشا می کنيد صدای مجری يا حتی عکس پشت سر آن حاوی اطلاعاتی برای گروه خاصی باشد که بعد ها وقتی آن اطلاعات از طبقه بندی خارج شد ما هم مفهوم آنها را بفهميم .