رمزگذاری عبارت است از دریافت یک متن ساده که برای انسان قابل خواندن است و اجرای الگوریتمی روی آن و تبدیل آن به متنی که غیرقابل خواندن گردد. شکل ناخوانای متن، ciphertext (رمزمتن) نامیده می شود. رمزگشایی نیز برعکس رمزگذاری است و متن رمزگذاری شده رابه متن اصلی ساده تبدیل می کند.
الگوریتم های رمزگذاری عمومی هستند و به خوبی آزمایش شده اند و به دو نوع تقسیم می شوند:
متقارن (symmetric) و نامتقارن(asymmetric)
الگوریتمهای متقارن از یک تک کلید رمزنگاری برای رمزگذاری و رمزگشایی استفاده میکنند. این بدان معناست که کلیدی که برای رمزگذاری داده های خود استفاده می کنید، باید به گیرنده منتقل شود تا آنها بتوانند آن داده ها را رمزگشایی کنند. این مسئله نحوه تبادل و ذخیره ایمن کلید رمزگذاری و رمزگشایی را مورد توجه قرار می دهد. اگر نتوانید از کلید خود محافظت کنید، صرف نظر از اینکه الگوریتم رمزگذاری چقدر پیچیده باشد، داده های خصوصی رمزگذاری شده در معرض دید قرار می گیرند. مهم است که همیشه از الگوریتم هایی که در سطح گسترده ای پذیرفته شده اند استفاده کنید. استاندارد رمزگذاری پیشرفته یا AES توسط دولت ایالات متحده پذیرفته شد و در حال تبدیل شدن به استاندارد جهانی است.
الگوریتم های متقارن از این مزیت برخوردارند که سریع و مناسب برای داده های بزرگ هستند.
در قدم بعد، الگوریتمهای نامتقارن را که رمزنگاری کلید عمومی/خصوصی نیز نامیده میشود، مرور خواهیم کرد. این به این دلیل است که آنها از یک جفت کلید حاوی یک کلید عمومی و یک کلید خصوصی استفاده می کنند. کلیدها با هم تولید می شوند و کلید عمومی به سایر طرف ها توزیع می شود تا داده های آنها رمزگذاری شود. کلید خصوصی مخفی نگه داشته می شود و برای رمزگشایی داده هایی که با کلید عمومی رمزگذاری شده اند استفاده می شود.
فرض کنید میخواهم یک پیام امن با دوستم مبادله کنم. او یک جفت کلید ایجاد می کند و کلید عمومی را برای من ارسال می کند که من از آن برای رمزگذاری پیام استفاده می کنم. سپس پیام را برای او می فرستم و او آن را با یک کلید خصوصی منطبق رمزگشایی می کند. ما هرگز مجبور نیستیم یک کلید مخفی را در این فرآیند به اشتراک بگذاریم.
رمزگذاری نامتقارن متکی بر محاسبات پیچیده است و کندتر از رمزگذاری متقارن است. بنابراین معمولا برای رمزگذاری داده های کوچکتر استفاده می شود. کلید مخفی مورد استفاده در رمزگذاری متقارن اغلب با رمزنگاری کلید عمومی رمزگذاری می شود. این یک رویکرد ترکیبی است که هر دو نوع رمزگذاری را ترکیب می کند. پیام ها با یک الگوریتم متقارن ایمن می شوند و کلید مخفی با استفاده از رمزگذاری نامتقارن محافظت می شود.
راه دیگر برای محافظت از داده ها استفاده از توابع هش(hash) است. این توابع مجموعه بزرگی از داده ها را می گیرند و یک مقدار هش با طول ثابت ایجاد می کنند. تبدیل مقدار هش شده به نسخه اصلی دشوار یا غیرممکن است. به همین دلیل است که رمزهای عبور اغلب قبل از ذخیره در پایگاه داده هش می شوند. اگر دو مجموعه از داده ها یکسان باشند، بدیهی است که هش آنها نیز باید یکسان باشد. حتی یک تغییر کوچک در داده ها هش متفاوتی ایجاد می کند. امضاهای دیجیتال (Digital signatures) و متد های قابل استفاده برای یکپارچگی داده ها(data integrity) اغلب از توابع هش استفاده می کنند.
الگوریتم های هش مانند MD5 و SHA-1 در زمره الگوریتم های ضعیفتر در نظر گرفته می شوند. بنابراین، برای رمزگذاری حتما از الگوریتم قوی تری مانند SHA-256 استفاده کنید.