رمزنگاری داده های یا (Encryption)
به مثال زیر توجه کنید :
یک فایل متنی را در نظر بگیرید که حاوی یک سری اطلاعات محرمانه و شخصی شماست . از آنجایی که از کامپیوتری که فایل شما در آن ذخیره شده کاربران دیگری نیز استفاده میکنند ، اطلاعات داخل این فایل متنی همیشه در خطر استفاده غیر مجاز کاربران دیگر است .
همانطور که گفته شد اولین راهی که برای حفظ این فایل به نظر میرسد اینست که دسترسی کاربران دیگر روی این فایل برداشته شود و فقط شما اجازه دسترسی به آن را داشته باشید ( مجوزهای NTFS ) . اما روش دیگری هم برای محافظت از این فایل وجود دارد که به مراتب مطمئن تر از روش قبلی است . در این درس به آموزش این روش که به نام رمز نگاری داده ها ( Encryption ) معروف است میپردازیم :
رمز نگاری روشی است که از قدیم برای ارسال اطلاعات متنی مهم و محرمانه از آن استفاده میشد . به این شکل که دو طرفی که نیاز به یک ارتباط امن از طریق ارسال نامه داشتند ، به طور توافقی برای حروف و کلمات معنی دار که در متن نامه ها استفاده مشد ، معادلهای نامفهوم تعیین میکردند ، مثلا به جای کلمه " سلام " کلمه نامفهوم " ■ȸÜ║ߎ " را معین میکردند .
از این پس دو طرف نامه های خود را با استفاده از این حروف و علائم مینوشتند و برای هم ارسال میکردند و در مقصد هم گیرنده نامه جای حروف و علائم نامفهوم را با معادل اصلی آنها عوض میکرد و متن اصلی نامه را به دست می آورد . حال اگر این نامه در بین راه به دست افراد غیر مجاز می افتاد ، از متن آن چیزی نمی فهمیدند چون فقط یک سری حروف و علائم نامفهوم در آن نوشته شده بود .
سیستم عامل ویندوز هم از روشی تقریبا شبیه به این برای حفظ اطلاعات محرمانه یک کاربر استفاده میکند که به توضیح آن میپردازیم :
همانطور که میدانید هر کاراکتر یک کد بین 0 تا 255 دارد که به نام کد اسکی کاراکتر معروف است :
کد اسکی چند کاراکترهای متنی :
|
کاراکترهای A…Z : از کد 65 تا 90 کاراکترهای a…z : از کد 97 تا 122 اعداد 9...0 : از کد 48 تا 57
|
قبل از ادامه لازم به ذکر است که سیستم عامل ویندوز برای رمز نگاری اطلاعات از یک کلید ( Public Key ) استفاده میکند . این کلید برای هر User account متفاوت است و در زمان ایجاد یک User account ، ساخته میشود و به آن اختصاص می یابد. کلید میتواند یک کاراکتر ، علامت ، عدد و یا مجموعه ای از آنها باشد . مفهوم کامل کلید در مثال زیر قابل درک است.
یک فایل متنی را در نظر بگیرید که قسمتی از متن آن ، کلمه “ SALAM “ است . ما قصد داریم برای درک بهتر مطلب این قسمت از فایل را تقریبا به روشی که سیستم عامل ویندوز از آن استفاده میکند ، رمزنگاری کنیم :
سیستم عامل ویندوز ابتدا کد اسکی همه کاراکترهای داخل فایل را در نظر میگیرد :
|
کاراکتر |
M |
A |
L |
A |
S |
|
کد اسکی |
77 |
65 |
76 |
65 |
83 |
سپس با استفاده از یک الگوریتم خاص یک عملیات ریاضی روی کلید و تک تک کاراکترها انجام میدهد .
در اینجا به منظور ساده تر شدن مثال ، این عملیات ریاضی را عملیات جمع ( + ) و کلید رمزنگاری را عدد 45 در نظر میگیریم.
|
کاراکتر اصلی |
M |
A |
L |
A |
S |
|
کد اسکی معادل |
77 |
65 |
76 |
65 |
83 |
|
عملیات جمع با کلید |
45 |
45 |
45 |
45 |
45 |
|
حاصل عملیات |
122 |
110 |
121 |
110 |
128 |
|
کاراکتر معادل عدد جدید |
z |
n |
y |
n |
Ç |
سپس ویندوز به جای تک تک کاراکترهای داخل فایل متنی ، معادل آنها را که در این عملیات بدست آمده را مینویسد:
|
به جای کلمه “ SALAM ” کلمه نامفهوم “ Çnynz “ در فایل متنی قرار میگیرد
|
در مثالی که ذکر شد ، یک عملیات رمزنگاری یا Encrypt ساده انجام شد و ویندوز با استفاده از Public key کاربر ، فایل را Encrypt کرد .
حال اگر همین کاربری که فایل را رمز نگاری کرده با استفاده از User account خودش به سیستم Logon کند و فایل را باز کند ، ویندوز اطلاعات داخل فایل را به صورت خودکار از حالت رمز نگاری شده ( Encrypt ) خارج میکند ( Decrypt میکند ) و کاربر را قادر میسازد تا اطلاعات داخل فایل را بخواند و از آنها استفاده کند.
اگر کاربر دیگری این فایل را باز کند ، یک سری متن ناخوانا را مشاهده میکند ( یا با پیغام Access denied مواجه میشود و محتویات فایل را نمی بیند ) و قادر به استفاده از آنها نخواهد بود . چون همانطور که گفته شد ، هر کاربر یک Public key خاص دارد و زمانی که یک فایل با Public key یک کاربر Encrypt شود ، با همان Public key قابل Decrypt شدن است .
توجه کنید که Decrypt به این معنی است که همین عملیاتی که روی تک تک کاراکتر ها انجام شد و کاراکتر جدیدی به وجود آمد ( Encrypt )، به صورت برعکس انجام شود یعنی :
|
کاراکتر Encrypt شده |
z |
n |
y |
n |
Ç |
|
کد اسکی معادل |
122 |
110 |
121 |
110 |
128 |
|
عملیات برعکس که در اینجا تفریق ( - ) است |
45 |
45 |
45 |
45 |
45 |
|
حاصل عملیات |
77 |
65 |
76 |
65 |
83 |
|
کاراکتر معادل عدد جدید |
M |
A |
L |
A |
S |
با استفاده از این روش اطلاعات محرمانه کاربران به خوبی حفظ شده و حتی اگر فایلها کپی برداری شوند ، قابل استفاده نخواهند بود .
سیستم Encryption یا ( EFS encrypting file system) یکی از مزایای سیستم فایل NTFS است و این قابلیت را به ما میدهد تا بتوانیم یک فایل یا یک شاخه را Encrypt کنیم . در صورتی که یک شاخه را Encrypt کنیم ، هر فایلی که داخل آن باشد و یا بعدا کپی شود ، به حالت Encrypt تبدیل میشود و در صورتی که فایلی را از داخل آن به محل دیگری کپی کنیم ، از حالت Encrypt خارج میشود و به حالت Decrypt تبدیل میشود.
برای رمزنگاری یا Encrypt کردن یک فایل یا شاخه باید روی آن Properties بگیریم و وارد قسمت Advanced شویم :
و در پنجره ای که باز میشود گزینه Encrypt contents to secure data را علامت بزنیم .
توجه داشته باشید در صورتی که قصد Encrypt کردن یک فایل دورن یک شاخه را داشته باشیم ، ویندوز با یک پیغام به شما پیشنهاد میکند که فایل و شاخه مادر را با هم Encrypt کنید ( Encrypt the file and the parent folder). که دراین صورت این فایل و هر فایل و زیر شاخه ای که پس از این ساخته شود ، Encrypt می شود و فایلهای موجود Encrypt نخواهند شد.
و در صورتی که گزینه Encrypt the file only را انتخاب کنید ، فقط همین فایل Encrypt می شود .
در صورتی که قصد Encrypt کردن یک شاخه را داشته باشید ، ویندوز پیغامی مبنی بر اینکه آیا عملیات Encryption فقط روی شاخه انجام شود (Apply changes to this folder only) به ما میدهد ، که در این صورت فقط فایلها و زیر شاخه هایی که از این پس در این شاخه ساخته شوند ، Encrypt خواهند شد و فایلها و زیر شاخه های موجود Encrypt نخواهند شد .
و در صورتی که گزینه Apply changes to this folder, subfolders and files را انتخاب کنیم ، این شاخه و تمامی فایلها و زیرشاخه های موجود ، و فایلها و زیرشاخه هایی که از این پس ساخته شوند ، Encrypt میشوند .
در انتها با زدن کلید Ok در این پنجره ، فایل یا شاخه مورد نظر به شکل خواسته شده Encrypt میشود و جهت شناسایی بهتر توسط کاربر ، نام فایل با رنگ سبز نوشته میشود .
عملیات Encryption قابلیت اجرا از طریق خط فرمان با استفاده از فرمان Cipher را نیز دارد . این فرمان این قابلیت را به مدیر میدهد تا از طریق خط فرمان فایل یا شاخه ای را Encrypt کند . شکل کلی این فرمان به صورت زیر است :
cipher [/e | /d] [/s:folder_name] [/a] [file_name [...]]
|
/e |
عملیات Encryption را روی فایل یا شاخه مورد نظر انجام میدهد. |
|
/d |
عملیات Decryption را روی فایل یا شاخه مورد نظر انجام میدهد. |
|
/s |
به وسیله این سوئیچ ، شاخه مورد نظر را برای عملیات Encryption یا Decryption را مشخص میکنیم . این سوئیچ فقط شاخه مورد نظر ، زیرشاخه های داخل آن و فایلها و زیر شاخه هایی که از این پس ساخته شوند را Encrypt میکند و روی فایلهای موجود هیچ عملیاتی انجام نمیدهد. |
|
/a |
تمامی فایلها و زیرشاخه های موجود داخل شاخه را Encrypt می کند . |
|
File_name |
به همراه سوئیچ /a ، می توانیم نام یک فایل را برای Encrypt شدن وارد کنیم . |
چند نکته در مورد عملیات رمزنگاری یا Encryption :
ü این عملیات فقط در درایوهایی با سیستم فایل NTFS قابل انجام است .
ü عملیات Encryption و NTFS compression با هم روی یک فایل یا شاخه قابل پیاده سازی نیستند .
ü فیلهایی که دارای خاصیت سیستمی ( System ) هستند ، و فایلهایی که درون شاخه Windows هستند را نمیتوان Encrypt کرد .
ü در صورتی که فایل یا شاخه ای که Encrypt شده را به درایوی با سیستم فایل FAT منتقل یا کپی کنیم ، خاصیت Encrypt از بین میرود و فایل یا شاخه به حالت Decrypt تبدیل میشود .