رمزگذاری داده ها با استفاده از SQL Server 2014

چهارشنبه 19 اسفند 1394

با توجه به افزایش تعداد جرائم داده در جهان، امنیت دیتابیس یک نگرانی عمده در سازمان های امروزی ، بخصوص سازمانهایی با اطلاعات حساس، است. برای جلوگیری از این مورد از روش رمزگذاری داده ها استفاده میکنند که امروزه SQL Server روشهای رمز گذاری را فراهم میکند.

 رمزگذاری داده ها با استفاده از SQL Server 2014

رمزنگاری  Symmetric

این الگوریتم هم داده های رمزگذاری نشده را می گیرد و داده های رمزگذاری شده را  برمیگرداند ، و هم داده های رمزگذاری شده را میگیرد و داده های رمزنگاری نشده را برمیگرداند و در هر دو صورت کار میکند. از  آن می توان برای کلید رمزگذاری داده ها در جدول SQL استفاده کرد. الگوریتم Symmetric سریعتر از رمزنگاری aSymmetric است

رمزنگاری کلید Symmetric
در روش کلید رمزنگاری Symmetric ، هر دو فرستنده و گیرنده باید از  همان کلید که داده ها را رمز دار میکند، برای رمزگذاری داده استفاده کنند. پیاده سازی  آسانی دارد.

رمزنگاری کلید Asymmetric:

 تکنیک کلید Asymmetric متفاوت از تکنیک کلید symmetric است. در این سیستم که فرستنده و گیرنده یک پیام،از  یک جفت کلید رمزنگاری ، که شامل  یک کلید عمومی و یک کلید خصوصی برای رمزگذاری و رمزگشایی پیام است ،  استفاده میکنند .این یک سیستم نسبتا پیچیده است که در آن فرستنده می تواند از  کلید خود برای رمز نگاری  پیام استفاده کند، اما او نمی تواند آن را رمزگشایی کند. گیرنده، از سوی دیگر، می تواند از کلید خود برای رمزگشایی پیام استفاده کند، اما او نمی تواند آن  را کدگذاری کند.

انواع الگوریتم رمزنگاری Symmetric عبارتند از:

DES (DES)

Triple DES with 128 bit key (TRIPLE_DES)

Triple DES with 192 bit key (DESX)

RC2 (RC2)

RC4 (RC4)

RC4 with 128 bit key (RC4_128)

AES with 128 bit key (AES_128)

AES with 192 bit key (AES_192)

AES with 256 bit key (AES_256)

DES

این تابع کلید های 48 بیتی و 32 بیت  Ri   را برای تولید  یک خروجی 32 بیتی و چهار عملیات ساخته شده ، اعمال میکند.

XOR

expansion permutation

group of S-boxes

straight permutation

TripleDES : این نسخه بهبود یافته الگوریتم  DES  است. و  56 بیت از یک کلید 64 بیتی  را برای رمزگذاری پیام های با اندازه ثابت در  بلوک های داده ها  استفاده میکند . Triple DES  از سه DES استفاده میکند.
 
ADVANTAGE : اندازه های کلیدی DES3  بزرگتر از DES است.
DISADVANTAGE :  پردازش 3DES بسیار آهسته است.

RC2:
این جایگزینی برای  DES است. RC2 رمز گذاری داده ها در بلوک های 64 بیتی و دارای یک اندازه کلید متغیر از 8 تا 128 بیت در افزایش 8 بیتی است. قدرت الگوریتم های رمزنگاری در طول کلید آنها  نهفته است. اگر اندازه کلید بزرگ باشد ،پس الگوریتم رمزگذاری آنها قوی تر است.

توضیح بیشتر  در مورد  DES سه گانه با 192 بیت. این الگوریتم در نظر گرفته شده  امن و سریع است.

مراحل ایجاد کلید symmetric و استفاده در رمزگذاری دیتابیس: قبل از ایجاد کلید symmetric ما نیاز به ایجاد کلید master و یکcertificate ، به عنوان محافظ از  ذخایر کلید symmetric داریم.

  ایجاد دیتابیس Master Key

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘myStrongPassword’  

 ایجاد certificate

CREATE CERTIFICATE MyCertificateName  
WITH SUBJECT =’Label for Certificate’ 

پس از ایجاد کلید master و certificate ،  در حال حاضر کلید symmetricرا  به certificate اضافه میکنیم

ایجاد Symmetric Key

    CREATE SYMMETRIC KEY MySymmetrickeyName  
    WITH ALGORITHM = TRIPLE_DES ENCRYPTION  
    BY CERTIFICATE MyCertificateName  

پس از ایجاد کلید symmetric  ؛ برای رمزگذاری / رمزگشایی داده ها از آن  استفاده میکنیم. مرحله اول، ما نیاز به باز کردن کلید symmetric برای رمزگذاری / رمزگشایی داده ها داریم.

  کوئری open Symmetric key

    OPEN SYMMETRIC KEY MySymmetricKeyName  
    DECRYPTION BY CERTIFICATE MyCertificateName  

در حال حاضر، با استفاده از کوئری زیر می توانیم  از تابع رمزگذاری برای رمزگذاری داده ها  استفاده کنیم.

کوئری Encrypting Data

    DECLARE @Result varbinary(256)  
    SET @Result = ENcryptByKey(Key_GUID(‘MySymmetricKeyName’)),  
        @ValueToEncrypt)  
    Decrypt Data Query  
    DECLARE @Result varbinary(max)  
    SET @Result = ENcryptByKey(Key_GUID(‘MySymmetricKeyName’)),  
        @ValueToEncrypt)  

مراحل  پیاده سازی ویژگی های رمزگذاری در دیتابیس ،
مرحله 1:  برای اجرای فرایند رمزنگاری ، برای ایجاد جدول user  کوئری مینویسیم.
مرحله 2:  برای قرار دادن داده ها در جدول user کوئری مینویسیم.
مرحله 3: یک master key در دیتابیس با استفاده از کوئری زیر  ایجاد میکنیم.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'EncryptionUser@123'


مرحله 4: حالا certificate  را در همان دیتابیس با استفاده از کوئری زیر ایجاد میکنیم.

CREATE CERTIFICATE UserTestCert WITH SUBJECT = 'EncryptionUserCert'


مرحله 5: ساخت کلید symmetric.

CREATE SYMMETRIC KEY EncryptTableKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION
BY CERTIFICATE UserTestCert


مرحله 6: پس از ایجاد کلید symmetric در دیتابیس، از این کلید برای رمزگذاری و رمزگشایی داده ها استفاده کنید.
مرحله 7: پس از بروز رسانی دادههای  Query ، آن را در حالت رمزگذاری شده ،  اجرا کنید .
گام 8:  برای رمزگشایی اطلاعات کوئری مینویسیم.

کوئری برای رها کردن کلید و certificate از دیتابیس

    CLOSE SYMMETRIC KEY EncryptTableKey  
    GO  
    DROP SYMMETRIC KEY EncryptTableKey  
    GO  
    DROP CERTIFICATE EncryptionUserCert  
    GO  
    DROP MASTER KEY  
    GO  

مزایای استفاده از تکنیک رمزنگاری:
تامین امنیت برنامه از کاربران غیر مجاز.
حفاظت از سرقت هویت
مورد استفاده برای اطلاعات بسیار حساس مانند  اطلاعات دفاعی، مالی، پزشکی.

معایب رمزگذاری:
اگر کلید و یا certificate به خطر بیافتد، بیشترین آسیب را میبیند.
آهسته در عملکرد

نتیجه

رمزگذاری یک ویژگی امنیتی بسیار مهم در SQL Server است. کلید Asymmetric دارای یک رویکرد رمزگذاری قوی است. رمزگذاری قوی ،  در  پردازش آهسته تر است و از زمان طولانی تری برای رمز دار کردن داده استفاده میکند. هنگامی که مقدار زیادی از اطلاعات برای  رمزنگاری وجود دارد، پیشنهاد می شود  رمزگذاری با استفاده از یک کلید symmetric انجام شود . همچنین، آن  سریع تر از  کلید asymmetric است.  توصیه می شود  فشرده سازی داده ها را قبل از رمزنگاری انجام دهید ، زیرا  داده های رمزگذاری شده نمی تواند فشرده شوند.

آموزش نصب sql server 2017

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید