لطفا در صورت تمایل به سؤالات متداول ما برای تمایل فنی مراجعه کنید. توسعه دهندگان مشتری موظفند دستورالعمل های امنیتی را رعایت کنند.
مقالات مرتبط
این صفحه به لایه اصلی رمزگذاری mtproto مورد استفاده برای گپ های ابری (رمزگذاری سرور-مشتری) می پردازد. همچنین ببینید:
توصیف عمومی
این پروتکل برای دسترسی به API سرور از برنامه هایی که در دستگاه های تلفن همراه اجرا می شوند ، طراحی شده است. باید تأکید کرد که یک مرورگر وب چنین کاربردی نیست.
پروتکل به سه مؤلفه مستقل تقسیم می شود:
- مؤلفه سطح بالا (زبان پرس و جو API): روشی را تعریف می کند که به موجب آن نمایش داده شدگان و پاسخ های API به پیام های باینری تبدیل می شوند.
- لایه رمزنگاری (مجوز): روشی را تعریف می کند که پیام ها قبل از انتقال از طریق پروتکل حمل و نقل رمزگذاری می شوند.
- مؤلفه حمل و نقل: روش را برای مشتری و سرور برای انتقال پیام ها از طریق پروتکل شبکه موجود دیگر (مانند HTTP ، HTTPS ، WS (وب سایت های ساده) ، WSS (WebSockets از طریق HTTPS) ، TCP ، UDP) تعریف می کند.
از نسخه 4. 6 ، مشتریان اصلی تلگرام از MTProto 2. 0 استفاده می کنند که در این مقاله شرح داده شده است. Mtproto v1. 0 (که در اینجا برای مرجع شرح داده شده است) مستهلک می شود و در حال حاضر در حال خارج شدن است.
خلاصه مؤلفه مختصر
مؤلفه سطح بالا (زبان پرس و جو RPC/API)
از دیدگاه مؤلفه سطح بالا ، مشتری و پیام های تبادل سرور در یک جلسه. جلسه به جای اتصال خاص WebSocket/HTTP/HTTPS/TCP به دستگاه مشتری (برنامه ، دقیق تر) وصل شده است. علاوه بر این ، هر جلسه به شناسه کلید کاربر متصل می شود که در آن مجوز در واقع انجام می شود.
چندین اتصال به یک سرور ممکن است باز باشد. پیام ها ممکن است از طریق هر یک از اتصالات از هر جهت ارسال شوند (پاسخ به یک پرس و جو لزوماً از طریق همان اتصال که پرس و جو اصلی را به همراه داشته است ، بازگردانده نمی شود ، اگرچه بیشتر اوقات ، این مورد است ؛ با این حال ، به هیچ وجه نمی تواند یک پیام باشداز طریق اتصال متعلق به یک جلسه متفاوت بازگشت. هنگامی که از پروتکل UDP استفاده می شود ، ممکن است پاسخی توسط یک آدرس IP متفاوت از آنچه که به آن پرس و جو ارسال شده است برگردانده شود.
چندین نوع پیام وجود دارد:
- تماس های RPC (مشتری به سرور): تماس با روش های API
- پاسخ های RPC (سرور به مشتری): نتایج تماس های RPC
- پیام دریافت تأیید (یا بهتر بگوییم ، اطلاع از وضعیت مجموعه ای از پیام ها)
- پیام پرس و جو
- پیام یا ظروف چندرسانه ای (ظرفی که چندین پیام را در خود جای داده است ؛ برای ارسال چندین تماس RPC به طور همزمان از طریق اتصال HTTP ، به عنوان مثال ، همچنین ، یک ظرف ممکن است از GZIP پشتیبانی کند).
از دیدگاه پروتکل های سطح پایین ، یک پیام یک جریان داده باینری است که در امتداد مرز 4 یا 16 بایت تراز شده است. چندین قسمت اول در پیام ثابت است و توسط سیستم رمزنگاری/مجوز استفاده می شود.
هر پیام ، چه فردی و چه در داخل یک ظرف ، از یک شناسه پیام (64 بیت ، به زیر مراجعه کنید) ، یک شماره توالی پیام در یک جلسه (32 بیت) ، طول (بدن پیام در بایت ؛ 32 بیت) ، وبدن (هر اندازه ای که از 4 بایت باشد). علاوه بر این ، هنگامی که یک کانتینر یا یک پیام واحد ارسال می شود ، یک هدر داخلی در قسمت بالا اضافه می شود (به تصویر زیر مراجعه کنید) ، سپس کل پیام رمزگذاری می شود و یک هدر خارجی در بالای پیام قرار می گیرد (یک بیت 64 بیتیشناسه کلید و یک کلید پیام 128 بیتی).
بدنه پیام به طور معمول از نوع پیام 32 بیتی تشکیل شده است که به دنبال پارامترهای وابسته به نوع است. به طور خاص ، هر تابع RPC دارای نوع پیام مربوطه است. برای اطلاعات بیشتر ، به سریال سازی داده های باینری ، پروتکل تلفن همراه: پیام های سرویس مراجعه کنید.
همه اعداد به صورت اندک Endian نوشته شده اند. با این حال ، تعداد بسیار زیادی (2048 بیتی) مورد استفاده در RSA و DH با فرمت بزرگ Endian نوشته شده است زیرا اینگونه است که کتابخانه OpenSSL این کار را انجام می دهد.
مجوز و رمزگذاری
قبل از پیام (یا پیام چندتایی) که با استفاده از یک پروتکل حمل و نقل از طریق شبکه منتقل می شود ، به روشی خاص رمزگذاری می شود و یک هدر خارجی در بالای پیام اضافه می شود: یک شناسه کلید 64 بیتی (این یک کلید مجوز برای سرور و همچنین کاربر) و یک کلید پیام 128 بیتی را مشخص می کند. یک کلید کاربر به همراه کلید پیام یک کلید واقعی 256 بیتی را تعریف می کند که همان چیزی است که پیام را با استفاده از رمزگذاری AES-256 رمزگذاری می کند. توجه داشته باشید که قسمت اولیه پیام رمزگذاری شده شامل داده های متغیر (جلسه ، شناسه پیام ، شماره دنباله ، نمک سرور) است که بدیهی است بر کلید پیام تأثیر می گذارد (و بنابراین کلید AES و IV). کلید پیام به عنوان 128 بیت میانی Sha256 از بدنه پیام (از جمله جلسه ، شناسه پیام و غیره) ، از جمله بایت های بالشتک ، تعریف شده توسط 32 بایت گرفته شده از کلید مجوز تعریف شده است. پیام های چند نفری به عنوان یک پیام واحد رمزگذاری می شوند.
اولین کاری که یک برنامه مشتری باید انجام دهد ایجاد یک کلید مجوز است که معمولاً هنگام اجرای اولین بار تولید می شود و تقریباً هرگز تغییر نمی کند.
برای جلوگیری از مهاجمان به طور بالقوه پیام های رمزگذاری شده را از رمزگشایی آنها به صورت factum با تخصیص کلید مجوز (به عنوان مثال ، با سرقت یک دستگاه - رهگیری می کند - حتی اگر در این حالت نیز می تواند به تمام اطلاعات ذخیره شده در دستگاه بدون رمزگشایی چیزی دسترسی پیدا کند) ،Mtproto از رازداری کامل رو به جلو در چت های ابری و چت های مخفی پشتیبانی می کند.
همگام سازی زمان
اگر زمان مشتری از زمان سرور به طور گسترده ای متفاوت باشد ، یک سرور ممکن است به دلیل یک شناسه پیام نامعتبر (که از نزدیک با زمان ایجاد ارتباط دارد) نادیده گرفتن پیام های مشتری یا برعکس را شروع کند. در این شرایط ، سرور پیام ویژه ای را شامل می شود که حاوی زمان صحیح و یک نمک 128 بیتی خاص است (یا صریحاً توسط مشتری در یک درخواست همگام سازی RPC ویژه یا برابر با کلید آخرین پیام دریافت شده از مشتری ارائه می شود. در طول جلسه فعلی). این پیام می تواند اولین مورد در یک ظروف باشد که پیام های دیگری را شامل می شود (اگر اختلاف زمان قابل توجه باشد اما هنوز منجر به نادیده گرفتن پیام های مشتری نمی شود).
مشتری با دریافت چنین پیامی یا ظرفی که آن را نگه داشته است ، ابتدا یک همگام سازی زمان را انجام می دهد (در واقع ، صرفاً تفاوت بین زمان سرور و خود را ذخیره می کند تا بتواند زمان "صحیح" را در آینده محاسبه کند) و سپس تأیید می کندشناسه پیام برای صحت.
در صورت عدم توجه به تصحیح ، مشتری برای اطمینان از یکنواختی شناسه های پیام مجبور به ایجاد یک جلسه جدید است.
حمل و نقل mtproto
قبل از ارسال با استفاده از پروتکل حمل و نقل انتخاب شده ، بار باید در یک هدر پروتکل ثانویه ، تعریف شده توسط پروتکل حمل و نقل مناسب MTPROTO ، پیچیده شود.
سرور این پروتکل های مختلف (و آنها را از HTTP نیز متمایز می کند) توسط هدر تشخیص می دهد. علاوه بر این ، از ویژگی های حمل و نقل زیر می توان استفاده کرد:
اجرای مثال برای این پروتکل ها را می توان در TDLIB و MadelineProto مشاهده کرد.
حمل
تحویل ظروف رمزگذاری شده را به همراه هدر خارجی (از این پس ، بارگذاری) از مشتری به سرور و بازگشت امکان پذیر می کند. پروتکل های حمل و نقل چندگانه تعریف شده اند:
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید
برچسب :
نویسنده : احمد قانع پور
بازدید : 52
تاريخ : يکشنبه
20 فروردين
1402 ساعت: :