رمزگذاری داده ها با استفاده از SQL Server 2014
چهارشنبه 19 اسفند 1394با توجه به افزایش تعداد جرائم داده در جهان، امنیت دیتابیس یک نگرانی عمده در سازمان های امروزی ، بخصوص سازمانهایی با اطلاعات حساس، است. برای جلوگیری از این مورد از روش رمزگذاری داده ها استفاده میکنند که امروزه SQL Server روشهای رمز گذاری را فراهم میکند.
رمزنگاری 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
- 6k بازدید
- 8 تشکر