داده نما
🛒 فروشگاه داده نما بلاگ آموزشی

استگانوگرافی (Steganography) چیست؟ پنهان‌نگاری در متن، تصویر و صدا

آخرین به‌روزرسانی: 2026/09/24
استگانوگرافی (Steganography) چیست؟ پنهان‌نگاری در متن، تصویر و صدا

پیشگفتار

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

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

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

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

سپس در قسمت صدا ، روش‌های مختلفی مانند Least 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 تا ۱۵۲۶ ، یک روحانی آلمانی بود . اولین کار وی بر روی steganography ، Steganographiaنام داشت که درباره سیستم‌های جادو و پیشگویی توضیحاتی داده بود ، همچنین در آن کتاب درباره سیستم‌های پیچیده Cryptography هم مطالبی یافت می‌شد . این کتاب در زمان وی منتشر نشد ، زیرا او از فاش شدن اسرارش می‌ترسید .

Johannes Trithemius و نمونه‌ای از کتاب‌هایش
اولین کتاب واقعی در این زمینه را Gaspari Schotti در سال ۱۶۶۵ در ۴۰۰ صفحه با نام Steganographica نوشت . اما اکثر ایده‌هایش مربوط به Trithemius بود ، او آغازگر این راه بود .

Steganography در قرن‌های ۱۵ و ۱۶ توسعه یافت . به دلیل اینکه اکثر نویسندگان این کتاب‌ها از ایجاد تفرقه بین احزاب و فرقه‌ها می‌ترسیدند نام خود را مانند داستان‌ها در میان کتاب مخفی می‌کردند . یکی از رساله‌هایی که در این زمینه نوشته شده توسط 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 :
در این روش خطوط متن در راستای عمودی کمی تغییر مکان می‌دهند تا یک شکل منحصر به فردی را بسازند . رمز کردن و رمز گشایی کردن آن معمولاً توسط بررسی عکس ِ متن انجام می‌شود .
به‌وسیله تغییر مکان دومین خط هر صفحه به میزان یک سی صدم اینچ به بالا یا پایین ترکیب خوبی ایجاد شد که بعد از ۲۰ بار کپی گرفتن از متن همچنان خواص خود را حفظ می‌کرد .

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

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

Word-Shift Coding :
در این روش رمز به‌وسیله جابجایی افقی در بعضی کلمات به نحوی که از حالت طبیعی خارج نشود ذخیره می‌شود . این روش را هم می‌توان در فایل ِ حاوی متن اعمال کرد و هم در تصویر آن . برای اعمال این روش تنها متنی قابل قبول است که کلمات آن منظم باشد ، یعنی یا به سمت چپ ، راست یا وسط متمایل باشد .
برای مثال می‌توان بیشتر و کمترین فاصله بین کلمات را در یک خط پیدا کرد و فاصله بیشتر را مقدار معینی کم کرد و فاصله کمتر را با همان مقدار معین زیاد کرد . با این روش طول خط حفظ می‌شود .
این روش توسط خواننده کمتر دیده می‌شود زیرا تغییر فاصله بین کلمات برای پر کردن یک خط بسیار متداول است .
اما word-shift coding با دو روش قابل دیدن و شناسایی است .

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

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

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

Feature Coding :

روش سومی که برای این کار پیشنهاد شده است Feature Coding است که در عکس متن یا فایل ِ فرمت دار ِ آن اعمال می‌شود . در این روش بعضی از خواص متن با توجه به کلمه کد تغییر می‌کند . برای مثال ممکن است با توجه به کلمه کد و بیت‌هایی که می‌خواهند در متن جاسازی شوند حروف آخر بعضی از خط‌ها که b , h یا … هستند کمی بالا یا پایین می‌رود یا طول آن را زیاد یا کم می‌کنند . با این روش متن اصلی را می‌توان با استفاده از عکس ِ متن پوشاننده بدون متن جاسازی شده یا با دانستن الگوریتم جاسازی پیدا کرد .
در این روش به خاطر وجود مکان‌های زیاد در متن برای تغییر یافتن می‌توان اطلاعات زیادی را جاسازی کرد در حالی که اصلاً از نظر خواننده به آن‌ها توجه نمی‌شود . برای خنثی کردن این روش به راحتی می‌توان تمامی حروف را در یک فاصله ثابت با بقیه قرار داد . گاهی اوقات این روش با Word-Shifting ترکیب می‌شود تا الگوریتم‌های پیچیده‌تری را بسازد .

روش‌های دیگر :
چند راه جذاب دیگر برای کد کردن متن‌ها وجود دارد :
1. روش Open Space ، مانند روش‌های بالا عمل می‌کند .

۲. روش Syntactic که با نقطه و دیگر علائم اعمال می‌شود .
3. روش Semantic که کلمه‌ها را تغییر می‌دهد .

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

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

Steganography در عکس‌ها :

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

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

قبل از اینکه جلوتر برویم کمی باید درباره فایل‌های عکس در کامپیوتر توضیح داده شود . برای کامپیوتر عکس چیزی نیست جز یک آرایه از تصاویر که حاوی اطلاعات رنگی ِ هر نقطه یا pixel می‌باشد . pixel ها اطلاعات تصویری عکس را می‌سازند . عکس‌هایی با اندازه ۶۴۰ در ۴۸۰ پیکسل با تعداد رنگ ِ ۲۵۶ ( ۸ بیت در هر پیکسل ) بسیار معمول هستند ، این چنین عکسی حدود ۳۰۰ کیلوبایت اطلاعات دارد .
عکس‌های دیجیتالی در مدهای ۲۴ بیت در پیکسل یا ۸ بیت در هر پیکسل ذخیره می‌شوند . به عکس‌هایی که از ۲۴ بیت استفاده می‌کنند True Color نیز گفته می‌شود . عکسی که از ۲۴ بیت استفاده می‌کند فضای بیشتری برای جاسازی اطلاعات در اختیار می‌گذارد . البته این عکس‌ها حجم بیشتری دارند ، برای مثال ، یک عکس ۲۴ بیتی با اندازه ۱۰۲۴ در ۷۶۸ پیکسل حجمی حدود ۲ مگابایت خواهد داشت . انتقال یک عکس با چنین حجمی بر روی شبکه‌هایی با سرعت پایین بسیار وقت گیر خواهد بود ، در اینجا فشرده سازی مطرح می‌شود .

از عکس‌های ۸ بیتی نیز می‌توان برای مخفی کردن اطلاعات استفاده کرد . در عکس‌هایی که از ۸ بیت برای رنگ استفاده می‌کنند ، مانند GIF ، هر پیکسل معرفی کننده یک بایت است . هر پیکسل به ایندکس جدولی به نام palette که می‌تواند ۲۵۶ را مشخص کند اشاره می‌کند . مقادیر پیکسل‌ها نیز بین ۰ تا ۲۵۵ است . نرم افزاری که عکس را می‌خواهد نمایش دهد باید با توجه به جدول رنگ‌ها و عددی که در هر پیکسل مشخص شده است تصویر را نمایش دهد .

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

وقتی به عکس‌های ۸ بیتی کار می‌کنید باید به غیر از 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 است .

روش‌های رمز کردن عکس :

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

معمول‌ترین روش‌های مخفی کردن اطلاعات در عکس عبارتند از :
1. Least Significant Bit insertion یا LSB

۲. Masking and Filtering

۳. الگوریتم‌ها و transformation ها

هر یک از این‌ها می‌تواند بر خیلی از عکس‌ها به صورت موفقیت آمیزی اعمال شود . هر یک از آن‌ها از نظر اهمیت دارای رتبه بندی متفاوتی در زمانی است که روی عکس تغییراتی مانند برش ، اندازه و رنگ داده شود .

Least Significant Bit insertion

روش LSB یکی مهم‌ترین و متداول‌ترین روش‌ها در steganography در عکس‌ها می‌باشد . ولی بسیار آسیب پذیر در برابر حملاتی مانند دستکاری در عکس است .یک تغییر فرمت از Gif یا BMP به یک روش فشرده سازی دیگر مانند lossy که در Jpeg فایل‌ها استفاده می‌شود می‌تواند باعث از دست رفتن اطلاعات مخفی شده بشود .

وقتی از LSB در عکس‌های ۲۴ بیتی استفاده می‌شود می‌توان از ۳ بایت که هر پیکسل را تشکیل می‌دهد استفاده کرد . هر تغییری در این بایت‌ها هیچ گونه نشانه‌ای برای چشمان انسان ایجاد نمی‌کند . برای مثال حرف A می‌تواند در ۳ پیکسل ذخیره شود . فرض کنید سه پیکسل در عکس ۲۴ بیتی مشخصاتی مانند زیر داشته باشند .

(۰۰۱۰۰۱۱۱ ۱۱۱۰۱۰۰۱ ۱۱۰۰۱۰۰۰) (۰۰۱۰۰۱۱۱ ۱۱۰۰۱۰۰۰ ۱۱۱۰۱۰۰۱)

(۱۱۰۰۱۰۰۰ ۰۰۱۰۰۱۱۱ ۱۱۱۰۱۰۰۱)

عدد دو دویی برای حرف A معادل ۱۰۰۰۰۰۱۱ است . عدد دودویی A را در پیکسل‌ها از بالا سمت چپ اضافه می‌کنیم .
(۰۰۱۰۰۱۱۱ ۱۱۱۰۱۰۰۰ 11001000) (۰۰۱۰۰۱۱۰ 11001000

۱۱۱۰۱۰۰۰)(۱۱۰۰۱۰۰۰ ۰۰۱۰۰۱۱۱ ۱۱۱۰۱۰۰۱)

بیت‌های با اهمیت تنها آن‌هایی هستند که تغییر کرده‌اند . مهم‌ترین برتری LSB این است که با تغییر در بیت‌ها چشم انسان نمی‌تواند آن تغییر را مشاهده کند .

روش دیگر تغییر کل یکی از اجزای رنگی هر پیکسل است ، یعنی بعد از انتخاب پیکسل مقدار قرمز آن را با مقدار کد اسکی حرف مورد نظر تغییر دهیم ، سپس پیکسل دیگری را انتخاب کنیم و مقدار سبز آن را کد اسکی حرف بعدی جابجا کنیم و در آخر پیکسل دیگری را انتخاب و کد آبی آن را با مقدار اسکی حرف بعدی تغییر می‌دهیم ، با این روش هر سه حرف ِ متوالی در ۳ پیکسل جاسازی می‌شود ، هر چند این روش تغییر قابل محسوس‌تری نسبت به روش LSB می‌دهد ولی نتیجه قابل قبولی دارد .

برای انتخاب پیکسل‌ها نیز می‌توان از روش‌های مختلف استفاده کرد ، در یک روش می‌توان با استفاده از الگوریتم‌های random ساز و استفاده از seed ی که به عنوان یکی از رمزها می‌تواند باشد یک سری پیکسل‌های ثابتی را استخراج کرد . در این روش ممکن است تصادفاً پیکسل انتخابی در جایی باشد که رنگ‌های اطراف آن ثابت است و در آنجا عکس پیچیدگی ندارد . در چنین وضعیتی هر گونه تغییر در رنگ پیکسل می‌تواند مشاهده شود ، هر چند در LSB تقریباً دیدن تغییرات با چشم انسان غیر ممکن است .
روش دیگری که می‌تواند مورد استفاده قرار گیرد استفاده از الگوریتم‌هایی است که مکان‌هایی از عکس که دارای پیچیدگی خاصی است را پیدا کند . برای این کار می‌توان بلاک‌هایی مثلاً با ابعاد ۸ پیکسل در ۸ پیکسل را انتخاب کرد و میانگین رنگ‌های آن را به دست آورد ، سپس اگر تعداد پیکسل‌هایی که در آن بلاک رنگش خیلی بیشتر یا کمتر از میانگین بود زیاد شد آن بلاک را به عنوان بلاک پیچیده در نظر می‌گیرد . سپس در خود این بلاک‌ها با استفاده از LSB و همچنین الگوریتم‌های random ساز رنگ پیکسلی را تغییر داد . با استفاده از این تکنیک کمتر امکان دیده شدن تغییرات وجود دارد .

نمونه بلاک‌های پیچیده

وقتی از LSB برای عکس‌های ۸ بیتی استفاده می‌کنید باید دقت بیشتری داشته باشید زیرا عکس‌های ۸ بیتی قابلیت‌های عکس‌های ۲۴ بیتی را ندارد . برای انتخاب عکس پوشاننده باید دقت زیادی داشت تا وقتی پیغام دوم در آن جاسازی شد تغییرات بوجود آمده محسوس نباشد . از استفاده از عکس‌های معروف ( مانند مونالیزا ) باید پرهیز کرد ، در حقیقت یک عکس از سگ شما می‌تواند برای این کار کافی باشد .
وقتی بیت‌های LSB را در عکس‌های ۸ بیتی تغییر می‌دهید ، نشانه گر که palette اشاره می‌کند تغییر می‌یابد . این مهم است که به یاد داشته باشید تغییر یک بیت ممکن است رنگ یک پیکسل را از قرمز به آبی در palette تغییر دهد . این چنین تغییری در عکس کاملاً مشخص است و روشی که چنین تغییری بدهد اصلاً قابل قبول نیست . برای همین علت متخصصان مخفی کردن اطلاعات می‌گویند که در عکس‌های ۸ بیتی از 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 در صدا

به دلیل محدوده سیستم شنوایی انسان مخفی کردن اطلاعات در صدا نیز می‌تواند مورد استفاده قرار گیرد . سیستم شنوایی انسان می‌تواند قدرتی بین یک تا یک میلیون و فرکانسی بیشتر یک هزار تا یک را درک کند . همچنین نسبت به پارازیت‌هایی که اضافه می‌شود بسیار حساس است . هر گونه مزاحمتی در یک فایل ِ صوتی قابل درک است حتی اگر به کمی ۱ قسمت از ده میلیون باشد . به هر حال با اینکه سیستم شنوایی انسان حساسیت زیادی دارد ولی در برابر بعضی تغییرات حساسیت خود را از دست می‌دهد مثلاً صداهای بلند صداهای آرام را در خود جای می‌دهند .

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

وقتی سیگنال‌های صدا فرستاده می‌شود دو نکته مد نظر است ، یکی وسیله ذخیره صدا و دیگری وسیله پخش آن .
ذخیره صدا

فایل‌های صدای دیجیتالی دارای دو خصوصیت هستند :

  • الگوی ِ quantisation : معمول‌ترین فرمت‌های ذخیره صدا با کیفیت بالا استفاده از فرمت‌های ۱۶ بیتی ِ خطی ِ quantization است ، مانند آن چیزی که در WAV یا Windows Audio Visual یا AIFF یا Audio Interchange File Format استفاده می‌شود . مقداری از سیگنال‌های به‌وسیله این فرمت دچار اعوجاج می‌شود .
  • Temporal نرخ نمونه گیری : پر استفاده‌ترین temporal نرخ نمونه گیری‌ها برای صدا عبارتند از 8KHz , 9.6KHz , 10KHz , 12KHz , 16KHz , 22.05KHz و ۴۴.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 علمی است که از زمان‌های دور از مفهوم آن برای انتقال اطلاعات سری استفاده می‌شد و امروزه نیز در سطح گسترده‌ای از آن استفاده می‌کنند . اکثر سرویس‌های اطلاعاتی روش‌های مشابهی برای انتقال اطلاعات سری خود بکار می‌گیرند . در این میان گروه‌های خراب کار و گروه‌های تروریستی نیز که معمولاً از امکانات مالی خوبی بر خوردار هستند از این تکنولوژی چشم پوشی نمی‌کنند ، شاید وقتی شما برنامه را در تلویزیون تماشا می‌کنید صدای مجری یا حتی عکس پشت سر آن حاوی اطلاعاتی برای گروه خاصی باشد که بعدها وقتی آن اطلاعات از طبقه بندی خارج شد ما هم مفهوم آن‌ها را بفهمیم .

برای اطلاع از فن‌آوری‌های نوین ارتباطی شبکه‌های وایرلس و مایکروویو و مراکز تلفنی تحت شبکه از کانال تلگرامی ما به آدرس‌های Wireless_tech@ و Voip_Tech@  دیدن فرمایید.

📚 مقالات مرتبط در «امنیت شبکه»
نیاز به تجهیزات میکروتیک و شبکه دارید؟
مشاهده فروشگاه داده نما