مسلماً در برنامهها مواقعی وجود دارد که لازم است دیتاهای خود را به صورت رمزنگاری شده داشته باشید. در این زمینه الگوریتمهای متنوعی در داتنت وجود دارد. یکی از این الگوریتمها، AES است.
الگوریتم AES یک الگوریتم رمزنگاری متقارن است که در .NET Core به صورت گسترده استفاده میشود. این الگوریتم از کلیدهای مختلف برای رمزنگاری و رمزگشایی دادهها استفاده میکند. در .NET Core، میتوانید با استفاده از متد System.Security.Cryptography.Aes.Create() یک نمونه از AES ایجاد کنید. سپس میتوانید این نمونه را برای رمزنگاری و رمزگشایی دادهها استفاده کنید. توجه داشته باشید که مدیریت کلیدها بسیار مهم است و امنیت دادههای رمزنگاری شده شما فقط به اندازه امنیت کلیدهای شما است.
برای این الگوریتم وجود 2 پارامتر KEY و IV (Initialization Vector) مهم بوده و کارهای اصلی با این دو پارامتر انجام خواهد شد. با توجه به اینکه ممکن است شما به این فکر افتاده باشید که این دو پارامتر را یکبار ایجاد کرده و چندین بار استفاده کنید، نکات زیر به شما کمک خواهد کرد:
- به هیچ عنوان پارامترها را در سورسکد خود Hard-Code نکنید!
- میتوانید از Windows Data Protection API (DPAPI) استفاده نمایید.
- میتوانید کلیدهای خود را بر روی هارد ذخیره کرده و از آنها استفاده نمایید.
- میتوانید برای هر Session ایجاد شده یک جفت کلید ایجاد نمایید.
- در سازمانها میتوان از قابلیت HSM استفاده کرد.
- میتوانید کلیدها را در Registery ذخیره نمایید.
- پیشنهاد میشود کلید خود را به بخشهای مختلفی تقسیم کنید (مثلاً APP و DB).
- توجه داشته باشید طول KEY 32 کاراکتر یا 256 بیت و طول IV 16 کاراکتر یا 128 بیت میتواند باشد.
این نمونه کد هم میتواند شما را در پیادهسازی یاری نماید.