به زنجیرهای از کارکترها که در الگوریتم رمزنگاری دادهها مورد استفاده قرار میگیرد، کلید رمزنگاری گفته میشود. از این کلید به منظور تغییر دادن دادهها استفاده میشود به طوری که آنها تصادفی به نظر برسند. درست مانند یک کلید فیزیکی، دادهها را طوری رمزنگاری میکند که فقط فردی که کلید مناسب و درست را داشته باشد، میتواند آن را رمزگشایی نماید.
داده اصلی تحت عنوان Plaintext معروف است و به دادهای که رمزنگاری شده است Ciphertext گفته میشود.
کلیدهای ابتدایی رمزنگاری
پیش از ظهور رایانهها، دادهها را به روش Substitution Cipher (روش جایگزینی) رمزنگاری میکردند، به این ترتیب که تک تک حروف با حروف دیگری جایگزین میشدند. به عنوان مثال در این روش، هر حرف با حرف بعدی آن در الفبا جایگزین میشد، در این صورت کلمه “Hello” به “IFMMP” تبدیل میشود.
H E L L O
1+ 1+ 1+ 1+ 1+
I F M M P
در ظاهر پیام “IFMMP” فاقد معنا است اما اگر شخصی کلید مناسب آن را بداند، میتواند با جایگزین کردن صحیح حروف به متن اصلی (Plaintext) دست پیدا کند. به عنوان مثال، کلید “حرف الفبا منهای یک” است، بنابراین فرد دریافت کننده هر یک از کارکترها را با حرف قبلی آن در الفبا جایگزین میکند و به متن اصلی دست پیدا میکند.
I F M M P
1- 1- 1- 1- 1-
H E L L O
چنین رمزهایی را میتوان با تجزیه و تحلیل ساده آماری به دست آورد زیرا برخی از حروف بیشتر از بقیه در کلمات استفاده میشوند. برای مقابله با چنین مشکلی، سیستمی تحت عنوان one-time pad به وجود آمد.
پد یک بار مصرف، کلیدی است که فقط برای یک بار استفاده میشود و تعداد کارکترهای آن حداقل باید به تعداد کارکترهای متن اصلی (Plaintext) باشد. به عبارت دیگر هر کارکتر توسط کارکتر دیگری جایگزین میشود که تعداد جابجایی آن مشخص شده است.
به عنوان مثال برای رمزگذاری کلمه “Hello” از یک پد یک بار مصرف با مقادیر 7، 17، 24، 9 و 11 استفاده میشود.
H E L L O
11 9 24 17 7
در مثال قبلی برای هر کارکتر، تنها به اندازه یک حرف در حروف الفبا بالا میرفتیم (حرف به علاوهی یک)؛ اکنون برای هر کارکتر از تعداد مختلفی جابجایی استفاده میکنیم. به بیان واضحتر، هفت حرف به اولین حرف یعنی H، هفده حرف به دومین حرف یعنی E و به همین ترتیب اضافه میکنیم.
در این روش چنانچه بر اساس محاسبات از حرف Z عبور کنیم، دوباره به اول حروف الفبا برمیگردیم. بنابراین برای رمزنگاری کلمه Hello به این روش، عبارت زیر را خواهیم داشت:
H E L L O
11 9 24 17 7
O V J U Z
به منظور برقراری ارتباط با پد یک بار مصرف (one-time pad)، هر دو طرف میبایست کلیدهای یکسان برای هر پیام را داشته باشند (رمزگذاری متقارن) و هر بار که پیام جدید ردوبدل میشود، از یک کلید جدید استفاده میگردد.
برای شخص سومی که پیام “ovjuz” را دریافت میکند، پیامی بدون معنا و تصادفی است؛ اما افرادی که کلید 7 ، 17، 24 ، 9 و 11 را دارند، موفق به دستیابی به متن اصلی میشوند.
بنابراین، یک پیام ساده را میتوان با استفاده از کلید رمزگذاری و رمزگشایی نمود.
کلیدهای مدرن رمزنگاری داده ها
مثالهای فوق، نمونههایی از رمزنگاری اولیه بودند که نشان میدهند چطور با استفاده از زنجیرهای از اطلاعات تصادفی میتوان Plaintext را به Ciphertext تبدیل نمود؛ اما کلیدهای رمزنگاری امروزی بسیار پیچیدهتر شدهاند.
رمزنگاری مدرن به جای روش سادهی افزودن و کم کردن، از فرمولهای پیچیده ریاضی تحت عنوان الگوریتم استفاده میکنند. در ضمن کلیدهای مدرن بسیار فراتر از زنجیرهای از اعداد هستند و به صورت تصادفی میباشند.
این امر چندین دلیل دارد:
- کامپیوترها قادر به انجام محاسبات بسیار پیچیده در مدت کوتاهتری در مقایسه با رمزنگاری انسانی هستند و رمزنگاری پیچیده را نه تنها ممکن، بلکه ضروری میدانند.
- کامپیوترها میتوانند اطلاعات را در سطوح باینری تغییر دهند، یعنی صفرها (0) و یکهایی (1) که دادهها را تشکیل دادهاند. درحالیکه رمزنگاری اولیه این کار را در سطح حروف و اعداد انجام میدهد.
- چنانچه دادههای رمزنگاری شده به اندازه کافی تصادفی نباشند، یک برنامه کامپیوتری به سادگی قادر به رمزگشایی آنها میباشد. بنابراین تصادفی بودن کامل و حقیقی برای امنیت آن، امری ضروری و مهم به شمار میآید.
هرچند که نوشتن برنامهای که بتوان به صورت کامل و صددرصد دادهها را به صورت تصادفی در بیاورد غیر ممکن است، زیرا رایانهها در این زمینه از انسانها بسیار پیشرفتهتر هستند.
کلید رمزنگاری با کمک الگوریتمهای مرتبط میتواند طوری دادهها را تغییر دهد که فراتر از شناخت انسانی باشد.
به عنوان مثال، برای رمزنگاری کلمه Hello با کمک الگوریتمهای پیشرفته عبارت “KZ0KVey8l1c=” را به عنوان Ciphertext خواهیم داشت.
استفاده از رمزگذاری SSL در HTTPS
قابل ذکر است رمزگذاری به دو شکل اتفاق میافتد: رمزنگاری متقارن و رمزگذاری نامتقارن (یا رمزنگاری Public Key).
در رمزنگاری متقارن، هر دو طرف از یک کلید مشترک برای تبدیل Plaintext (متن اصلی) به Ciphertext (متن رمزنگاری شده) و برعکس استفاده میکنند.
در رمزگذاری نامتقارن (رمزگذاری Public Key) طرفین از کلیدهای متفاوتی استفاده میکنند. یکی از کلیدها Public Key و دیگری Private Key نامیده میشود. دلیل نامگذاری آن این است که یکی از طرفین، کلید را مخفی نگه داشته و هرگز به اشتراک نمیگذارد.
زمانی که متن اصلی (Plaintext) با Public Key رمزنگاری میشود تنها Private Key است که میتواند آن را رمزگشایی کند، نه Public Key. البته به روش دیگری نیز کار میکند؛ به عبارت دیگر وقتی متن اصلی با Private Key رمزگذاری میشود تنها Public Key قادر به رمزگشایی آن میباشد.
SSL (که امروزه TLS نامیده میشود) یک پروتکل رمزنگاری است که به منظور ایمن نگه داشتن ارتباطات مورد استفاده قرار میگیرد و وب سایتی که به جای HTTP از HTTPS استفاده میکند از این نوع رمزنگاری استفاده مینماید.
یک وب سایت یا یک برنامه تحت وب در TLS/SSL دارای کلید عمومی (Public Key) و کلید خصوصی (Private Key) میباشد. Public Key به طور عمومی در SSL Certificate وب سایت به اشتراک گذاشته میشود تا همه بتوانند آن را ببینند. Private Key بر روی سرور مبدا نصب شده و هرگز به اشتراک گذاشته نمیشود.
2 Comments on “کلید رمزنگاری داده ها (Cryptographic Key) چیست؟”
yuhan
می گوید:در این اواخر دهه 20 شبکه های کوانتومی رو دارن توسعه میدن.احتمالا برای پیچیده کردن رمزنگاری دانشمندان سراغ رمزنگاری های کوانتومی برن که رفتن البته.
زینب شرفی
می گوید:ممنون از توضیحاتتون