MTProto
МТПрото (Мобиле Транспорт Протоcол) — Телеграм ижтимоий тармоғида фойдаланувчилар ёзишмаларини шифрлаш учун ишлатиладиган криптографик протокол. Ушбу протокол Николай Дуров ва бошқа дастурчилар билан биргаликда яратилган.
Протокол, симметрик шифрлаш алгоритми АЭС (ИГЕ режимида) ҳамда икки қурилма ўртасида 2048-битли РСА калитларни алмашиш учун мўлжалланган Диффи-Хелман протоколининг комбинацияси ва бир қатор ҳеш-функсиялар асосида ҳосил қилинган. Протокол энд-то-энд усулида шифрлашни ҳам қўллаб-қувватлайди.
Шунингдек, ушбу протокол асосида МТПрохй протоколи яратилган.
Қурилмани рўйхатдан ўтказиш
Телеграм иловасини биринчи марта ишга туширилганда, фойдаланувчи ўзининг телефон рақамини киритади. Ушбу телефон рақамга беш хонали тасдиқлаш коди жўнатилади.
Тасдиқлаш коди киритилгандан сўнг авторизация протоколи ишга тушади:
- C мижоз, С серверга тасодифий битлар кетма-кетлигидан иборат бўлган (128 бит) сатр кўринишидаги сўровни юборади.
- С жавоб тариқасида бошқа битлар кетма-кетлигини, яъни 64 битли н сон ҳамда РСА нинг очиқ калитини жўнатади.
- C мижоз, н сонни иккита п ва қ туб сонларга ажратади. Мижозда сервернинг очиқ калитлари тўплами мавжуд бўлиб, у қурилма хотирасида сақланади. Мижоз уларнинг ичидан С сервердан келган шифрга мос келадиган калитни танлайди.
- Шундан сўнг C бошқа бир 256 битли тасодифий сатрни танлайди, ушбу сатр аввалгисидан фарқ қилиши керак. Мижоз бу сатрдан н, п ва қ сонларни танлайди ҳамда РСА алгоритми асосида калити билан шифрлаб, серверга жўнатади.
- С сервер эса Диффи-Хелман протоколи асосидаги г, п ва га параметрлари билан жавоб қайтаради. Бу параметрлар АЭС-256 билан шифрланган. Бунинг учун мижоз ва сервердан олинган вақтинчалик калит ва Салтдан фойдаланилган.
- C мижоз, ёпиқ калит б ни танлайди, унинг асосида очиқ калитни ҳамда умумий очиқ калит ни ҳисоблайди. Шундан сўнг, шифрланган ҳолда Сга юборилади.
Хабарларни шифрлаш
| Ленгтҳ | Ҳеадер | Рандом биц | Лаер | сеқ_ин | сеқ_оут | Ҳеадер | Рандом ид | ТТЛ | Мессаге | Ҳеадер | Паддинг | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 32 бит | 32 бит | 128 бит | 32 бит | 32 бит | 32 бит | 32 бит | 64 бит | 32 бит | Тасодифий узунлик | 32 бит | 0-96 бит | |||
| 1-блок | 2-блок | 3-блок | 4-блок | Блоклар | Н-блок | |||||||||
- Ленгтҳ — пакет узунлиги, бунда паддинг ҳисобга олинмайди.
- Ҳеадер — ҳар бир пакет, протокол версияси, жўнатилаётган медиафайллар тури ҳақидаги маълумотларни сақлайдиган учта сарлавҳадан ташкил топган.
- Рандом биц — мижоз томонидан ҳосил қилинган 120 бит ҳамда майдон узунлигини аниқловчи 8 битдан ташкил топган. Шифрлаш учун Салт сифатида ишлатилади.
- Лаер — протокол версиясини билдиради.
- сеқ_ин — чат яратувчисига юборилган хабарлар сони.
- сеқ_оут — чат яратувчиси томонидан юборилган хабарлар сони.
- Рандом ид — хабар юбораётган мижоз томонидан ҳосил қилинган тасодифий сон. Матн кўринишида юборилади.
- ТТЛ — хабарни олган фойдаланувчи, ушбу хабарни ўчирилиб ташланишидан олдин кўриб туриши мумкин бўлган вақт, секундларда ўлчанади.
- Мессаге — фойдаланувчи томонидан киритилган хабар (ихтиёрий узунликда).
- Паддинг — Шифрлаш олдидан қўшилади.

Шифрлаш схемаси
- аутҳ_кей — чат ҳосил қилиниш пайтида олинган очиқ шифрлаш калити.
- Пайлоад — шифрлаш пакети.
- мсг_кей — СҲА1-ҳешнинг дастлабки 128 бити. Расшифровканинг тўғри амалга оширилганини текшириш учун фойдаланилади.
- Паддинг — шифрлаш пайтида блокнинг ўлчами 128 битга тенг бўлиши учун қўшилган тасодифий сонлардан иборат 0—96 бит.
- АЭС кейва ИВ — ИГЕ режимида АЭС алгоритми орқали шифрлаш параметрлари. КДФ ёрдмида ҳосил қилинади.
- КДФ (кей дериватион фунcтион) — АЭС кей ва ИВ ни мсг_кей ҳамда аутҳ_кей асосида шакллантириш функсияси
- аутҳ_кей_ид — СҲА1-ҳешК очиқ калитининг дсатлабки 64-бити. Коллизия рўй берганда калит қайтадан генерация қилинади.[1]
Хабарларни дешифрлаш
| аутҳ_кей_ид | мсг кей | Энcрйптед Дата |
|---|---|---|
| 64 бит | 128 бит | Н * 128 бит |
- Мижоз шифрланган хабарни олади, аутҳ_кей_ид нинг ишончлилигни текширади, яъни СҲА1-ҳеш очиқ калити Книнг дастлабки 64-битини ҳисоблайди. Қийматлар мос келса, хабарни дешифрлаш қилиш давом эттирилади.
- кей дериватион фунcтион ёрдамида АЭС кей ва ИВ шакллантирилади.
- Шундан сўнг маълумотларни АЭС-ИГЕ алгоритми асосида дешифрлаш давом эттирилади. Охири жўнатувчидаги пакетга мос келган пакет қабул қилувчида ҳам ҳосил бўлади.
- Дешифрланган пакетдаги СҲА1-ҳешнинг 128-битини мсг_кей билан таққосланади. Ва хабар тўлиқ дешифрланади.[1]
Дастурлаш тиллари учун кутубхоналар
| Номи | Дастурлаш тил(лар)и | Манба коди | Тавсифи |
|---|---|---|---|
| @мтпрото/cоре | ЖаваСcрипт | ҳттпс://гитҳуб.cом/алик0211/мтпрото-cоре | Телеграм АПИ (МТПрото) cлиэнт либрарй фор броwсер |
| МаделинеПрото | ПҲП | ҳттпс://гитҳуб.cом/даног/МаделинеПрото | Асйнc ПҲП cлиэнт/сервер АПИ фор тҳе телеграм МТПрото протоcол |
| Телетҳон | Пйтҳон | ҳттпс://гитҳуб.cом/ЛонамиWебс/Телетҳон | Пуре Пйтҳон 3 МТПрото АПИ Телеграм cлиэнт либрарй, фор боц тоо! |
| пйрограм | Пйтҳон | ҳттпс://гитҳуб.cом/пйрограм/пйрограм | Телеграм МТПрото АПИ Cлиэнт Либрарй анд Фрамеwорк фор Пйтҳон |
| граммерс | Руст | ҳттпс://гитҳуб.cом/Лонами/граммерс | А сет оф Руст либрариэс то интераcт wитҳ Телеграм’с АПИ |
| ТЛШарп | C# | ҳттпс://гитҳуб.cом/сочих/ТЛШарп | Телеграм cлиэнт либрарй имплементед ин C# |
| ТДЛиб | Пйтҳон, ЖаваСcрипт, Го, Жава, Котлин, C#, C++, Сwифт, Обжеcтиве-C, Дарт, Руст, Эрланг, ПҲП, Луа, Рубй, Cложуре, Эмаcс Лисп, Д, Элихир, 1С, C | ҳттпс://гитҳуб.cом/тдлиб/тд | Cросс-платформ либрарй фор буилдинг Телеграм cлиэнц. Ит cан бе эасилй усед фром алмост анй программинг лангуаге |
Яна қаранг
Манбалар
Адабиётлар
- Жакоб Бжерре Жакобсен, Он тҳе CCА (ин)Сеcуритй оф МТПрото, 2016, 978-1-4503-4564-4, Сеcуритй оф МТПрото
Ҳаволалар
- ҳттпс://cоре.телеграм.орг/мтпрото
- ҳттпс://wеб.арчиве.орг/wеб/20161129083141/ҳттпс://унҳандледехпрессион.cом/2013/12/17/телеграм-станд-баcк-wе-кноw-матҳс/
- ҳттпс://www.инcибе.эс/эхтфронтинтеcо/имг/Филе/интеcоcерт/ЭстудиосИнформес/ИНТ_Телеграм_ЭН.пдф (Wайбаcк Мачине сайтида 2021-06-23 санасида архивланган)