
آموزش رمزنگاری Cryptography در .NET Core
آموزش ویدئویی رمزنگاری (Cryptography) در .NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ساختن اپلیکیشن های ایمن با رمزنگاری (Cryptography) در دات نت است که با نام اصلی Building Secure Applications with Cryptography in .NET از شرکت Pluralsight منتشر شده است.
رمزنگاری (Cryptography) چیست؟
در فضای برنامه نویسی با دات نت مکانیزم Cryptography و یا رمزنگاری با پیاده سازی گستره وسیعی از الگوها و همچنین کلاس های مختلف انجام شده است. این الگو ها و کلاس ها اجازه می دهد تا شما بتوانید بسادگی یک الگوریتم جدید را اضافه کرده و یا از پیاده سازی از هم موجود استفاده کنید. برای مثال برای ایجاد کردن یک الگوریتم کلید عمومی به سادگی می توانید از کلاس AsymmetricAlgorithm استفاده کنید. برای ایجاد کردن یک پیاده سازی جدید از یک الگوریتم خاص نیز کافی است که از یک کلاس غیر Abstract ارث بری کنید. الگوریتم های مربوط به Cryptography در دات نت چگونه پیاده سازی می شود؟

به عنوان یک مثال، از پیاده سازی های مختلف موجود از الگوریتم های رمزنگاری در دات نت الگوریتم های متقارن و یا Symmetric را در نظر بگیرید. کلاس پایه تمام الگوریتم های متقارن SymmetricAlgorithm می باشد که توسط کلاس های دیگر از قبیل Triple DES ارث بری می شود. البته استفاده کردن از کلاس Triple DES توصیه نمیگردد. برای انتخاب الگوریتم های مختلف دلایل مختلفی از قبیل Data Integrity و یا جامعیت داده ها، Data Privacy و یا خصوصی بودن داده ها و یا حتی تولید کردن کلید را در نظر خواهید گرفت. الگوریتم های متقارن و الگوریتم هایی که Hashing برای ما انجام می دهند برای محافظت کردن Integrity مربوط به داده ها و جلوگیری کردن از تغییر نامتعارف آن ها مورد استفاده قرار می گیرند. علاوه بر این آموزش، می توانید از آموزش رمزنگاری Cryptography در دات نت نیز دیدن کنید.
کاربرد Cryptography در برنامههای دات نت
Cryptography یا رمزنگاری یکی از پایههای اصلی امنیت نرمافزار است و برای محافظت از اطلاعات در برابر دسترسی غیرمجاز، بررسی صحت دادهها و تأیید هویت یا منشأ اطلاعات استفاده میشود. در محیط .NET، کلاسها و APIهای مختلفی برای انجام عملیات رمزنگاری در دسترس هستند که امکان استفاده از الگوریتمهای شناختهشده را فراهم میکنند. توسعهدهندگان با شناخت این امکانات میتوانند قابلیتهای امنیتی را در بخشهای مختلف برنامه پیادهسازی کنند و تصمیمهای مناسبتری برای حفاظت از دادهها بگیرند.
انتخاب روش رمزنگاری به هدفی بستگی دارد که برنامه باید به آن دست پیدا کند. برای مثال، Hashing برای تولید یک مقدار ثابتطول از دادهها کاربرد دارد، در حالی که Encryption برای محافظت از محرمانگی اطلاعات استفاده میشود. امضای دیجیتال نیز امکان بررسی اصالت و صحت پیام را فراهم میکند. این مفاهیم با وجود ارتباط نزدیک، جایگزین یکدیگر نیستند. در این آموزش با روشهای مختلف رمزنگاری در دات نت آشنا میشوید تا بتوانید تفاوت کاربردهای آنها را بهتر درک کنید.
تفاوت Symmetric Encryption و Asymmetric Encryption
در Symmetric Encryption، رمزگذاری و رمزگشایی با استفاده از یک کلید مشترک انجام میشود. این روش برای محافظت از حجم زیادی از دادهها مناسب است، اما نگهداری و انتقال امن کلید میان طرفهای ارتباط اهمیت زیادی دارد. اگر کلید در اختیار افراد غیرمجاز قرار بگیرد، محرمانگی اطلاعات ممکن است به خطر بیفتد. به همین دلیل، طراحی یک سیستم مبتنی بر رمزنگاری متقارن فقط به انتخاب الگوریتم محدود نمیشود و مدیریت کلید نیز بخش مهمی از پیادهسازی محسوب میشود.
در مقابل، Asymmetric Encryption از یک جفت کلید عمومی و خصوصی استفاده میکند که هرکدام نقش مشخصی در عملیات رمزنگاری دارند. این روش در سناریوهایی مانند تبادل امن کلید و برخی فرایندهای مرتبط با ارتباطات امن کاربرد دارد. الگوریتمهای متقارن و نامتقارن از نظر عملکرد و هزینه پردازشی تفاوت دارند و معمولاً برای اهداف متفاوتی به کار میروند. در این دوره با هر دو رویکرد و همچنین Hybrid Encryption آشنا میشوید تا درک کنید چگونه میتوان از ویژگیهای آنها در طراحی سیستمهای امن استفاده کرد.
Hashing و ذخیرهسازی امن رمز عبور
Hashing فرایندی است که داده ورودی را به یک مقدار با طول مشخص تبدیل میکند. برخلاف رمزگذاری معمولی، Hashing برای بازیابی مستقیم داده اولیه طراحی نشده است؛ به همین دلیل، در سناریوهایی مانند بررسی صحت دادهها و ذخیرهسازی رمز عبور کاربرد دارد. البته استفاده از یک الگوریتم Hash عمومی بهتنهایی برای نگهداری امن Passwordها کافی نیست. برای این منظور باید از الگوریتمهای تخصصی ذخیرهسازی رمز عبور استفاده کرد که امکان اعمال Salt و تنظیم هزینه محاسباتی را فراهم میکنند.
در پیادهسازی امنیتی، انتخاب الگوریتم مناسب و نحوه استفاده از آن بهاندازه شناخت مفهوم Hashing اهمیت دارد. رمزهای عبور نباید به شکل متن ساده ذخیره شوند و روش انتخابشده باید در برابر تلاشهای متداول برای حدسزدن رمز مقاوم باشد. در این آموزش، الگوریتمهای Hashing و اصول ذخیرهسازی ایمن Passwordها در کنار سایر روشهای Cryptography بررسی میشوند. این مباحث به توسعهدهندگان دات نت کمک میکنند تفاوت میان حفاظت از محرمانگی داده و نگهداری امن اطلاعات احراز هویت را بهتر بشناسند.
Digital Signature و کاربرد آن در امنیت نرمافزار
Digital Signature یا امضای دیجیتال روشی رمزنگاریشده برای بررسی اصالت و صحت دادهها است. در یک سازوکار متداول، امضا با استفاده از کلید خصوصی ایجاد میشود و با کلید عمومی متناظر قابل بررسی است. این فرایند به گیرنده کمک میکند تشخیص دهد آیا داده از دارنده کلید خصوصی موردنظر آمده و آیا پس از امضا تغییر کرده است یا خیر. امضای دیجیتال با Encryption تفاوت دارد؛ زیرا هدف اصلی آن محرمانهکردن محتوا نیست، بلکه فراهمکردن امکان بررسی اصالت و تمامیت اطلاعات است.
در اپلیکیشنهای دات نت، آشنایی با Digital Signatures در کنار سایر روشهای رمزنگاری به طراحی راهکارهای امنیتی مناسب کمک میکند. بسته به نیاز برنامه، ممکن است لازم باشد محرمانگی داده، صحت محتوا و هویت امضاکننده بهصورت جداگانه مدیریت شوند. همچنین محافظت از کلید خصوصی و انتخاب الگوریتم مناسب، نقش مهمی در امنیت این سازوکار دارند. این آموزش با بررسی امضای دیجیتال و Hybrid Encryption، شناخت شما را از روشهای مختلف محافظت از دادهها در برنامههای مبتنی بر .NET گسترش میدهد.
سرفصل مطالب آموزش ویدئویی رمزنگاری (Cryptography) در .NET Core
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: مقدمه
- مقدمه بر رمزنگاری رمزنگاری و یا Cryptography چیست؟ بررسی مباحث امنیتی در Cryptography
فصل سوم: تولید اعداد تصادفی رمز شده
- مقدمه
- چرا اعداد تصادفی مهم هستند؟
- بررسی System.Random و مشکلات مربوط به آن
- تولید کردن اعداد تصادفی به صورت ایمن با استفاده از RNGCryptoProvider
- بررسی عملی کلاس RNGCryptoServiceProvider
- جمع بندی
فصل چهارم: بررسی الگوریتم های Hashing
- مقدمه
- مکانیزم Hashing چیست؟
- بررسی MD5 و Secure Hash
- بررسی عملی Hashing
- معرفی Hashed Message Authentication Codes
- بررسی عملی Hashed Message Authentication Codes
- جمع بندی
فصل پنجم: ذخیره سازی ایمن پسوردها
- مقدمه
- چگونه پسورد ها را ذخیره نکنیم؟
- بررسی Password Based Key Derivation Functions
- بررسی عملی Password Based Key Derivation Functions
- جمع بندی
فصل ششم: بررسی رمزنگاری متقارن و یا Symmetric Encryption
- مقدمه
- رمزنگاری متقارن و یا Symmetric Encryption چیست؟
- بررسی DES و Triple DES
- بررسی Advanced Encryption Standard و یا AES
- بررسی عملی Advanced Encryption Standard و یا AES
- بررسی AES GCM و AES CCM
- بررسی عملی AES GCM
- مدیریت کلید ها و محافظت از داده ها
- بررسی عملی مدیریت کلید ها و محافظت از داده ها
- جمع بندی
فصل هفتم: رمزنگاری نامتقارن و یا Asymmetric Encryption
- مقدمه
- رمزنگاری نامتقارن و یا Asymmetric Encryption چیست؟
- بررسی RSA
- مباحث مربوط به Key Derivation و رمزنگاری
- استفاده از کلاس RSACryptoServiceProvider
- استفاده عملی از کلاس RSACryptoServiceProvider
- استفاده کردن از کلاس RSA
- بررسی عملی کلاس RSA
- جمع بندی
فصل هشتم: بررسی امضای دیجیتال و یا Digital Signatures
- مقدمه
- امضای دیجیتال و یا Digital Signatures چیست؟
- استفاده کردن از Signature Formatter ها
- بررسی عملی Signature Formatter ها
- بررسی کلاس های Digital Signatures و RSA در کنار یکدیگر
- جمع بندی
فصل نهم: بررسی رمزنگاری دو رگه و یا Hybrid Encryption
- مقدمه
- بازبینی مباحث امنیتی مربوط به Cryptography
- معرفی کردن Hybrid Encryption
- بررسی عملی Hybrid Encryption
- اضافه کردن Integrity Check ها
- اضافه کردن عملی Integrity Check ها
- اضافه کردن Digital Signatures
- اضافه کردن عملی Digital Signatures
- استفاده کردن از AES GCM و کلاس RSA
- جمع بندی
فصل دهم: جمع بندی دوره آموزشی
- جمع بندی دوره آموزشی
- منابع بیشتر






