دسته OWASP: MASVS-CRYPTO: رمزنگاری
نمای کلی
با وجود استفاده گسترده از رمزنگاری برای محافظت از محرمانه بودن و یکپارچگی داده ها، زمانی که توسعه دهندگان ناخواسته الگوریتم های رمزنگاری ضعیف یا قدیمی را پیاده سازی می کنند، خطر قابل توجهی ایجاد می شود. این آسیبپذیری ناشی از ضعفهای ذاتی در این الگوریتمها است که میتوانند توسط بازیگران مخربی که قدرت محاسباتی یا دانش لازم را دارند مورد سوء استفاده قرار گیرند. عواقب چنین بهره برداری می تواند شدید باشد و به طور بالقوه منجر به دسترسی غیرمجاز، نقض داده ها و دستکاری اطلاعات حساس شود.
تاثیر
داده های حساس را می توان در معرض دید، اصلاح یا جعل قرار داد. الگوریتمهای رمزنگاری شکسته یا مخاطرهآمیز ممکن است منجر به آسیبپذیری شوند و میتوانند برای رمزگشایی اطلاعات حساس، دستکاری دادهها یا جعل هویت موجودیتهای قانونی مورد سوء استفاده قرار گیرند. تأثیر سوء استفاده از چنین آسیبپذیریها میتواند از نقض دادهها و زیانهای مالی گرفته تا آسیب به شهرت و از دست دادن اعتماد کاربران باشد.
ریسک: توابع هش رمزنگاری ضعیف یا خراب
استفاده از توابع هش رمزنگاری ضعیف یا شکسته (مانند MD5
یا SHA1
) خطر قابل توجهی برای امنیت و یکپارچگی داده ها ایجاد می کند. توابع هش برای ایجاد اثر انگشت (هش) منحصر به فرد و با طول ثابت از داده های ورودی طراحی شده اند که آنها را برای اهداف مختلف از جمله تأیید صحت داده ها، ذخیره رمز عبور و امضای دیجیتال مفید می کند. با این حال، هنگامی که توابع هش ضعیف یا به خطر افتاده استفاده می شود، آسیب پذیری های متعددی ممکن است ایجاد شود:
- حملات برخورد : توابع هش ضعیف مستعد حملات برخورد هستند، جایی که مهاجم دو ورودی متفاوت را پیدا می کند که مقدار هش یکسانی را تولید می کنند. این می تواند به آنها اجازه دهد تا داده های مخرب را بدون شناسایی جایگزین داده های مشروع کنند و یکپارچگی داده ها را به خطر بیندازند.
- نقض داده ها : اگر رمزهای عبور با الگوریتم ضعیف هش شوند، نقض موفقیت آمیز یک سیستم می تواند منجر به افشای اعتبار کاربر شود. سپس مهاجمان میتوانند از جداول رنگین کمان یا تکنیکهای دیگر برای شکستن پسوردها استفاده کنند و به حسابها دسترسی غیرمجاز پیدا کنند.
- رد امضای دیجیتال : توابع هش ضعیفی که در امضای دیجیتال استفاده میشود، میتواند برای ایجاد امضای جعلی مورد سوء استفاده قرار گیرد، که تعیین صحت و یکپارچگی اسناد یا پیامها را دشوار میکند.
اقدامات کاهشی
برای کاهش این خطرات، استفاده از توابع هش رمزنگاری قوی و به خوبی بررسی شده مانند SHA-2
یا SHA-3
، و به روز نگه داشتن آنها با کشف آسیب پذیری های جدید بسیار مهم است. علاوه بر این، اتخاذ شیوههای امنیتی مانند نمکزدایی گذرواژهها و استفاده از الگوریتمهای هشسازی خاص رمز عبور مانند bcrypt
یا Argon2
میتواند حفاظت از دادهها را بیشتر کند.
ریسک: عملکردهای رمزگذاری رمزنگاری ضعیف یا خراب
استفاده از توابع رمزگذاری رمزنگاری ضعیف یا شکسته (مانند DES
یا RC4
) خطرات شدیدی را برای محرمانه بودن داده های حساس به همراه دارد. رمزگذاری برای محافظت از اطلاعات با تبدیل آنها به قالبی غیرقابل خواندن طراحی شده است، اما اگر الگوریتم رمزگذاری ناقص باشد، می توان از این حفاظت ها عبور کرد:
- نقض داده ها: الگوریتم های رمزگذاری ضعیف مستعد حملات مختلف، از جمله حملات brute-force، حملات متن ساده شناخته شده، و تکنیک های تحلیل رمز هستند. در صورت موفقیت آمیز بودن، این حملات می تواند داده های رمزگذاری شده را افشا کند و اجازه دسترسی غیرمجاز به اطلاعات حساس مانند جزئیات شخصی، سوابق مالی یا داده های تجاری محرمانه را بدهد.
- دستکاری و دستکاری داده ها: حتی اگر مهاجم نتواند به طور کامل داده ها را رمزگشایی کند، در صورت ضعیف بودن الگوریتم رمزگذاری، ممکن است همچنان قادر به دستکاری آن ها بدون شناسایی باشد. این می تواند منجر به تغییرات غیرمجاز داده ها شود که به طور بالقوه منجر به کلاهبرداری، ارائه نادرست یا سایر فعالیت های مخرب می شود.
اقدامات کاهشی
از الگوریتم های رمزنگاری قوی در توابع رمزگذاری استفاده کنید
برای کاهش این خطرات، استفاده از الگوریتم های رمزنگاری قوی و به خوبی بررسی شده و پیروی از بهترین شیوه ها برای مدیریت کلید و اجرای رمزگذاری بسیار مهم است. بهروزرسانی منظم الگوریتمهای رمزگذاری و اطلاعرسانی در مورد تهدیدات نوظهور نیز برای حفظ امنیت دادهها ضروری است.
برخی از الگوریتم های پیش فرض توصیه شده برای استفاده:
- رمزگذاری متقارن:
-
AES-128
/AES-256
با حالتGCM
-
Chacha20
-
- رمزگذاری نامتقارن:
-
RSA-2048
/RSA-4096
با بالشتکOAEP
-
برای کاهش تلههای رایج، از اصول اولیه ایمن از یک کتابخانه رمزنگاری استفاده کنید
در حالی که انتخاب یک الگوریتم رمزگذاری مناسب بسیار مهم است، برای به حداقل رساندن آسیبپذیریهای امنیتی، استفاده از یک کتابخانه رمزنگاری را در نظر بگیرید که یک API ساده ارائه میدهد و بر پیکربندیهای پیشفرض ایمن تأکید دارد. این رویکرد نه تنها امنیت برنامه های شما را تقویت می کند، بلکه احتمال ایجاد آسیب پذیری ها را از طریق خطاهای کدنویسی به میزان قابل توجهی کاهش می دهد. به عنوان مثال، Tink با ارائه دو گزینه متمایز، گزینه های رمزگذاری را ساده می کند: رمزگذاری AEAD
و Hybrid
، که تصمیم گیری آگاهانه امنیتی را برای توسعه دهندگان آسان تر می کند.
ریسک: عملکردهای امضای رمزنگاری ضعیف یا خراب
استفاده از توابع امضای رمزنگاری ضعیف یا شکسته (مانند RSA-PKCS#1 v1.5
، یا توابع مبتنی بر توابع هش ضعیف) خطرات شدیدی را برای یکپارچگی داده ها و ارتباطات ایجاد می کند. امضای دیجیتالی طراحی شده است تا احراز هویت، عدم انکار و یکپارچگی داده ها را فراهم کند و اطمینان حاصل کند که یک پیام یا سند از یک فرستنده خاص منشأ می گیرد و در آن دستکاری نشده است. با این حال، زمانی که الگوریتم امضای اساسی ناقص باشد، این تضمین ها می توانند به خطر بیفتند:
- جعل امضا : الگوریتمهای امضای ضعیف میتوانند در برابر حملاتی آسیبپذیر باشند که به عوامل مخرب اجازه میدهد امضاهای جعلی ایجاد کنند. این بدان معنی است که آنها می توانند هویت افراد قانونی را جعل کنند، اسناد را جعل کنند یا پیام ها را بدون شناسایی دستکاری کنند.
- رد امضا : اگر یک الگوریتم امضا خراب شود، امضاکننده ممکن است به دروغ ادعا کند که سندی را امضا نکرده است، که اصل عدم انکار را زیر سوال میبرد و چالشهای قانونی و لجستیکی ایجاد میکند.
- دستکاری و دستکاری داده ها : در سناریوهایی که از امضاها برای محافظت از یکپارچگی داده ها استفاده می شود، یک الگوریتم ضعیف می تواند به مهاجمان اجازه دهد تا داده ها را بدون باطل کردن امضا تغییر دهند، که منجر به دستکاری ناشناخته و به خطر انداختن احتمالی اطلاعات حیاتی می شود.
اقدامات کاهشی
از الگوریتم های امضای رمزنگاری قوی استفاده کنید
برای کاهش این خطرات، استفاده از الگوریتم های امضای رمزنگاری قوی و به خوبی بررسی شده بسیار مهم است:
برای کاهش تلههای رایج، از اصول اولیه ایمن از یک کتابخانه رمزنگاری استفاده کنید
انتخاب الگوریتم امضای مناسب ضروری است، اما برای به حداقل رساندن آسیبپذیریهای امنیتی، یک کتابخانه رمزنگاری را در نظر بگیرید که به طور پیشفرض تضمینهای امنیتی قوی ارائه میکند. به عنوان مثال، Tink با ارائه ECDSA
با منحنی های ایمن به عنوان گزینه پیش فرض خود، همه در یک API ساده و جامع، انتخاب امضا را ساده می کند. این رویکرد نه تنها امنیت را افزایش می دهد، بلکه با حذف نیاز به پیکربندی پیچیده یا تصمیم گیری، توسعه را ساده می کند.
منابع
- کتابخانه رمزنگاری تینک
- کیفیت برنامه اندروید: رمزنگاری
- امضای دیجیتال با Tink
- رمزگذاری ترکیبی با Tink
- رمزگذاری احراز هویت شده با Tink
- هش رمزنگاری ضعیف یا خراب و عملکردهای رمزگذاری پرزهای امنیتی اندروید
- CWE-327: استفاده از الگوریتم رمزنگاری شکسته یا مخاطره آمیز
- CWE-328: استفاده از هش ضعیف
- CWE-780: استفاده از الگوریتم RSA بدون OAEP
- صفحه NIST درباره توابع هش تایید شده
- استاندارد رمزگذاری پیشرفته (ویکی پدیا)
- الگوریتم هش ایمن 2 (ویکی پدیا)
- الگوریتم هش ایمن 3 (ویکی پدیا)
- سیستم رمزنگاری RSA (ویکی پدیا)
- الگوریتم امضای دیجیتال منحنی بیضوی (ویکی پدیا)
- رمز جریان ChaCha (ویکی پدیا)
- رمز عبور نمک (ویکی پدیا)
- سیستم رمزنگاری ترکیبی (ویکی پدیا)
- رمزگذاری تایید شده