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

کلید واژه: برنامه نویسی، پردازش تصویر، الگوریتم، پیکسل

-۱ مقدمه

موضوعی با عنوان پنهان سازي متن درون یک تصویر از سالیان دور در علم برنامه نویسی و پردازش تصویر وجود داشته است. Steganography، هنر مخفی کردن یک متن در متن دیگر، یکی از هم خانواده هاي Cryptography یا رمزنگاري است که امروزه بدلیل در خواست صنعت در به جا گذاشتن آثاري در فیلم هاي ویدئویی و صدا براي اعمال copyright استفاده فراوانی پیدا کرده است. هدف steganography این است که پیغامی را در یک پیغام دیگر به روشی ذخیره کند که دشمن پی به وجود پیغام اول در پیغام دوم نبرد. اولین استفاده هاي steganography توسط Herodotus یک مورخ یونانی به ثبت رسیده و ماجراي آن به یونان باستان باز می گردد. وقتی حاکم یونان Histiaeus به دست داریوش در شوش در قرن پنجم پیش از میلاد زندانی شده بود می بایست پیغامی مخفیانه به برادر خوانده اش در Miletus بفرستد. براي همین منظور موي سر غلامش را تراشید و پیغامی را روي فرق سرش خال کوبی کرد وقتی موهاي غلام به اندازه کافی رشد کرد او را عازم مقصد کرد.[۱]

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

الگوریتم هاي مختلفی ارائه شده است که نمونه هاي آن در [۲]،[۳]و [۴] بیان شده است.

روشی که در این مقاله ارائه شده است به منظور پنهان سازي متن درون تصویر به صورت بیتی است براي این منظور دو الگوریتم اصلی ارائه شده است؛ الگوریتم اول که در طرف فرستنده اجرا می شود و متن را درون تصویر مخفی می کند، الگوریتم دوم که در طرف گیرنده بر روي تصویر دریافتی اجرا شده و اطلاعات موجود در آن را استخراج می کند. در الگوریتم فرستنده باید ابتدا کاراکترهاي موجود در متن را به شکل باینري آن تبدیل کرده و سپس بیت هاي موجود در هر کاراکتر را در کم ارزش ترین بیت پیکسل هاي موجود در تصویر قرار دهیم. مکان اولین پیکسل بستگی به کمترین و بیشترین مقدار شدت پیکسل هاي موجود در تصویر دارد. بعد از تعیین مکان اولیه، بیت هاي مربوط به کاراکترها پشت سرهم درون کم ارزش ترین بیت موجود در پیکسل ها (با توجه به مکان اولیه) قرار می گیرد و این فرایند تا آخرین بیت از آخرین کاراکتر ادامه می یابد.

در ادامه طرح اولیه الگوریتم با فرض داشتن تصویري با mn پیکسل و رشته اي از حروف که همان متن مورد نظر ما را تشکیل می دهد و پس از آن الگوریتم هاي مربوط به طرف فرستنده و طرف گیرنده با جزئیات کامل بیان می شود و سپس نتایج حاصل از پیاده سازي الگوریتم بررسی خواهد شد.

۱

چهاردهمین کنفرانس دانشجویی مهندسی برق ایران دانشگاه صنعتی کرمانشاه، ۱۷ -۱۵ شهریور ۱۳۹۰

-۲ طرح اولیه

در ابتدا فرض کنید تصویري با سایز mn موجود است. می خواهیم متنی را با تعداد مشخصی کاراکتر درون این عکس مخفی کنیم، براي این منظور کاراکترهاي موجود در متن را به شکل باینري آن تبدیل کرده در نتیجه به ازاي هر کاراکتر تعداد مشخصی ۶) یا (۷ بیت خواهیم داشت. با توجه به روش بیتی براي قرار دادن هر بیت از کاراکتر درون یک پیکسل باید ابتدا مکان اولین پیکسل را تعیین کرد. براي این منظور سطر و ستون L را به عنوان مکان اولین بیت از اولین کاراکتر انتخاب می کنیم که L به شکل زیر بیان می شود:

(۱) /۲] L [
(k  r)
در معادله بالا k برابر است با حداکثر مقدار شدت پیکسل
هاي موجود در تصویر و r برابر است با حداقل مقدار شدت پیکسل هاي موجود در تصویر. پس از آن بیت دوم از کاراکتر اول در خانه (L,L+1) قرار می گیرد و این عمل تا پایان قرار دادن همه بیت هاي متن موجود ادامه می یابد. چنانچه در موقعیتی قرار گرفتیم که می بایست بیت بعدي در مکانی بعد از مکان (L,n) قرار بگیرد آنگاه یکی به سطر اضافه می کنیم و ستون را ۱ قرار می دهیم یعنی بیت مورد نظر باید در کم ارزش ترین بیت پیکسل (L+1,1) قرار گیرد.

از آنجایی که تصویر اولیه پس از رمزگذاري متن در آن باید براي گیرنده ارسال شود، گیرنده باید بتواند مکان اولین بیت را تشخیص دهد. درنتیجه، مکان اولین بیت را در جایی از تصویر به صورت رمز شده نگه می داریم تا گیرنده بتواند آن را به راحتی پیدا کند. بدین منظور براساس فرمول زیر یکی از ۳ سطر انتهایی، براي قرار دادن اطلاعات مربوط به متن (سطر و ستون اولین و آخرین بیت) انتخاب می شود.
(۲) p  n ([mn]%3)
در رابطه بالا m برابر است با تعداد پیکسل هاي موجود در
طول تصویر و n برابر با تعداد پیکسل هاي موجود در عرض تصویر است.

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

در طرف گیرنده پس از دریافت تصویر ابتدا باید با توجه به فرمول ۲ اطلاعات مربوط به متن یعنی سطر و ستون اولین بیت

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