امنیت و هک, همه مطالب

آشنایی با مفاهیم مختلف کدگذاری

کدگذاری، رمز‌نگاری، درهم‌سازی، مبهم‌سازی

اکثر اوقات درک تفاوت میان مفاهیم کدگذاری، رمز‌نگاری، درهم‌سازی و مبهم‌سازی سخت و دشوار است.

ما در این مقاله قصد داریم تا به شرح هریک از این مفاهیم بپردازیم.

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

کدگذاری (Encoding)

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

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

برخی الگوهای معروف کدگذاری عبارتند از: ASCII , UNICODE, URL ENCODING, BASE64

رمز‌نگاری (Encryption)

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

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

برخی روش‌های معروف رمزنگاری عبارتند از: AES, BLOWFISH, RSA

درهم‌سازی یا هش کردن (Hashing)

هدف از درهم‌سازی یا هش کردن ایجاد اطمینان و تأیید در تمامیت و صحت داده‌ها می‌باشد. یعنی این‌که اگر اطلاعات مورد نظر در حین انتقال تغییر کردند بتوان متوجه ایت نغییر در ماهیت داده‌ها شد. به زبان فنی‌تر عملیات هش کردن یک ورودی دل‌خواه را می‌گیرد و یک رشته متنی با طول مشخص ایجاد می‌کند. که این رشته دارای ویژگی‌های زیر است:

۱. خروجی درهم‌سازی دو متن یکسان، همیشه یکسان و منحصربه‌فرد است.

۲. هیچ‌گاه نباید پس از فرایند درهم‌سازی، چندین ورودی یا متن متفاوت، خروجی یکسان داشته باشند.

۳. امکان کدگشایی متن هش شده وجود ندارد. در واقع درهم‌سازی همیشه یک‌طرفه است.

۴. هرگونه تغییر در یک ورودی مشخص باید تغییر اساسی در مقدار هش‌ به ‌وجود آورد.


مثلا:

Test  =>  0cbc6611f5540bd0809a388dc95a615b

Tester => 3095c3e4f1465133e5e6be134eb2ebe2

هش کردن همراه با احراز هویت استفاده می‌شود تا یک مدرک محکم به وجود آید که براساس آن بتوان عدم تغییر یک پیام مشخص را تأیید کرد. این پروسه با گرفتن یک ورودی به‌خصوص، هش کردن آن و سپس امضای آن به‌وسیله کلید خصوصی ارسال کننده، کار می‌کند.

زمانی که گیرنده پیام را باز کند، می‌تواند امضای مقدار هش را به وسیله کلید عمومی ارسال‌کننده و سپس هش کردن پیام و مقایسه آن با مقدار هشی که توسط فرستنده ارسال شده است، تأیید کند. اگر که این 2 مقدار برابر باشند می‌توان مطمئن بود که پیام تغییر نکرده است.

برخی الگوریتم‌های معروف درهم‌سازی عبارتند از: SHA-3,MD5

مبهم‌سازی (Obfuscation)

هدف از مبهم‌سازی این است که بتوان فهم چیزی را دشوار کرد. معمولاً این کار به‌منظور دشوارسازی کار هکرها یا جلوگیری از یک کپی غیرمجاز، انجام می‌شود.

یکی از مصارف عمومی این روش در مبهم کردن کد منبع یک برنامه است تا بتوان مهندسی معکوس آن را دشوار کرد.

نکته مهم آن است که مبهم‌سازی یک حربه نهایی محسوب نمی‌شود بلکه بیشتر شبیه یک مانع است. مشابه کدگذاری، خروجی این روش با همان روش مبهم کردن، قابل آشکارسازی است. در مواردی نیز این یک روش دستی می‌باشد که زمان زیادی برای معکوس کردن خواهد برد.

یک مورد دیگر در مورد مبهم‌سازی این است که در ایجاد خروجی مبهم، ‌بسته به ورودی آن، محدودیت وجود دارد. اگر قصد دارید که مثلاً کد یک برنامه را مبهم‌سازی کنید، محدودیت در این است که باید بتوان خروجی را به یک کامپیوتر دیگر جهت اجرا، انتقال داد. در غیر این صورت برنامه کار نخواهد کرد.

مثال:‌JAVASCRIPT OBFUSCATOR ,PROGUARD

جمع‌بندی

به‌طور خلاصه مفاهیم کدگذاری، رمز‌نگاری، درهم‌سازی، مبهم‌سازی عبارتند از:

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

دوست عزیز

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.