قبل ازینکه پیامی در شبکه با استفاده از پروتکل انتقال ارسال شود، به روش معینی رمزنگاری میگردد و یک Header خارجی به ابتدای پیام اضافه میگردد که شامل یک شناسهی تعیین هویت ۶۴ بیتی authkeyid (که به صورت یکتا یک کلید احراز هویت را برای سرور و همچنین کاربر تعیین میکند) و یک کلید پیام ۱۲۸ بیتی msg_key میشود.کلید احراز هویت که با کلید پیام ترکیب شده، یک کلید واقعی aeskey و یک بردار اولیهی ۲۵۶ بیتی aesiv تولید میکند که برای رمزنگاری پیام با استفاده از رمزنگاری AES-256 در مد infinite garble extension یا اصطلاحا (IGE) استفاده میشود.
دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
باید دقت داشت، بخش ابتدایی پیام که باید رمز شود شامل دادههای قابل تغییر (session، شناسهی پیام، شمارهی دنباله و Server salt) است که به طور واضحی روی کلید پیام (و در نتیجه کلیدهای AES و iv) تاثیر میگذارد. در MTProto 2.0، کلید پیام به عنوان بیتهای میانی ۱۲۸ تایی از SHA- 256 از بدنهی پیام تعریف میشود که بوسیلهی ۳۲ بایت که از کلید هویت گرفته شده، اضافه میگردد. در واقع پیامهای چند تکهای به عنوان یک پیام رمزنگاری میشوند.لایهی پایهای پروتکل MTProto ورژن ۲ (چتهای تحت ابر، رمزنگاری کلاینت- سرور) تفاوتهای عمدهای با ورژن یک خود دارد:
- استفاده از SHA- 256 به جای SHA- 1.
- چسباندن بایتهایی که در محاسبهی کلید پیام شرکت دارند.
- کلید پیام که نه تنها به پیام، بلکه به کلید احراز هویت هم وابسته است.
- استفاده از ۱۲ تا ۱۰۲۴ بایت چسبیده به جای ۰ تا ۱۵ بایت در ورژن ۱.
در ادامه باید به نکات زیر در مورد این پروتکل بطور خلاصه اشاره کنم :
- کلید احراز هویت شما که نقش تعیینکنندهای روی رمزنگاری دارد یک کلید ۲۰۴۸ بیتی است که توسط تجهیز کاربر و سرور مربوطه به اشتراک گذاشته میشود و به ازای هر کاربر مستقیما روی تجهیز کاربر توسط مبادلهی کلیدهای دیفی-هلمن ایجاد میگردد و هرگز روی شبکه ارسال نمیشود. پس این کلید اهراز هویت مختص هر کاربر است.
- یک کلید سرور ۲۰۴۸ بیتی RSA که توسط سرور استفاده میشود تا پیامهایش را در حین ثبت و تولید کلید احراز هویت امضا کند. اپلیکیشن تلگرام به طور خاص، یک کلید سرور ساخته شده دارد که میتواند جهت تائید امضا استفاده شود ولی نمیتواند پیامها را امضا کند. کلید سرور روی سرور ذخیره میشود و دائما تغییر داده میشود.
- سرور میتواند وضعیت session را نگه دارد. تحت هیچ شرایطی یک پیام از یک session به sessionهای دیگر ارسال نمیشود.
- با روشهای مختلفی از سرور سالت گرفته تا msgid از حملات reply جلوگیری شده است. برای نمونه ۳۲ بیت پایینی msgid که توسط کاربر ارسال میشود نباید خالی باشد و باید بخشی از زمانی که پیام تولید شده است را ارائه نماید.