بانک های اطلاعاتی SQL Server 2005 ,SQL Server 2008 رمزنگاری را برای حفاظت از داده ها در مقابل حمله ی هکرها ارائه می دهند. هکرها ممکن است توانایی نفوذ به پایگاه داده های جداول را داشته باشند، اما با رمزنگاری داده ها آنها قدرت تشخیص و یا استفاده از آن را نخواهند داشت. امروزه رمزنگاری روی داده های حساس که در پایگاه داده ذخیره می شوند و همچنین در زمان انتقال در سراسر شبکه بین client و server بسیار مهم و ضروری است. در این مقاله قصد داریم نحوه رمزنگاری و رمزگشایی اطلاعات پایگاه داده SQL Server 2008 را برای شما عزیزان توضیح دهیم.
سلسله مراتب رمزنگاری در Sql server بر اساس ۳ مرحله امنیتی زیر مشخص می شود و هرکدام از این ۳ مرحله مکانیزم متفاوتی را برای ایمن ساختن انتقال داده بین شبکه های خارجی و محلی، انجام می دهند. این سطوح مختلف سلسله مراتب، اجازه می دهد سرویس های متعددی از (SQL Server 2008 ) بر روی یک سرور فیزیکی اجرا شوند.
[irp posts=”۸۹۳۵″ name=”معرفی نسخه ی SQL Server 2008 Enterprise و شرح چگونگی بازیابی فایل پشتیبانی سایر نسخه ها بر روی آن”]
- Windows level : بالاترین سطح جهت رمزنگاری بوده و از WINDOWS API استفاده می نماید.
- SQL Server level : سطح متوسط جهت رمزنگاری بوده و از کلید اصلی server استفاده می نماید.
- Data Base level : پایین ترین سطح جهت رمزنگاری بوده و ازکلید اصلی پایگاه داده استفاده می نماید.
انواع کلید جهت رمزنگاری
۱)کلید متقارن (Symmetric Key): سیستم رمزنگاری متقارن که در آن گیرنده و فرستنده یک پیام را به اشتراک می گذارند و از کلید مشترک برای رمزنگاری و رمزگشایی پیام استفاده می شود.
۲)کلید نامتقارن (Asymmetric Key): سیستم رمزنگاری نامتقارن که به عنوان رمز نگاری توسط کلید عمومی شناخته شده است، سیستمی است که فرستنده و گیرنده پیام دارای ۲کلید (عمومی و خصوصی) برای رمزنگاری و رمزگشایی پیام می باشند. این سیستم رمز نگاری بسیار پیچیده خواهد بود هنگامی که فرستنده قادر به رمزنگاری پیام است ولی قادر به رمزگشایی آن نیست. به عبارت دیگر گیرنده قادر به بازگشایی است اما قادر به رمزنگاری نیست.
راه دیگری برای رمزنگاری داده ها از طریق گواهی های معتبر (Certificate) است.
Certificate یا گواهی، یک امضای دیجیتالی است که ارزش یا مقدار یک کلید عمومی را به هویت یک فرد شناخته شده یا یک دستگاه یا یک سرویس خاص انتساب می دهد.
حال جهت تست رمز نگاری های فوق یک پایگاه داده ساده در ایجاد می نماییم.
انواع رمز نگاری در SQL Server 2008
۱-Database Level (سطح پایگاه داده)
این سطح از تمام داده ها در پایگاه داده محافظت می کند. گرچه هرگاه داده ای از پایگاه داده خوانده می شود یا در آن نوشته می شود کل پایگاه داده احتیاج بهرمزگشایی دارد. این رمز گشایی، فرآیندی پیچیده خواهد بود و به هیچ عنوان راه حلی سودمند جهت رمز نگاری اطلاعات پایگاه داده بشمار نخواهد آمد.
۲-Column(or row) level (رمز نگاری سطح یا ستونی)
این روش از روش قبلی بیشتر مورد استفاده قرار می گیرد. در اینجا سطر یا ستون هایی که شامل داده های مهمی است باید رمزنگاری شوند. این باعث کاهش بار CPU در مقایسه با سطح رمزگشایی پایگاه داده است و باید توجه داشت اگر ستونی به عنوان کلید اصلی استفاده شود و یا در عبارت های مقایسه ای (Where clause ,join conditions) مورد استفاده قرار گیرد، ممکن است کل ستون پردازش شود.
هرپایگاه داده یک کلید اصلی دارد. کلید اصلی پایگاه داده، یک کلید متقارن است که از کلید خصوصی Certificate ها و کلید های نامتقارن پایگاه داده توسط الگوریتم رمز نگاری سه لایه DES به همراه رمز عبور کاربر، محافظت می نماید.
در ادامه اقدام به ایجاد یک کلید اصلی می نماییم.
Certificate ها جهت محافظت از کلید های اصلی بکار گرفته می شوند و SQL 2008 قادر به ایجاد گواهی های معتبر دارای امضای دیجیتالی از نوع X.509 می باشد. در ادامه یک Certificate جهت رمزنگاری ایجاد می نماییم.
کلید متقارن با استفاده از گزینه های مختلفی مانند certificate ها و پسورد, وکلید متقارن قادر به رمزنگاری است.
و الگوریتم های مختلفی برای رمزنگاری آن موجود است مانند:
DES, TRIPLE_DES, RC2, RC4, RC4_128, DESX, AES_128, AES_192, and AES_256
در ادامه یک کلید متقارن ایجاد و یک ستون از نوع varbinary به جدول اصلی اضافه نموده که مقادیر رمزنگاری شده مربوط به SecondCol را در خود ذخیره می نماید
قبل از آنکه کلید مورد استفاده قرار گیرد، نیاز به رمز گشایی با همان روشی است که رمز نگاری صورت گرفته است، در این مثال ما از متد رمز نگاری توسط Certificate استفاده نموده ایم و برای رمز گشایی نیز مطابق زیر از متد EncryptKey پس از رمز گشایی کلید متقارن جهت درج اطلاعات در ستون EncryptSecondCol استفاده می نماییم
می توان جهت اطمینان از درج اطلاعات به صورت رمزنگاری شده از یک SELECT Query استفاده نمایید که در صورت صحت عملیات انجام شده نتیجه ای مانند شکل زیر نشان داده خواهد شد.
USE EncryptTest GO SELECT * FROM TestTable GO
و در آخر کاربران دارای مجوز میتوانند از متد DecryptbyKey استفاده نمایند تا اطلاعات اصلی را از ستون های رمز گشایی شده استخراج نمایند. نکته ای را که در رمز گشایی نباید فراموش کرد این است که نوع داده ستون اصلی و ستون رمز نگاری شده باید یکسان باشد(مطابق شکل زیر).
در نظر داشته باشید برای انتقال دیتابیس رمزنگاری شدهی خود به وب سایت خود نیاز به یک خرید هاست ویندوزی مناسب خواهید داشت که SQL Server نگارش شما را پشتیبانی نماید.
[irp posts=”۱۱۴۰۸″ name=”انواع حملات هکری hacker یا هک قانونمند چیست | معرفی انواع هکر ها و انواع حمله به سرور”]