۱۳ آبان ۱۴۰۰
  • Encoding
  • Encryption
  • Hashing
  • Obfuscation

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

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

مطالعه نمایید: با ده شیوه‌ی معمول هک آشنا شوید

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



کدگذاری (Encoding)

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

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

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


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


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

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

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

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

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



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

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

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

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

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

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



مثلا:

Test  =>  0cbc6611f5540bd0809a388dc95a615b

Tester => 3095c3e4f1465133e5e6be134eb2ebe2

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

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

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


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

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

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

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

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

مثال:‌JAVASCRIPT OBFUSCATOR, PROGUARD

خلاصه

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