واژه‌شناسی رمزنگاری

Security vs. Safety

واژهٔ Security (معادل واژهٔ «امنیت» در زبان فارسی) زمانی کاربرد دارد که محرمانه ماندن اطلاعات یا غیرقابل نفوذ بودن یک سامانه در مقابل حملات نفوذگران مطرح باشد. به عنوان مثال رمزنگاری یک روش تامین امنیت اطلاعات ذخیره شده در یک مرکز اطلاعاتی یا اطلاعات ارسالی بین دو کاربر شبکه است. اما منظور از Safety (معادل واژهٔ «ایمنی» در زبان فارسی) رفتار درست سامانه در هر شرایطی از عملکرد (حتی در صورت بروز خطا) است.

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

Cipher vs. Code

هدف از کد کردن اطلاعات تغییر ساختار آن برای استفاده در کاربری‌های دیگر است. به عنوان مثال اطلاعات به کد بریل (Braille Code) تبدیل می‌شوند تا خواندن آن برای نابینایان مقدور گردد؛ یا اطلاعات به کد مورس (Morse Code) تبدیل می‌شوند تا بتوان آنها را از طریق تلگراف منتقل کرد. به همین ترتیب کدینگ‌های UTF7، UTF8، Unicode، ASCII و بسیاری دیگر، هر کدام یک روش کدینگ کاراکترهای نوشتاری هستند که سامانه‌های کامپیوتری امروزی استفاده می‌شوند. مثال دیگری از کد کردن‌ها نمایش اعداد ریاضی با کدینگ‌های مختلف Binary، Hex و Gray است.

بر اساس اصل اساسی کرکهف، در روش‌های رمزنگاری الگوریتم رمز کردن یا رمزگشایی نباید لزوما مخفی بماند. به عبارت دیگر، حتی اگر الگوریتم رمزنگاری لو برود، نباید اطلاعات رمز شده توسط این الگوریتم به راحتی فاش شوند. همین اصل تفاوت بنیادی کد کردن و رمز کردن را مشخص می‌کند. در کد کردن هر کاربر که به روش کد کردن آشنا باشد، می‌تواند اطلاعات را کد کرده (Encoding) یا از آن کد به کد مطلوب خود برگرداند (Decoding). در حالی که اطلاعات تبدیل شده توسط روش‌های رمزنگاری (علاوه بر الگوریتم) به کلید رمز (Key) نیز وابسته است و صرف آگاه بودن از الگوریتم امکان رمزگشایی (Decrypting) متنی که با کلید محرمانه‌ای رمز شده است (Encrypting) وجود ندارد.

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

Confidentiality vs. Integrity

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

اهم کاربرد الگوریتم‌های درهم‌سازی (Hashing) در همین راستا است و با استفاده از آنها می‌توان از اصالت پیام (Integrity) دریافتی مطمئن شد. گاهی نیز ممکن است محرمانگی مهم نبوده اما اصالت آن بسیار حائز اهمیت باشد. به عنوان مثال در صدور چک، مبلغ و سایر اطلاعات روی چک محرمانه نیست؛ اما این اطلاعات و به ویژه مبلغ چک نباید دستکاری شوند. در حالت کلی امکان جلوگیری از تغییر اطلاعات در کانال ارتباطی یا بازگرداندن اطلاعات تغییر یافته وجود نداشته و تنها می‌توان تغییر غیرمجاز را تشخیص داد.

Confidentiality vs. Authentication

در کنار محرمانه ماندن اطلاعات و اطمینان از اصالت آن، همواره باید مطمئن بود فرستندهٔ پیام همان کسی است که ادعا دارد. به ویژه آنکه در بسیاری از کاربردها محرمانگی اهمیتی نداشته و تنها هویت فرستنده مهم است. امضای دیجیتال (Digital Signature) راهکاری است برای تایید هویت طرف مقابل که روش‌های مختلف آن عموما بر اساس مفاهیم ریاضی و رمزنگاری کلید عمومی (نامتقارن) پایه‌گذاری شده‌اند.

Key vs. Password

گاوصندوقی را تصور کنید که باز شدن آن وابسته به اطلاع از کلمهٔ عبور است. اگر به هر نحوی بتوان این گاوصندوق را به صورت غیرمجاز باز کرد، محتوای آن بدون آگاهی از کلمهٔ عبور در اختیار مهاجم قرار می‌گیرد. در واقع کلمهٔ عبور (یا Password) نقش کنترل‌کننده‌ای را دارد که شاید بتوان آن را دور زد یا از مسیری وارد شد که نیاز به کنترل نباشد. زمانی که اطلاعات رمز می‌شوند، متن اصلی در دسترس قرار نداشته و امکان استخراج متن اصلی از متن رمز شده بدون اطلاع از کلید رمز وجود ندارد. به عبارت دیگر، کلید رمز (که عموما با عبارت Key یاد می‌شود) بر خلاف کلمهٔ عبور یک کنترل‌کننده نیست و بدون اطلاع از آن (اگر الگوریتم رمزنگاری به قدر کافی قدرتمند بوده و کلید رمز نیز به درستی انتخاب شده باشد) به هیچ عنوان نمی‌توان به متن اصلی دست یافت.

Symmetric Key Encryption vs. Asymmetric Key Encryption

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

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

Algorithms vs. Protocols

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

Common protocols vs. Standard protocols

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

استفاده صحیح از افعال «گذاشتن» و «گزاردن» و تفاوت کاربرد آن‌ها

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

اختلاف معانی افعال «گذاشتن» و «گزاردن»

همانطور که گفتیم، یکی از بهترین راه‌های تشخیص استفاده درست از این افعال، توجه به معنای آن‌ها است. این روش نه تنها برای دو فعل «گذاردن» و «گذاشتن»، بلکه در مورد تمام نمونه‌های مشابهی که تا حالا بررسی کرده‌ایم هم جواب داده است. این دو فعل که از ریشه‌های مختلفی هستند، معنای متنوعی هم دارند که استفاده از آن‌ها بستگی به معنی مورد نظر شما دارد.

فعل «گذاشتن»، معنای مختلفی از جمله؛ قرار دادن، ترک کردن، اجازه دادن، عبور کردن، جا دادن، وضع کردن و موارد این چنینی دارد. در ادامه و با ذکر مثال‌های بیشتر، کاربردهای مختلف این فعل را بهتر بررسی می‌کنیم.

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

کاربردهای متفاوت «گذاشتن»

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

  • گذاشتن به معنای «قرار دادن»: لباس‌ها را داخل کمد گذاشتم.
  • گذاشتن به معنای «ترک کردن»: او مرا به حال خودم گذاشت.
  • گذاشتن به معنای «اجازه دادن»: این بار مادرم گذاشت تا با شما بیایم.
  • گذاشتن به معنای «عبور کردن، طی کردن»: شب‌های زیادی را در آن بیابان گذاشتند (سپری کردند).
  • گذاشتن به معنای «جا دادن»: هر طور بود کتاب‌ها را در قفسه گذاشتم.
  • گذاشتن به معنای «وضع کردن»: وظیفه خود به عنوان قانونگذار را به درستی انجام دادند.

کاربردهای متفاوت «گزاردن»

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

  • گزاردن به معنای «بیان کردن»: سعی ما بر آن بود تا تمامی سخنان خود را در آن جمع بگزاریم (در ادبیات کهن).
  • گزاردن به معنای «پرداخت کردن»: شما به عنوان یک وام‌گزار وظیفه دارید تمامی اقساط را به موقع بپردازید.
  • گزاردن به معنای «انجام دادن»: بر من دِینی است که حج پدرم را به درستی بگزارم.
  • گزاردن به معنای «به جا آوردن و ادا کردن»: نمازگزاران پس از اقامه نماز در حیاط منتظر حاج آقا هستند.
  • گزاردن به معنای «رساندن»: پیغام شما را به درستی به پادشاه گزاردم.
  • گزاردن به معنای «تعبیر و یا ترجمه کردن»: تمام خواب گزاران از کار حضرت یوسف در حیرت ماندند.

اضافه شدن پیشوندها به فعل «گذاشتن»

اگرچه معانی مختلف فعل «گذاشتن» را با هم بررسی کردیم و دیدیم که این فعل در جاهای مختلف می‌تواند چگونه به کار رود. اما گاهی با اضافه شدن برخی پیشوندها، نه تنها معنی این فعل تغییر می‌کند، بلکه کاربرد ان هم تغییر کرده و باید به این مسئله بیشتر توجه کنیم. این پیشوندها عبارتند از مواردی مثل؛ «بر»، «فرو»، «وا»، «بار» و امثال آن‌ها که با آمدن در ابتدای این فعل، معنا را کاملاً تغییر می‌دهند. با ذکر چند مثال، بیشتر این افعال و معانی آن‌ها را توضیح می‌دهیم؛

  • بارگذاری: معادل فارسی واژه انگلیسی «Upload» به معنای قرار دادن اطلاعات روی سرورها
  • بارگذاشتن: که بیشتر برای قرار دادن ظرف غذا روی آتش به کار می‌رود. مثلا؛ مادربزرگ دیگ نذری را بارگذاشته است.
  • واگذاشتن: به معنای به حال خود گذاشتن یا فروختن. مثلا؛ پسرت را به حال خود واگذار. شرکتم را به برادرم واگذار کردم.
  • فروگذاشتن: به معنای کوتاهی کردن. مثلا؛ در انجام وظایف خود، از هیچ تلاشی فروگذار نباش.
  • برگذار کردن: انجام دادن. مثلا؛ مراسم تحلیف را به بهترین شکل برگذار کردید.