پشتیبانی: 09131253620
ارتباط با ما
تلگرام: 09131253620

برجسته ترین ها
گروه های مقاله ها
HyperLink


بررسی اصول امنیتی پایگاه های داده بخش شانزدهم تاریخ درج: ١٣٩۵/٠۴/٢٠

 3-10  رمز نگاری  

یکی از اصلی ترین امکاناتی که برای بالا بردن امنیت در SQLServer2005 گنجانده شده است ، رمز نگاری است. در این امکان ، داده‌ها با استفاده از عبارات T-SQL رمز نگاریی می‌شوند و در صورت نیاز رمزگشایی  شده و استفاده می‌شوند. بهتر است قبل از ذخیره کردن داده‌های حساس-مثلا کلمۀ عبور کارت‌های اعتباری- در پایگاه‌داده ، این داده‌ها بصورت رمز درآورده شوند تا در صورت فروپاشی سیستم امنیت پایگاه‌داده ، این داده‌های حساس ، امن باقی بمانند. 
SQLServer2005 چهار جفت از توابع رمز نگار/رمزگشا را ارائه می‌دهد که هر جفت یک  تکنیک خاص برای رمزنگاری را ارائه می‌دهد.
رمزنگاری کلمه عبور (PE) : این شیوه ساده ترین و در عین حال ضعیف ترین شیوه رمزنگاری است. داده‌ها با یک رشته کلمه رمز تعیین شده توسط کاربر رمزنگاری می‌شود و قدرت کلمه عبور انتخاب شده بررسی نمی‌شود.
رمزنگاری کلید نامتقارن  (AKE) : این شیوه قدرتمند ترین نوع رمزنگاری است چرا که از کلید‌های متفاوتی برای انجام عمل رمزنگاری و رمزگشایی استفاده می‌کند. نقطه ضعف این شیوه ، سرعت پایین آن است و در جایی که مقادیر عظیمی ‌از داده وجود دارد کارا نیست. تنها در مواردی که مهمترین موضوع در رابطه با داده‌ها امنیت باشد و کارایی اهمیت کمتری داشته باشد از این شیوه استفاده می‌کنند. مثلا وزارت امنیت ایالات متحده برای امن کردن داده‌های خود از این شیوه استفاده می‌کند. 
رمزنگاری کلید متقارن (SKE) : در این شیوه از یک کلید واحد برای رمزنگاری و رمزگشایی استفاده می‌شود. SQLServer2005 توسط دو دسته از توابع این عمل را انجام می‌دهد. که در دسته اول کلمه رمزی توسط کاربر ارائه می‌شود و در دسته دوم کلمه رمز به عنوان یک منبع در SQLServer ذخیره شده است.
رمزنگاری گواهینامه  (CE) : گواهینامه‌ها برای اثبات درستی هویت نویسندۀ یک کد و یا فرستندۀ یک داده استفاده می‌شود. 
3-10-1  رمزنگاری با استفاده از کلمه عبور کاربر 
این روش هنگامی ‌کارا است که کلمه عبور در سیستم ذخیره نشده ولی یک رشتۀ شناخته شده برای کاربر است. از آنجا که کلمه عبور در سیستم ذخیره نشده است دیگر نگران ذخیرۀ آن در یک مکان امن در سیستم نیستیم و این یکی از مزایای این روش است. برای رمزنگاری با استفاده از این روش از تابع EncryptByPassPhrase() استفاده می‌شود که مقداری را که باید رمزنگاری شود و عبارت عبور را به عنوان پارامتر می‌پذیرد. برای رمزگشایی از تابع DecryptByPassPhrase() عبارت عبور و رمز را به عنوان پارامتر می‌پذیرد.
با مثالی به ادامۀ بحث می‌پردازیم. فرض کنید در پایگاه‌داده university جدولی با عنوان tblStudent وجود دارد. 
مقادیر جدول tblStudent قبل از رمز نگاری 
شکل3-31 : مقادیر جدول tblStudent قبل از رمز نگاری
با استفاده از تابع EncryptByPassPhrase() عمل رمز نگاری را انجام می‌دهیم :
UPDATE tblStudent
SET sname = EncryptByPassPhrase('password', sname)

 مقادیر جدول tblStudent  پس از رمزنگاری
شکل 3-32 : مقادیر جدول tblStudent پس از رمزنگاری
مشاهده می‌شود که پس از رمزنگاری داده‌ها غیر قابل استفاده می‌شود و اگر کسی تا این مرحله پیش رفته باشد و به جداول دسترسی داشته باشد از رویت داده‌های حساس باز می‌ماند. برای مشاهده داده‌ها باید آنها را رمزگشایی کرد :
SELECT sname as "Encrypted"             ,CONVERT(varchar(50),DecryptByPassphrase('password', sname)) AS "Decrypted"
FROM tblStudent
نتیجۀ این انتخاب را در شکل2-32 مشاهده کنید.تابع CONVERT را به نوع دیگر تبدیل می‌کند. در اینجا این تابع عبارت رمزگشایی شده را به نوع varchar(50) تبدیل می‌کند. عملکرد این تابع همانند تابع CAST است.
 داده های رمزنگاری شده
شکل 3-33 : داده‌های رمزگشایی شده
3-10-2  رمزنگاری کلید متقارن
 بعد از روش قبل ، راحترین و ساده ترین متد برای رمزنگاری داده‌ها استفاده از کلید متقارن ذخیره شده در پایگاه‌داده است. برای انجام هر دو عمل رمزنگاری و رمزگشایی از یک کلید متقارن استفاده می‌شود. برای ایجاد یک کلید متقارن در پایگاه‌داده از دستور create symmetric key استفاده می‌شود. 
CREATE SYMMETRIC KEY key1
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY PASSWORD = 'password'
الگوریتم‌های موجود برای رمزنگاری کلید متقارن DES ، TRIPLE_DES ، RC2 ، RC4 ، DESX ، AES128 ، AES192 و AES256 هستند. 
برای رمزنگاری و یا رمزگشایی داده‌ها با استفاده از کلید متقارن ابتدا باید آنرا با استفاده از دستور OPEN SYMMETRIC KEY باز کنیم. تابع EncryptKeyBy() ،با استفاده از GUID   کلید رمزگذاری را انجام می‌دهد. این id با استفاده از تابع Key_GUID() بدست می‌آید.

OPEN SYMMETRIC KEY key1 DECRYPTION BY PASSWORD = 'password'  
UPDATE tblStudent
SET city = EncryptByKey(Key_GUID('key1'), city)

پس از اجرای عبارات فوق ستون city از جدول tblStudent به صورت رمز نوشته می‌شود. برای رمزگشایی از دستورات زیر استفاده می‌کنیم :
SELECT
    CONVERT(varchar(50), DecryptByKey(city)) 
    AS 'city'
    FROM tblStudent
 

تگها: اصول امنیتی database   امنیت پایگاه داده   امنیت در SQL Server   امنیت دیتابیس   رمزنگاری کلید متقارن   
 

HyperLink

ارسال نظر در مورد این مطلب
نام :  
آدرس ایمیل :  
متن پیام :  
کد امنیتی :  
   
   
نظری برای نمایش وجود ندارد
 
این مطلب را به اشتراک بگذارید: