ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
الگوریتم‌های رمزنگاری با كلید نامتقارن

روش نامتقارن Asymmetric

قسمت قبلی در مورد الگوریتم‌های رمزنگاری متقارن DES ، 3DES و AES توضیح دادیم كه از یک كلید برای رمزنگاری و رمزگشایی استفاده می كنند. در الگوریتم‌های مذكور در صورتی كه كلید رمزنگاری به سرقت رود محرمانگی اطلاعات نیز از بین خواهد رفت.الگوریتم‌های رمزنگاری با كلید نامتقارن از كلیدهای مختلفی برای رمزنگاری و رمزگشایی استفاده می‌كنند. بسیاری از سیستمها اجازه می‌دهند كه یكی از كلیدها كلید عمومی یا (public key) منتشر شود در حالی كه دیگری كلید خصوصی یا (private key) توسط صاحبش حفظ می‌شود فرستنده پیام، متن را با كلید عمومی گیرنده، كد می‌كند و گیرنده آن را با كلید اختصاصی خود رمزگشایی می‌کند. بعبارتی تنها با كلید خصوصی گیرنده می‌توان متن كد شده را به متن اولیه صحیح تبدیل كرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی ‌تواند از متن كدشده به متن اصلی دست یابد، بنابراین پیام كدشده برای هر گیرنده‌ای، به جز گیرنده مورد نظر فرستنده، بی ‌معنی خواهد بود معمول ترین سیستم نامتقارن به عنوان RSA شناخته می‌شود. (این حروف اول نام پدید آورندگان آن یعنی Rivest ،Shamir و Adlemen است) این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن از هویت ارسال كننده پیغام) را به خوبی رمزنگاری انجام می‌دهد. الگوریتم RSA از دو كلید برای رمزنگاری استفاده می‌کند: كلید خصوصی و كلید عمومی در الگوریتم مذكور تفاوتی بین توانایی عملیاتی كلید عمومی و خصوصی وجود ندارد و یك كلید می‌تواند هم به عنوان كلید خصوصی به كار رود و هم به عنوان كلید عمومی كلیدهای RSA با استفاده از روش های ریاضی و با تركیب اعداد اول تولید می‌شوند. بزرگترین عددها با ضرب اعداد كوچك به دست می آیند و این اعداد كوچك از لحاظ ریاضی به هم وابسته هستند و دانستن یكی از آن‌ها منجر به شناسایی دیگر اعداد اول به كار رفته در كلید می‌شود. این وضعیتی است كه در استفاده از كلید های عمومی و خصوصی مورد نظر است. البته در صورتی كه عدد خیلی بزرگ باشد، این كار به راحتی قابل انجام نیست و وضعیت های گمراه كننده بسیاری وجود دارند تنها تركیب درست از اعداد اول موجود در كلید رمزنگاری، قادر به رمزگشایی پیغام است امنیت الگوریتم RSA و الگوریتم‌های مشابه آن وابسته به استفاده از اعداد خیلی بزرگ است و بیشتر نسخه های RSA از اعداد 154 رقمی یا 512 بیتی به عنوان كلید استفاده می كنند. دسترسی به فاكتورهای اعداد اول اعداد خیلی بزرگ كه بیش از 100 رقم دارند كار بسیار مشكلی است. البته برخی از محققان توانسته اند با تلاش بسیار اعداد بزرگ را بشكنند ولی این كار برای هكرها جهت ورود به یك سیستم یا سر در آوردن از یك پیغام مقرون به صرفه نمی باشد برای پرهیز از پیچیدگی بحث فرض کنید فرستنده پیام جفت عدد صحیح و بزرگ (e,n) را به عنوان کلید عمومی برای رمزنگاری اطلاعات خود در اختیار دارد. در طرف مقابل، گیرنده نیز جفت عدد (d,n) را برای رمزگشایی پیام به کار می برد. بدیهی است که دو جفت عدد (e,n) و (d,n) با یکدیگر ارتباط زیرکانه ای دارند ولی این ارتباط یه گونه ای نیست که بتوان با در اختیار داشتن e و n براحتی d را استنتاج کرد. با فرض وجود چنین کلیدهایی، الگوریتم RSA در نهایت سادگی به صورت زیر بیان می‌شود:
الف) پیامی که باید رمز شود به بلوک‌های k کاراکتری (k بایتی) تقسیم بندی می‌شود.
ب) هر بلوک طبق قاعده ای کاملاً دلخواه به یک عدد صحیح با نام P تبدیل می گردد.
ج) با جفت عدد (e,n) به ازای یکایک بلوک‌های P، اعداد جدیدی طبق رابطه زیر بدست می آید:
C=(P)^e mod n

د) کدهای C به جای کدهای اصلی P ارسال می‌شوند.
روش رمزگشایی داده ها نیز مثل روش رمزنگاری است، یعنی با در اختیار داشتن جفت عدد (d,n) بلوک‌های رمز شده بصورت زیر از رمز خارج خواهند شد:
P=(C)^d mod n

حال برای درک بهتر به طرح یک مثال ساده و کوچک می پردازیم :
فرض کنید بخواهیم رشته ی M="catsanddogs" را رمز کنیم. برای سادگی این رشته ی کاراکتری را به بلوک‌های دوتایی تقسیم کرده و سپس هر بلوک را به یک عدد صحیح تبدیل می‌کنیم. قاعده تبدیل در این مثال عبارت است از: برای کاراکتر a عدد 00، برای b عدد 01 ، و به همین ترتیب تا z که عدد 25 در نظر گرفته و جایگذاری می‌شود
سپس در هر بلوک دوتایی عدد متناظر با هر کاراکتر پشت سر هم قرار می‌گیرد تا کد بلوک را بسازد: (این الگو کاملا دلخواه و قراردادی است). فرض کنید فرستنده جفت عدد صحیح (3763 و 27) معادل (e,n) را برای رمزنگاری بلوک‌ها اختیار کرده باشد. برای رمزنگاری هر بلوک عدد معادل آن به توان e و سپس باقیمانده تقسیم آن بر n محاسبه می‌شود تا بلوک رمز شده بدست آید. این اعداد به عنوان کدهای رمز بجای کدهای متن اصلی ارسال می‌شوند
👍5👏1
در این روش از ترکيب يک کليد خصوصی و يک کليد عمومی استفاده میشه کليد خصوصی صرفاً متعلق به کامپيوتر فرستنده بوده و کليد عمومی توسط کامپيوتر فرستنده در اختيار هر يک از کامپيوترهایی که قصد برقراری ارتباط با همدیگر را دارند گذاشته میشه برای رمزگشایی يک پيام رمز شده کامپيوتر می بايست از کليد عمومی که توسط فرستنده ارائه شده بهمراه کليد خصوصی خودشون استفاده کنن يکی از متداولترين برنامه‌های رمزنگاری در اين رابطه PGP)Pretty Good Privacy) است با استفاده از PGP می توان هر چيز دلخواهی رو رمز کرد بمنظور پياده سازی رمزنگاری کليد عمومی در مقياس بالا نظير يک سرويس دهنده وب لازمه از رويکردهای ديگری در اين خصوص استفاده بشه"امضای ديجيتال" يکی از رويکردهای موجود در اين زمينه هست يک امضای ديجيتالی صرفاً شامل اطلاعات محدودی بوده که اعلام میکنه سرويس دهنده وب با استفاده و بکارگيری يک سرويس مستقل با نام "امضای مجاز"، رازدار اطلاعاته امضای مجاز به عنوان يک ميانجی بين دو کامپيوتر ايفای وظيفه میکنه هويت و مجاز بودن هر يک از کامپيوترها برای برقراری ارتباط توسط سرويس دهنده انجام و برای هر يک کليد عمومی مربوطه را فراهم میکنه
👍51
دوستان لطفا تا جایی که میتونید کانال رو share کنید دم همه تون گرم🙏🏻🫶🏻
👍71🤡1
و اینم از قولی که داده بودم این کتاب جدیدترین نسخه reverse engineering for beginners نسخه 2023 هست که تا حالا ندیدم جایی لیک شده باشه معمولا نسخه ی 2006 یا قدیمیش هست
ReverseEngineering pinned «دوستان لطفا تا جایی که میتونید کانال رو share کنید دم همه تون گرم🙏🏻🫶🏻»
الگوریتم‌های رمزنگاري کليد خصوصی

رمزهای كلید خصوصی بر مبنای نوع عملكرد چگونگی طراحی و پیاده سازی و كاربردهایشان به دو گونه رمزهای قطعه ای و رمزهای دنباله ای تقسیم میشن كه در هر یک از اونها عملكرد رمز نگاری به صورت یک عملكرد دوجانبه بین دو طرف فرستنده و گیرنده هست كه با ایجاد یک ارتباط اولیه با یكدیگر روی كلید خصوصی توافق میکنن به گونه ای كه دشمن اون كلید را ندونه

فرستنده S میخواهد پیام m1,….mi را به نوعی بفرسته که طرف گیرنده R بفرسته كه اون بتونه به محتوای پیام دسترسی داشته باشه و در عین حال حریف مخالف A نتونه محتوای پیام رو درک كنه حتی اگر A تمامی آنچه بین R و S انتقال پیدا میکنه رو دریافت کنه به همین منظور فرستنده S هر متن روشن mi رو به وسیله الگوریتم رمزگذاری E وكلید خصوصی به متن رمز شده تبدیل میکنه ودریافت كننده نیز كه متن رمز شده را دریافت كرده می‌تونه با الگوریتم رمز گشائی D و كلید خصوصی متن اصلی رو بدست بیاره
👍51
مقایسه رمزنگاری الگوریتم‌های متقارن و الگوریتم‌های کلید عمومی‌

بحثهای زیادی شده که کدوم یک از این الگوریتم‌ها بهترند اما جواب مشخصی‌ نداره البته بررسی‌ هایی‌ روی این ‏سوال شده به طور مثال Needham و Schroeder بعد از تحقیق به این نتیجه رسیدن که طول پیغامی‌ که با الگوریتم‌های متقارن ‏میتونه رمزنگاری شه از الگوریتم‌های کلید عمومی‌ کمتره و با تحقیق به این نتیجه رسیدند که الگوریتم‌های ‏متقارن الگوریتم‌های بهینه تری ان اما وقتی‌ که بحث امنیت پیش میاد الگوریتم‌های کلید عمومی‌ کارایی‌ بیشتری ‏دارن به طور خلاصه می‌تونیم بگیم که الگوریتم‌های متقارن دارای سرعت بالاتر و الگوریتم‌های کلید عمومی‌ دارای ‏امنیت بهتری هستن.

در ضمن گاهی‌ از سیستم ترکیبی‌ از هر دو الگوریتم استفاده می‌کنند که به این الگوریتم‌ها الگوریتم ‏های ترکیبی‌ (hybrid) گفته میشه اما اگر به طور دقیق تر به این دو نگاه کنیم اونوقت متوجه میشیم که الگوریتم‌های کلید عمومی‌ و الگوریتم‌های ‏کلید متقارن دارای دو ماهیت کاملاً متفاوتن و کاربردهای متفاوتی‌ دارن به طور مثال در رمزنگاریهای ساده که ‏حجم داده‌ها بسیار زیاده از الگوریتم متقارن استفاده میشه چون داده‌ها با سرعت بالاتری رمزنگاری و ‏رمزگشایی‌ میشن اما در پروتکل هایی‌ که در اینترنت استفاده میشه برای رمز نگاری کلید هایی‌ که نیاز به مدیریت ‏دارن از الگوریتم‌های کلید عمومی‌ استفاده میشه
👍81
معرفی انواع کلیدهای رمزنگاری

كلیدهای رمزنگاری

تکنیک‌های رمزنگاری پیچیده به راحتی از روش‌های جابه‌جایی یا جایگزینی استفاده نمیکنن در عوض از یک كلید محرمانه برای كنترل ی توالی طولانی از جابه‌جایی و جایگزینی‌های پیچیده استفاده می‌کنن كلیدهای رمزنگاری و الگوریتم‌های رمزنگاری با همدیگر همكاری می‌کنن تا یک متن اولیه رو به یک متن رمزی تبدیل كنن در اغلب موارد الگوریتم رمزنگاری ثابت و شناخته شده است و این كلید رمزنگاریه كه یک نسخه یكتا از اطلاعات رمزنگاری شده تولید می‌کنه
👍8
كلیدهای محرمانه

سیستم‌های كلید محرمانه تنها از یک كلید برای رمزنگاری و رمزگشایی اطلاعات استفاده میکنن در این شیوه رمزنگاری، لازمه كه هر جفت فرستنده و گیرنده اطلاعات كلید جدا ای رو برای رمزنگاری داشته باشند و حفظ كلید به صورت محرمانه بسیار اهمیت داره امنیت این روش در گرو حفظ امنیت كلیده الگوریتم Data Encryption Standard) DES) یک نمونه از الگوریتم‌های كلید محرمانه هست. چون فرض میکنیم كه الگوریتم شناخته شده و معلومه امن بودن انتقال و ذخیره كلید بسیار مهمه

کارت‌های هوشمند معمولاً برای ذخیره كلیدهای محرمانه استفاده میشن در این حالت تضمین اینكه قلمرو كلید محدوده مهمه: باید همیشه فرض كنیم كه یک كارت ممكنه توسط افراد غیرمجاز با موفقیت تحلیل شه و به این ترتیب كل سیستم در خطر قرار بگیره در شكل زیر یک عملیات انتقال اطلاعات با استفاده از كلید محرمانه نشون داده شده كه در اون یک كاربر بانک، اطلاعات رو با استفاده از كلید محرمانه رمزنگاری می‌کنه و برای كارمند بانک ارسال میکنه شخص نیز اطلاعات رو با كلید مشابهی رمزگشایی میکنه
👏9👍2
كلیدهای اصلی و مشتق شده (Master and derived keys)

یكی از ایراداتی كه به روش‌های پیشین وارده تعداد زیاد كلیدهاست كه طبیعتاً منجر به سخت‌تر شدن مدیریت كلید میشه یک روش برای كم کردن از تعداد كلیدهایی كه باید منتقل و ذخیره شن مشتق گرفتن از آن‌ها در زمان مورد نیازه در یک برنامه اشتقاق كلید یک كلید اصلی همراه با چند پارامتر مجزا برای محاسبه كلید مشتق ‌شده استفاده میشه كه بعداً برای رمزنگاری استفاده میشه. برای مثال، اگر یک صادر كننده با تعداد زیادی كارت سروكار داره

میتونه برای هر كارت، با استفاده از كلید اصلی، شماره كارت رو رمز كنه و به این ترتیب كلید مشتق شده حاصل می‌شود و به اون كارت اختصاص داده میشه شكل دیگری از كلیدهای مشتق شده با استفاده از tokenها به دست میان كه token ها محاسبه‌گرهای الكترونیكی با عملكردهای مخصوصن ورودی اونها ممكنه یک مقدار گرفته شده از سیستم مركزی یک PIN وارد شده توسط كاربر و یا تاریخ و زمان باشه خود token شامل الگوریتم و یک كلید اصلیه چنین token هایی اغلب برای دسترسی به سیستم‌های كامپیوتری امن استفاده میشن
9👍1