آیا میدانستید که همین ویژگیها و خصوصیات منحصربهفرد هر موجود زنده، دارای شناسنامه است؟ آیا میدانید که شناسنامه ذاتی و جسمی هر موجود زنده را میتوان از بدن آن موجود استخراج کرد؟ باید بگویم که در داخل بدن هر موجود زنده، دفترچه راهنمای بدن او قرار داده شده است و خداوند بهنحوی این اطلاعات را کدگذاری کرده که دانشمندان و محققان هنوز نتوانستهاند به تمامی این اطلاعات دست پیدا کنند. نام این دفترچه راهنمای جذاب “ژن” است و هر کدام از همین ژنها تکهای از مولکولهای dna هر موجود زنده را تشکیل میدهند.
حالا سوالی که ذهن من را به خود مشغول کرده؛ این است: آیا بهتر نیست که ما هم خالق اثر کدگذاریشده خود باشیم و با الهام گرفتن از طبیعت، تبادل اطلاعات بر روی سرورها و سیستمهایمان را کدگذاری کنیم؟ چند سالی است که محققان علوم کامپیوتر هم بر روی این موضوع کار میکنند و به نتایج جالبی دست یافتهاند. اگر شما هم مثل من کنجکاو شدهاید که به این یافتهها دست پیدا کنید؛ در ادامه مقاله آموزش الگوریتم رمزنگاری dna، با من همراه باشید.
تشریح بیولوژیکی ژنتیک
dna یا دئوکسی ریبو نوکلئیک اسید، ماده وراثتی انسان و تقریبا تمامی موجودات دیگر است که دارای دستورالعملهای ژنتیکی برای کارکرد و توسعه زیستی در جانداران و ویروسها مورد استفاده قرار میگیرد. نقش اصلی مولکول dna ذخیرهسازی طولانیمدت اطلاعات ژنتیکی است. قطعاتی از dna که اطلاعات ژنتیکی را حمل میکنند و در بروز یا کنترل یک صفت خاص نقش دارند؛ ژن نامیده میشوند و برای تشریح هر کدام از این ژنها باید الفبای آن را قبلا آموزش دیده باشیم. چرا که الفبای ژنها در میان تمام موجودات زنده مشترک است.
دانشمندانی به نام ویلکینز و فرانکلین با استفاده از پرتو ایکس، از مولکول dna تصاویری تهیه کردند و نشان دادند که dna حالت مارپیچی و بیشتر از یک رشته دارد. همچنین با این روش ابعاد مولکولها را نیز تشخیص دادند. به دنبال آن طبق تحقیقات دانشمندان دیگر، ساختمان dna را دو رشتهای و مارپیچ معرفی نمودند و اغلب این مارپیچ را به یک نردبان پیچ خورده تشبیه میکنند که ستونهای این نردبان را قند و فسفات و پلههای آن را بازهای آلی تشکیل میدهند.
واکاوی کامپیوتری ژنتیک
شاخهای حیاتی از زیرساختهای امنیت ارتباطات در زمینه علوم کامپیوتر، علم رمزنگاری داده است که امروزه به منظور رمزگذاری اطلاعات و پنهان کردن پیغام رد و بدل شده، بهکار گرفته میشود. الگوریتمهای بسیاری برای محافظت از اطلاعات سرورها و سیستمها معرفی شدهاند که حکم سربازان یک ارتش برای محافظت از آب و خاک سرزمینشان را دارند. الگوریتم رمزنگاری dna یکی از همین روشها است که ترکیبی از رمزنگاری و بیوتکنولوژی مدرن میباشد.
چرا الگوریتم رمزنگاری dna؟
جرالد ادلمن، پزشک آمریکایی در سال ۱۹۹۴ طی مکانیزمی، به محققان علوم ریاضی و کامپیوتر نشان داد که چگونه میتوان با استفاده از الگوریتم dna، مسائل پیچیده NP-hard و NP-complete مثل مسائل معروف مسیر همیلتون هدایت شده و فروشنده دوره گرد را رمزگذاری و پیادهسازی کرد. بنابراین این فکر در ذهن صاحبان نظر علوم کامپیوتر خطور که با استفاده از الگوریتم رمزنگاری dna میتوانند مسائل پیچیدهتری را در حوزه کریپتوگرافی طراحی و پیادهسازی کنند.
سالها بعد دانشمندان دریافتند که dna حافظه را با چگالی حدود یک بیت بر نانومتر مکعب ذخیره میکند و این درحالی است که رسانههای ذخیرهسازی معمولی به ۱۰۱۲ نانومتر مکعب بر بیت نیاز دارند. درنتیجه میتواند تمام دادههای جهان را در چند میلیگرم ذخیره کند. نکته جالب دیگر در مورد الگوریتم رمزنگاری dna این است که محسابات در الگوریتم dna به قدری سریع انجام میشود که مشاهده مصرف ناچیز برق، میتوان ادعا کرد که برای محاسبات dna نیازی به برق نیست.
الگوریتم رمزنگاری dna
بنده قبلا طی آموزشیهایی درمورد الگوریتم RSA و الگوریتم DES بهطور مفصل صحبت کردم. در مبحث مربوط به هرکدام از آنها بیان شد که هیچ کدام از این الگوریتمهای رمزنگاری بهتنهایی قوی و ایمن نیستند و نیاز به یک مکمل قوی دارند. حال آمدهایم که در این آموزش، یک مکمل برای آنها معرفی کرده و آموزشهایمان را تکمیل کنیم.
آیا شما هم در طول شبانهروز، بسیار چای مینوشید؟ اگر جوابتان مثبت است؛ آیا تا به حال برایتان اتفاق افتاده که بخواهید با افزودن دارچین، هل و غیره به چایی که مینوشید؛ خاصیت اثربخشی بدهید؟ چایی بهتنهایی ممکن است آرامبخش باشد اما برای بدن مضر است ولی میتوان با افزودن کمی هل یا دارچین و غیره به آن خاصیت بخشید. درمثال مشابه هم الگوریتم dna برای سیستم یا سرور، نفش دارچین برای چایی را ایفا میکند.
از الگوریتم رمزنگاری dna بهعنوان تابعی یکطرفه برای توزیع کلید و یا بهعنوان مکمل توالی ساز میتوان استفاده نمود که همین ترفند توالیسازی الگوریتم رمزنگاری dna باعث محبوبیت آن در سطح جهان شده و این نردبان پیچخورده عجیب را به یک الگوریتم شکستناپذیر تبدیل کرده است. برای آشنایی شما عزیزان با انواع الگوریتمهای ژنتیک و داشتن ارائهای مفید در این زمینه پیشنهاد میکنیم به لینک زیر مراجعه کنید.
کاربردهای dna
از شهرت و کاربرد dna هرچه بگویم؛ کم گفتهام. از هر انگشت این الگوریتم هزاران هنر میبارد. این مزاح ساده را آوردیم که به شهرت جهانی و محبوبیت dna، اشاره کرده باشیم. بهطوری که میتوان از کاربردهای آن به سیستم رمزنگاری DNASC، سیستمهای استگانوگرافی dna، رمزنگاری dna سه مرحلهای، الگوریتم رمزگذاری الهامگرفته شده از dna و محاسبات مدل آشوب و غیره اشاره کرد.
تکنیک رمزگذاری ژنتیکی dna
برای توضیح دادن درمورد الگوریتم رمزنگاری dna و تفهیم هر چه بهتر، آن را در قالب یک تکنیک بیان میکنیم. محیطی که در آن به اجرای تکنیک پرداختهایم؛ محیط برنامه نویسی پایتون بوده و ماژولهای مورد استفاده عبارتند از: پیش پردازش، رمزگذاری، شکل دهی مجدد و متقاطع، جهش.
در این تکنیک، دادههای دیجیتالی باینری دریافت شده و طی عملیات تغییر شکل، رمزگذاری، متقاطع، جهش و سپس تغییر شکل، به کارخانه توالی dna تبدیل میشوند. بهنحوی که مراحل اصلی dna سه بار یا بیشتر تکرار گردیده و دادههای رمزگذاریشده در قالب فایل متنی یا تصویر منتقل میگردند.
در طرف دیگر، گیرنده از dna برای رمزگشایی دادههای دریافتی و تغییر شکل آن به فرمت اصلی استفاده میکند. این تکنیک دنبالههای کلیدی متعددی را برای افزایش درجه انتشار و سردرگمی هکر انجام داده؛ رمزگشایی دادهها را دشوار کرده و باعث میشود یک سیستم با امنیت بالا ایجاد شود.
نتایج تجربی نشان میدهد که این تکنیک دارای مراحل حفاظتی چندلایه در برابر حملات مختلف و سطح امنیت بالاتر بر اساس عملیات چند مرحلهای و ژنتیکی است. رمزنگاری کلید متقارن در طی این الگوریتم پیادهسازی شده و همچنین یک کلید تصادفی تولید خواهد شد. در نهایت و در خروجی حاصل از الگوریتم رمزنگاری dna، دادههای رمزگشاییشده قابل قبول هستند؛ زیرا بین آن و دادههای مخفی به اندازه زمین تا آسمان، تفاوت وجود دارد. اگر به شمای کلی الگوریتم dna توجه کنید؛ متوجه عرایض بنده میشوید.
مراحل الگوریتم رمزنگاری dna
الگوریتم رمزنگاری dna هم مانند دیگر الگوریتمهای رمزنگاری دارای یک سری مراحل برای طی شدن فرایند رمزگذاری است. دوستان عزیز، بیایید به کمک یکدیگر به بررسی هرکدام از این مراحل بپردازیم. شما هم در بخش نظرات کاربر، بررسیها و یافتههایتان را به این توضیحات اضافه کنید.
۱- مرحله پیش پردازش
با فرض اینکه دادههای ورودی، متنی باشند؛ در گروههای دادهای باینری هشت بیتی، گروهبندی شده و در چهار گروه پایه الگوریتم dna بهنامهای آدنین (A)، سیتوزین (C)، گوانین (G) و تیمین (T) قرار میگیرند. در این گروهبندی یا کلاسترینگ هر دو بیت مجاور، به چهار پایه منتقل میگردد و بهاینترتیب، داداههای باینری دریافتی در بخش ورودی، به توالی dna تبدیل میگردد.
۲- مرحله رمزگذاری
در الگوریتم رمزنگاری dna پس از تبدیل دادههای باینری به توالی dna نوبت به رمزگذاری با استفاده از کلید، میرسد و این کلید ممکن است بهصورت توالی dna یا رشته باینری باشد. درنظر داشتهباشید که طول کلید متغیر است و حتی ممکن است در طی فرایند رمزگذاری، دادهها و توالی dna، به شکل باینری تبدیل شوند. سپس عملیات OR روی عناصر مربوطه انجام گرفته؛ دوباره به دنباله dna تبدیل میگردند و بهاینترتیب مرحله رمزگذاری به اتمام میرسد.
۳- مرحله تغییر شکل
یک الگوریتم ژنتیک پایه از سه عملگر ” تولیدمثل، متقاطع و جهش ” تشکیل شدهاست. برای تولید مواد ژنتیکی که به صورت جمعیت کروموزوم به عملیات و تکرارهای بعدی منتقل میگردد؛ از مرحله Reshaping استفاده میشود. در این مرحله اولین عدد و طول کروموزوم مشخص میگردد و این مقادیر ممکن است برای هر دور، متغیر باشند و آن را با تراز کردن توالی dna در ردیفهایی برای ساخت کروموزومهای والدین در جمعیت کروموزوم با طول از پیش تعیین شده، شکل دهند.
۴- مرحله متقاطع
در الگوریتم رمزنگاری dna پس از ساخت کروموزومهای والدین عمل بعدی، عملیات متقاطع است که طی آن دو نوع کراس اوور انجام میشود و ممکن است بهطور متوالی در الگوریتم رمزنگاری dna مورداستفاده قرار گیرد. در اولین مورد، والدین جهت انجام عملیات تولید مثل، انتخاب میشوند. سپس یک نقطه متقاطع تکنقطهای بین بیتهای اول و آخر کروموزومهای والدین انتخاب شده و با مبادله والدین ۱ و والد ۲، دو فرزند جدید ایجاد میکند. در نتیجه، فرزندان حاوی بخشهایی از کدهای dna هر دو والدین هستند.
۵- مرحله جهش
پس از فرآیند متقاطع، کروموزومها در معرض جهش قرار میگیرند. جهش عبارت است از تغییر عناصر رشته که طی دو مرحله انجام میگیرد:
در مرحله اول، دادهها را به بردار باینری تبدیل کرده و دو نقطه جهش را بین بیت اول و آخر تعریف میکنیم. سپس با استفاده از الگوریتم رمزنگاری dna، بیتها را تکمیل میسازیم یعنی جهش تکنقطهای ۱ را به ۰ تغییر میدهیم و بالعکس.
در نوع دوم جهش، هر چهار بیت را به دو پایه dna (1010 -> CG) تبدیل میسازیم. پس از تبدیل، آن را به بردار بازهای dna تغییر شکل داده و دو نقطه بین اولین و آخرین باز تعریف میکنیم. سپس بازهای dna را تغییر میدهیم (یعنی C -> G) و بهاینترتیب به پایان الگوریتم رمزنگاری dna، میرسیم.
نتایج حاصل از ارزیابی الگوریتم
در تمام الگوریتمهای رمزنگاری، با استفاده از انواع حملات رمزنگاری، ریاضی و brute-force، تحلیلگران رمز به هر داده رمزگذاری شده حمله میکنند تا محتوای آن را کشف کنند. یک تکنیک رمزگذاری موفق در برابر تمام حملات احتمالی سایبری، باید ایمن و قوی باشد.
ما آزمایشهایی را برای تعیین اثربخشی این تکنیک انجام داده و آن را با انواع مختلف دادههای مخفی اجرا کردیم. این الگوریتم در سیستم عامل ۶۴ بیتی ویندوز ۸.۱ پیادهسازی شده است و در نتایج بهدستآمده، هیچ رابطه ای بین مقادیر داده های حساس قبل از رمزگذاری و پس از رمزگذاری، مقادیر دادههای رمزگذاری شده وجود ندارد. در ادامه، یکی از نتایج حاصله با شما به اشتراک گذاشه شده است.
در این مقاله پیاده سازی سورس کد الگوریتم رمزنگاری DNA در متن در متلب آماده شده است. این سورس کد مناسب برای پیاده سازی روشهای رمزنگاری متن میباشد. سورس کد الگوریتم رمزنگاری DNA مناسب برای دانشجویان و علاقه مندان رمزنگاری میباشد که میتوانید از لینک زیر دانلود کنید.
کلام آخر در رابطه با آموزش الگوریتم رمزنگاری dna
دوستان و همراهان همیشگی مجموعه پی استور، از اینکه با ما همراه بودید و به واسطه حضورتان به ما انگیزه دادید تا با یک آموزش جدید، در خدمتتان باشیم؛ از شما متشکرم و قدردان حضور سبزتان هستم. جا دارد یک خسته نباشید عرض کنم به شما عزیزان! چراکه شاخ یکی از پیچیدهترین الگوریتمهای رمزنگاری را شکستیم و توانستیم با کمک شما عزیزان به آخر مبحث برسیم. تمام تلاشمان را کردیم تا از پیچیدگی این الگوریتم بکاهیم و حس شیرین آموزش علوم کامپیوتر را بهشما عزیزان، منتقل کنیم. امیدوارم که در این زمینه موفق بوده باشیم.
این مژده را به شما میدهم که برای تفهیم شما عزیزان، یک آموزش جامع دیگر هم به واسطه گروه پی استور تهیه و تدوین شده است که شما میتوانید در این آموزش، الگوریتم رمزنگاری dna را در محیط برنامه نویسی متلب بیاموزید و اشکالات خود را برطرف کنید.
پس از مطالعه کامل این دو پست آموزشی، امید است بتوانید به سادگی و بااستفاده از الگوریتم رمزنگاری dna، یک مسئله را طراحی و رمزنگاری کنید و هیچ نگران نباشید؛ چراکه در طی فرایند پیادهسازی الگوریتمتان هم ما همراه شما هستیم. شما را تنها نخواهیم گذاشت و تیم ما آماده است به سوالات شما عزیزان، در هر ساعت از شبانهروز پاسخ دهد. اگر سوال یا نقطه نظری دارید؛ لطفا آن را با ما به اشتراک بگذارید. توصیه میکنم؛ همواره به تلاشتان ادامه دهید. موفق و پیروز باشید.