بایگانی برچسب برای: Cryptography

چکیده

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

مقدمه

Steganography در یونانی به معنای پوشیده شده یا نوشتن مخفیانه است. هدف  steganography این است که پیغامی را در یک پیغام دیگر ِ بی خطر به روشی ذخیره کند که دشمن پی به وجود پیغام اولی در پیغام دوم نبرد. جوهر های نامرئی یکی از عمومی ترین ابزارها برای steganography هستند استگانوگرافی موضوعی است که به ندرت از طریق هواخواهان امنیتی فناوری اطلاعات مورد توجه قرار گرفته است. در حقیقت  پنهان نگاری (نهان نگاری) پروسه ای است که در طی آن یک داده را در دیگر شکل های دیگر داده ای مثل فایل های عکس یا متن مخفی می کنند. معروف ترین و رایج ترین متد مخفی کردن داده در فایلها بکارگیری تصاویر گرافیکی به عنوان مکان‌هایی مخفی می باشد.

تاریخچه

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

استگانوگرافی چیست؟

استگانو گرافی از لغت یونانی استگانوس (پوشاندن) و گرافتوس (نوشتن ) گرفته شده است. در واقع استگانوگرافی دانشی است برای پنهان کردن داده یا فایلی در فایل دیگر، بطوری که فقط افراد آگاه با ابزار لازم بتوانند به آن دست یابند. استفاده از این روش در مواردی بسیار عالی و کاربردی است. برخلاف رمزگذاری که فایل حفاظت شده را کاملاً حساس جلوه می‌دهد و جلب توجه می کند، این روش از ناآگاهی افراد، برای جلوگیری از دستیابی آن‌ها به اطلاعات خاص بهره می برد. این کار شبیه پنهان کردن اشیای گرانبها در قوطی بیسکویت، داخل کابینت آشپزخانه است؛ جایی که معمولاً هیچ دزدی احتمالش را نمی‌دهد.  پنهان نگاری خود شاخه ای از دانشی به نام ارتباطات پوشیده است. دانش ارتباطات پوشیده خود شامل چندین شاخه از جمله رمز نگاری، ته نقش نگاری و … می باشد.

تفاوت پنهان نگاری(steganogrphy) و رمزنگاری(Cryptography)

تفاوت اصلی رمزنگاری و پنهان نگاری آن است که در رمز نگاری هدف اختفاء محتویات پیام است و نه به طور کلی وجود پیام، اما در پنهان نگاری هدف مخفی کردن هر گونه نشانه‌ای از وجود پیام است. در مواردی که تبادل اطلاعات رمز شده مشکل آفرین است باید وجود ارتباط پنهان گردد. به عنوان مثال اگر شخصی به متن رمزنگاری شده‌ای دسترسی پیدا کند، به هر حال متوجه می‌شود که این متن حاوی پیام رمزی می‌باشد. اما در پنهان نگاری شخص سوم ابدا از وجود پیام مخفی در متن اطلاعی حاصل نمی‌کند. در موارد حساس ابتدا متن را رمزنگاری کرده، آنگاه آن را در متن دیگری پنهان نگاری می‌کنند. اما با وجود بهتر بودن استگانوگرافی در مقابل رمز گذاری همچنان بسیاری از مردم می گویند:رمزنگاری بهتر از استگانوگرافی (stganography) عمل می کند.

شمای کلی استگانوگرافی

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

انواع مختلف استگانوگرافی

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

تشریح تکنیک هایSteganography

فرمول کلی برای تابع Steganography این چنین است: شی ای که قراراست اطلاعات در آن نگهداری شود + اطلاعاتی که باید مخفی شوند + الگوریتم مورد نظر = شی مورد نظر که اطلاعات در آن مخفی شده اند. فایلی که برای مخفی کردن اطلاعات به کار می رود، می تواند یک تصویر، فایل صوتی و یا یک فایل ویدئویی باشد. درعین حال دو روش معمول برای Steganography وجود دارد که عبارتند از : Injection,LSB.

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

Injection‎ : روشی ساده است که برمبنای آن، ‌اطلاعاتی که قراراست مخفی شوند را در یک فایل تزریق می کنند. مهمترین مسأله در این روش،‌ افزایش حجم فایل است

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

Steganography در تصاویر

وقتی از یک تصویر برای مخفی نمودن یک متن( نوشته)استفاده می شود، معمولاً ازروش LSB استفاده می شود. ضمناً اگر در درون یک تصویر اطلاعاتی درج شده باشد وسپس این تصویربه فرمت دیگری تبدیل شود، به احتمال بسیار زیاد، بخش اعظمی ازاطلاعات مخفی شده از بین می رود وبخش باقی مانده نیزشاید با سختی فراوان قابل بازیابی باشد.

Steganography درصوت

برای این منظور نیز از روشی مشابه روش LSB استفاده می کنند. البته مشکل استفاده از بیت های کم ارزش در یک فایل صوتی، این است که تغییرات در این بیت ها نیز برای گوش انسان قابل تشخیص است . در حقیقت Spread Spectrum روش دیگری برای مخفی نمودن اطلاعات در یک فایل صوتی است. دراین روش، یک نویز به طور تصادفی در سراسر فایل پخش می شود و اطلاعات در کنار این نویزها قرارداده می شوند. Echo data hiding نیز روش دیگری برای مخفی نمودن اطلاعات در یک فایل صوتی است. این روش از اکو (پژواک) در فایل استفاده می کند تا بتواند اطلاعات را مخفی نماید. دراین وضعیت با اضافه کردن صداهای اضافی به بخش های اکو، می توان اطلاعات را در این قسمت ها مخفی نمود.

Steganography در ویدئو

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

تشریح تکنیک LSB بر روی یک فایل تصویری

هر فایل تصویری صرفاً یک فایل دودویی است که حاوی رنگ یا شدت نور هر پیکسل برحسب عددی دودویی است. تصاویر معمولاً از فرمت ۸ بیتی یا ۲۴ بیتی استفاده می کنند. در فرمت ۸ بیتی، تنها قادر به استفاده از ۲۵۶ رنگ برای هرپیکسل هستیم ( از این ۸ بیت، هر بیت می تواند یکی از مقادیر ۰ یا ۱ را برگزیند که در مجموع ۲ به توان ۸، ‌یعنی ۲۵۶ رنگ مختلف داریم). درفرمت ۲۴ بیتی نیز هرپیکسل از۲ به توان ۲۴ بیت رنگ می تواند استفاده کند. در این فرمت، هرپیکسل از۳ بایت ۸ بیتی استفاده می کند. هر بایت نشان دهنده شدت روشنایی یکی از سه رنگ اصلی آبی، قرمز و سبز است. به عنوان نمونه،‌رنگ ها در فرمت html بر اساس فرمت ۲۴ بیتی است، ‌که هر رنگ، کدی بر مبنای ۱۶ دارد که از ۶ کاراکتر تشکیل شده است.دو کاراکتر اول، مربوط به رنگ قرمز، دو کاراکتر دوم مربوط به رنگ آبی و دو کاراکتر سوم، مربوط به رنگ سبز است . برای نمونه برای ساختن رنگ نارنجی، باید مقادیر شدت روشنایی رنگ های قرمز، ‌سبز و آبی ، به ترتیب ۱۰۰% و۵۰% و۰ باشد که در html با #FF7FOO قابل تعریف است.

همچنین اندازه یک تصویر، به تعداد پیکسل ها در تصویر بستگی دارد. برای نمونه، برای تصویری با رزولوشن ۴۸۰× ۶۴۰ که از فرمت ۸ بیتی استفاده می کند،‌ اندازه تصویر باید حدود ۶۴۰*۴۸۰*Byte=307KB باشد. به عنوان مثالی دیگر، تصویری با رزولوشن ۱۰۲۴*۷۶۸ که ازفرمت ۲۴ بیتی استفاده می کند، اندازه تصویر باید حدود ۱۰۲۴*۷۶۸*۳Byte=2.36MB باشد. البته این اعداد درصورتی صادق هستند که هیچ فشردگی بر روی فایل اعمال نشده باشد. لازم به ذکراست، ‌فرمت های تصویری GIF وBMP ، 8 بیتی بوده و از روش Lossless (روشی در گرافیک برای فشرده سازی تصاویراست که درآن تمام اطلاعات تصویرحفظ می شود و فقط از تعداد محدودی ازاطلاعات استفاده می شود و در برنامههای خاصی، اطلاعات حفظ شده قابل بازیابی است بنابراین از کیفیت تصویر نیز کاسته نمی شود) استفاده می کنند.

درمقابل، فرمت JPEG ازروش Lossy(دراین روش بخشی ازاطلاعات تصویر برای همیشه ازبین می رود)استفاده می کند. در Steganographyاز فرمت های GIF وBMP به دلیل ویژگی هایی که دارند، استفاده می شوند. ساده ترین راه برای پیاده سازی Steganography استفاده ازبیت های کم ارزش هرپیکسل یا همان روش(Least significant bit insertion) است. برای این منظور اطلاعات را به دو صورت دودویی درآورده و در بیت های کم ارزش پیکسل های تصویر قرار می دهیم . البته ما خواهان این هستیم که تصویر مورد نظر نیز زیاد تغییری نداشته باشد. بنابراین اگر از فرمت ۲۴ بیتی برای این کار استفاده کنیم، چشم انسان قادر به شناسایی این تغییر در تصویر نیست. فرض کنید که سه پیکسل مجاور هم داریم که به صورت زیر کد شده اند: سبز آبی قرمز ۱۱۰۰۱۰۰۱ ۰۰۰۰۱۱۰۱ ۱۰۰۱۰۱۰۱ پیکسل ۱ ۱۱۰۰۱۰۱۰ ۰۰۰۰۱۱۱۱ ۱۰۰۱۰۱۱۰ پیکسل ۲ ۱۱۰۰۱۰۱۱ ۰۰۰۱۰۰۰۰ ۱۰۰۱۱۱۱۱ پیکسل ۳ حال فرض کنید که می خواهیم ۹ بیت اطلاعات ۱۰۱۱۰۱۱۰۱را در این پیکسل ها مخفی نماییم (فرض میشود که این ۹ بیت اطلاعات رمزنگاری شده، یک پیام باشند). حال اگر ازروش LSB استفاده شود و این ۹ بیت در بیت های کم ارزش بایت های این سه پیکسل قرارداده شوند،‌ جدول زیر را خواهیم داشت . سبز آبی قرمز ۱۱۰۰۱۰۰۱ ۰۰۰۰۱۱۰۰ ۱۰۰۱۰۱۰۱ پیکسل ۱ ۱۱۰۰۱۰۱۱ ۰۰۰۰۱۱۱۰ ۱۰۰۱۰۱۱۱ پیکسل ۲ ۱۱۰۰۱۰۱۱ ۰۰۰۱۰۰۰۰ ۱۰۰۱۱۱۱۱ پیکسل ۳ ملاحظه می شود که فقط ۴ بیت تغییر داده شده اند و این لطمه زیادی به تصویر وارد نمی کند، به طوری که چشم اصلاً قادر به تشخیص این تغییرات نیست. به عنوان مثال، تغییربیت رنگ آبی از ۱۱۱۱۱۱۱۱ به ۱۱۱۱۱۱۱۰ اصلاًبرای چشم قابل تشخیص نیست. ناگفته نماند تصاویر سیاه وسفید نیز برای Steganography بسیار مناسب هستند. حال شاید خواهان مخفی کردن یک متن در یک تصویر باشیم. در این وضعیت هر کاراکتر، یک بایت( ۸ بیت)فضا اشغال می کند. از آنجا که این بیت ها را باید درون پیکسل های تصویری قرار دهیم، می بایست این هشت بیت را به بسته های ۱ بیتی تقسیم نماییم و هر بیت را در بیت های سطح پایین یکی ازسه رنگ اصلی پیکسل ها،‌ قرار دهیم با این شیوه، کلمات تمامی زبان هایی را که با ساختار ASCII یا UTF-8 سازگارند، می توان درون تصاویر جاسازی نمود.

پیاده سازی تکنیک LSB

برای این کار معمولاً از فرمت BMF 24 بیتی استفاده می شود. در واقع در این روش معمولاً از دو بیت کم ارزش هر یک از بایت های پیکسل استفاده می شود. این کار به این دلیل است که در یک تصویر، تعداد زیادی کاراکتر را بتوان جا داد همچنین متنی را که قرار است در تصویر مخفی شود، به کد ASCII تبدیل می کنند. سپس هر کاراکتر را به بسته های ۲ بیتی تقسیم می کنند، یعنی هر کاراکتر از ۴ بسته ۲ بیتی تشکیل می شود. سپس این بسته های ۲ بیتی را در دو بیت کم ارزش هر یک از بایت های یک پیکسل،‌ پخش می کنند. یعنی برای هر کاراکتر، ما احتیاج به ۴ بایت از اطلاعات تصویر داریم، که ۳ بایت آن از یک پیکسل بدست می آید و بایت چهارم هم از پیکسل دیگر گرفته می شود. برای راحتی کار، معمولاً بسته های ۲ بیتی را در اولین پیکسل جا سازی می کنند و به همین ترتیب پیش می روند تا تمام متن در تصویر جاسازی گردد. استخراج اطلاعات پنهان شده برای استخراج متون مخفی شده در تصویر عملیات زیر را به ترتیب انجام می دهیم: استخراج بیت های استفاده شده ادغام بیت ها و تبدیل آنها به بایت تبدیل بایت ها به کاراکتر مشاهده کامل متن جا سازی شده

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

نتیجه گیری:

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