معمولاً اطلاعات حساس موجود در بانکهای اطلاعاتی سازمانها به شکل Encrypt شده ذخیره میشوند تا به راحتی امکان دسترسی به آنها وجود نداشته باشد.
اما یکی از چالشهایی که اغلب سازمانها با آن مواجه هستند امکان دسترسی فیزیکی برخی از کاربران، هکرها و… به فایلهای فیزیکی بانکهای اطلاعاتی و نسخه پشتیبان آنها میباشد.
درصورت لیک شدن دیتابیس ممکن است آینده کاری شرکت به مشکل مواجه شود
Encryption چیست؟
Encryption در لغت به معنی پنهان کردن و یا رمز کردن میباشد. اما در علم کامپیوتر به معنی رمز کردن یا رمز گذاری دادهها از طریق یک الگوریتم خاص جهت محافظت از خود آنها است. معمولاً از یک کلید جهت انجام این عملیات استفاده میشود.
Decryption چیست؟
Decryption در لغت به معنی آشکار کردن و یا رمز گشایی میباشد. اما در علم کامپیوتر به معنی رمزگشایی دادهها با استفاده از کلیدی است که عملیات Encryption با آن انجام شده است.
Key چیست؟
Key یا کلید فرمول و یا روشی است که برای انجام عملیات Encryption و یا Decryption استفاده میشود.
روشهای Encrypt کردن اطلاعات در SQL Server
همانگونه که پیشتر اشاره شده اطلاعات حساس موجود در بانکهای اطلاعاتی معمولاً به صورت Encrypt شده ذخیره میشوند. در SQL Server برای Encrypt کردن این نوع اطلاعات چهار روش وجود دارد.
1– با استفاده از Passphrase (عبارت عبور) : در این روش عملیات Encryption و Decryption با استفاده از یک رمز عبور دریافتی از کاربر انجام میشود.
2- با استفاده از Symmetric Key (کلید متقارن) : در این روش از یک کلید برای انجام عملیات Encryption و Decryption استفاده میشود. برای ایجاد این نوع کلیدها در SQL Server از الگوریتمهایی مانند DES، Triple DES،RC4، DESX و… استفاده میشود.
3- با استفاده از Asymmetric Key (کلید نامتقارن) : در این روش از یک Private Key (کلید خصوصی) برای انجام عملیات Encryption و یک Public Key (کلید خصوصی) برای انجام عملیات Decryption استفاده میشود. برای ایجاد این نوع کلیدها در SQL Server از الگوریتمهایی مانند RSA_512، ،RSA_1024 و… استفاده میشود.
4- با استفاده از Certificate (گواهینامهها) : در SQL Server یک Public Key Certificate (گواهینامه کلید عمومی) به عنوان Certificate شناخته میشود. Certificate شامل یک Public Key (کلید عمومی) است که آن را به یک کاربر، دستگاه و یا سرویس نسبت میدهد و با استفاده از یک Private Key (کلید خصوصی) مرتبط به صورت انحصاری قابل شناسایی است.
سلسله مراتب Encryption در SQL Server
SQL Server از یک ساختار سلسله مراتبی برای انجام عملیات Encryption و مدیریت Key استفاده میکند.به طور کلی این ساختار در سه سطح زیر میباشد
1- در سطح سیستم عامل (Windows Level)
2- در سطح SQL Server (SQL Server Level)
3- در سطح بانک اطلاعاتی (Database Level)
در پایینترین سطح از این ساختار Data قرار دارد چیزی که هدف نهایی ما برای انجام عملیات Encryption میباشد. Data توسط Keyهای دیگر Encrypt میشود. همچنین Encrypt شدن این Key توسط سایر Keyهای دیگر نیز وجود دارد. در نهایت کلیه این کلیدها توسط Database Master Key یا DMK کد میشود. DMK نیز توسط Service Master Key یا SMK نگهداری میشود و در بالاترین سطح ویندوز از SMK توسط Data Protection API یا DPAPI محافظت به عمل میآورد.
TDE چیست؟
TDE (Transparent Data Encryption) به معنی رمزگذاری دادهها به صورت شفاف میباشد. با استفاده از این روش کلیه فایلهای بانک اطلاعاتی به طور خودکار Encrypt و Decrypt میشود.
این قابلیت در SQL Server 2008,2012 موجود بوده و شامل مزایای زیر میباشد.
1- جهت استفاده از آن نیازی به تغییر در Source برنامههای کاربردی نداشته و کلیه تنظیمات آن در سطح بانک اطلاعاتی و SQL Server میباشد.
2- انجام عملیات Encryption و Decryption به طور خودکار و بلادرنگ بر روی فایلهای بانک اطلاعاتی.
3- انجام عملیات Encryption بر روی کلیه Backupهای بانک اطلاعاتی اعم از Full Backup، Differential Backup، Log Backup و …
4- استفاده از حداقل منابع سرور برای انجام عملیات Encrypt و Decrypt کردن دادهها
5- با استفاده از این تکنولوژی چنانچه فایلها و نسخههای پشتیبان بانک اطلاعاتی شما به هر صورت از سازمان خارج شود امکان دسترسی به اطلاعات آن تا زمان ارائه Certificateهای ذخیره شده در پایگاه داده Master وجود نخواهد داشت.
TDE چگونه کار میکند؟
TDE با استفاده از یک کلید Encrypt شده (Database Encryption Key/DEK) که در Boot Record بانکاطلاعاتی وجود دارد کار میکند. کلید TDE با استفاده از یک Certicificate که در پایگاه داده Masterقرار دارد Encrypt شده است. همچنین کلید موجود در پایگاه داده Master توسط Service Master Key رمزگذاری شده است. در صورت به سرقت رفتن یکی از فایلها و یا نسخههای پشتیبان مربوط به بانک اطلاعاتی به سرقت رود محتوی آن بدون داشتن Cerificate موجود در پایگاه داده Master ارزشی ندارد.
زمانی که SQL Server بخواهد اطلاعات را از دیسک به Buffer Pool (بخشی از حافظه RAM متعلق به SQL Server) منتقل نماید عملیات Decryption با استفاده از DEK انجام میشود و در صورتیکه SQL Server خواهان انتقال اطلاعات موجود در Buffer Pool به دیسک باشد با استفاده از DEK عملیات Encryption را انجام میدهد. نکته مهمی که در این باره وجود دارد این است که SQL Server به طور خودکار این عملیات را انجام میدهد.
بنابراین چنانچه به هر نحوه فایلها و یا نسخه پشتیبان مربوط به بانک اطلاعاتی شما به بیرون دَرز کند حتماً به همان کلیدی که عملیات Encrypt و Decrypt با آن انجام شده نیاز خواهد داشت.
سلسله مراتب Encryption هنگام استفاده از TDE
در پایینترین سطح این ساختار Data قرار دارد که عملیات Encryption بر روی آن انجام میشود.عملیات Encryption بوسیله DEK یا Database Encryption Key انجام میشود. محل قرارگیری Data و DEK بر روی بانک اطلاعاتی شما میباشد.
همچنین SQL Server با استفاده از یک Certificate از DEK محافظت مینماید. محافظت از Certificate با استفاده از DMK یا Database Master Key میباشد و در نهایت DMK با استفاده از یک Service Master Key یا SMK محافظت میشود. لازم به ذکر است که به ازای یک Instance فقط یک نسخه از SMK وجود دارد که ایجاد آن بر عهده SQL Server میباشد.
برای اینکه TDE عملیات Encryptionرا بدرستی انجام بدهد باید DMK و Certificate بر روی بانک اطلاعاتی Master ایجاد شود.
حال چنانچه فایلهای بانک اطلاعاتی و یا نسخه پشتیبان بانک اطلاعاتی شما به سرقت رود بدون داشتن DMK و Certificate امکان دستیابی به اطلاعات موجود در آن امکانپذیر نخواهد بود.
قبل از اجرای رمز نگاری TDE به نکات زیر توجه کنید:
1- با توجه به اینکه عملیات Encrypt و Decrypt کردن دادهها بیشترین استفاده از CPU را میکند. ممکن است این عملیات باعث افزایش کارکرد CPU شود و در برخی از موارد کارایی Database پایین آید.
2- هنگامی که بانک اطلاعاتی شما با استفاده از TDE رمزگذاری شده است. به طور خودکار کلیه Backupهای (Full Backup, Differential Backup, Log Backup) مربوط به بانک اطلاعاتی Encrypt خواهند شد.