Появилась идея написать мессенджер, чисто для себя и знакомых. Как язык выбрал Python, так как никаких грандиозных идей нету. Все понятно, кроме одного, - сервера.
Изначально думал использовать socket для Python, но углубившись в принципы работы сетевого программирования и прочих приколов, понял, что идея - бред.
На данный момент рассматриваю flask, чтобы клиент мог общаться с сервером с помощью http запросов. За точку отсчета был взят Telegram, так как там все реализовано по +- такому же сценарию.
В правильном ли направлении я думаю? Или есть более подходящая библиотека/технология. Спасибо.
ты даже не способен выбрать нормальный инструмент, я не говорю даже о том, что что-то хоть чуть-чуть реально похоже на Телеграм, новичек в принципе не способен написть, ты даже тупо про вебсокеты не в курсе.
From the standpoint of the high-level component, the client and the server exchange messages inside a session. The session is attached to the client device (the application, to be more exact) rather than a specific WebSocket/http/https/tcp connection.
Ну и дальше по тексту - используется в т.ч. и вебсокет.
mtproto это абстракция другого уровня. Она может работать поверх чего угодно - хоть поверх дискет на собачей упряжке
Лучше для чего именно? Для передачи сообщение между сервером и клиентом в вебе уже давно придуманы веб-сокеты, поэтому лучше выбрать ЯП/фреймворк, где реализована адекватная поддержка данного протокола и есть библиотеки. HTTP можно, конечно, использовать - но только с костылями. Вот только, зачем? А если не веб - то можно брать любой бинарный сериализатор и сразу использовать голые сокеты (впрочем и веб-сокеты и вне веб тоже нормальное решение).
Сначала подумай о (сквозном) шифровании. Современные мессенджеры генерируют уникальный ключ для участников чата, если я не ошибаюсь. Почитай о MTProto и других протоколах шифрования.
Подумай о том то необходимо, чтобы обеспечить безопасную передачу данных и какие другие технологии могут для этого подходить лучше других и отталкивайся от этого и своих возможностей, конечно.
MTProto is a custom protocol developed by Telegram for secure messaging. Here are the key technical details about MTProto:
### Overview
MTProto is designed to achieve reliability on weak mobile connections as well as speed when dealing with large files [1]. It uses an original approach to address these requirements.
### Encryption Layers
MTProto supports two layers of encryption [1]:
1. Client-server encryption: Used in Telegram Cloud Chats
2. End-to-end encryption: Used in Telegram Secret Chats and voice/video calls
### Security Features
MTProto incorporates several security measures:
1. Perfect Forward Secrecy: Supported in both cloud chats and secret chats [1].
2. Protection against known attacks:
- Resistant to chosen-plaintext attacks (CPA)
- Resistant to chosen-ciphertext attacks (CCA)
- Resistant to replay attacks [1]
3. Message Authentication:
- Uses SHA-256 for message authentication
- Includes server salt, message sequence number, and time in plaintext messages [1]
4. Encrypted Content Delivery Networks (CDN):
- Files sent to the CDN are encrypted with a unique key using AES-256-CTR
- Only accessible to the main MTProto server and authorized clients [1]
5. Server Authentication:
- During Diffie-Hellman key exchange, the server's public RSA key is used for authentication [1]
6. Hash Function:
- Current version uses SHA-256
- Earlier versions (MTProto 1.0) used SHA-1 [1]
### Cryptographic Algorithms
MTProto employs several cryptographic algorithms:
1. AES in IGE (Indirect Gap-Hill-Euripides) mode for encryption
2. SHA-256 for message authentication
3. RSA for server authentication and MitM protection [1]
### Unique Approach
MTProto differs from standard encrypt-then-MAC approaches:
1. Security checks are performed before decryption in MTProto
2. This approach achieves similar results without additional HMAC computation [1]
### Verification
Telegram welcomes security experts to audit its services, code, and protocol. The source code of Telegram apps can be inspected to verify the implementation [1].
In summary, MTProto is a robust protocol designed to provide secure messaging while maintaining performance on mobile networks. It combines well-known cryptographic algorithms in innovative ways to address specific challenges in modern mobile communication.