БСзопасныС push-увСдомлСния: ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€!

БСгодня расскаТу ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΌΡ‹ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ заняты ΡƒΠΆΠ΅ нСсколько мСсяцСв: ΠΎ ΠΏΡƒΡˆ-увСдомлСниях для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… мСссСндТСров. Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΡƒΠΏΠΎΡ€ сдСлан Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ выясняли, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ β€œΡΠ»Π°Π±Ρ‹Π΅ мСста” ΠΈ Ссли Π΄Π°, Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ… Π½ΠΈΠ²Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΎΠΏΡ†ΠΈΡŽ Π² наш сСрвис.

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ нашСй ΡΡ‚Π°Ρ‚ΡŒΠΈ с Medium с нСбольшими добавлСниями ΠΎΡ‚ сСбя. Π’ Π½Π΅ΠΉ ΠΈΡ‚ΠΎΠ³ΠΈ β€œΡ€Π°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡβ€ ΠΈ рассказ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ‡Π°ΡΡ‚ΡŒ

Π’ классичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡƒΡˆ-увСдомлСния Π΄Π΅Π»Π°ΡŽΡ‚ мСссСндТСры уязвимыми для Π°Ρ‚Π°ΠΊ MITM (Man-in-the-middle, Β«Π§Π΅Π»ΠΎΠ²Π΅ΠΊ посСрСдинС»). НапримСр, Ρƒ Google, Microsoft ΠΈ Π² старой вСрсии iMessage ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ отправляСт ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π° сСрвСры Apple β€” Π½Π° сСрвСрС происходит аутСнтификация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° сообщСния (Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ содСрТания).

БСзопасныС push-увСдомлСния: ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π΅ΡΡ‚ΡŒ шанс ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ пСрСписку, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² доступ ΠΊ сСрвСру ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. А это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ пСрСписки бСсполСзны: ΠΏΡƒΡˆ-увСдомлСния всС Ρ€Π°Π²Π½ΠΎ оставят Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для чтСния Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ Π»ΠΈΡ†Π°ΠΌΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обсуТдали Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€œΠ¨ΠΈΡ„Ρ€ΡƒΠΉΡΡ грамотно” Π½Π° Xaker.ru, посвящСнной способам ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ сообщСний.

Если Π²Π°ΠΌ каТСтся, Ρ‡Ρ‚ΠΎ сСрвСры Apple ΠΈ Google 100% Π½Π΅ допустят ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ Π½ΠΈΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΈΡ… сотрудники. А сотрудники β€” люди.
ΠŸΡ€ΠΈ всСх уязвимостях ΠΏΡƒΡˆΠ΅ΠΉ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ «бСзопасныС» мСссСндТСры, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Signal ΠΈ Telegram, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ…. Π’Π΅Π΄ΡŒ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ придСтся Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сообщСния, постоянно заходя Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎ вСсьма Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΈ мСссСндТСры-ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ прСимущСство.

ΠŸΠ°Ρ€Π°Π½ΠΎΠΉΡ ΠΈ Π·Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл


Π’ нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ занялись этим вопросом нСсколько мСсяцСв Π½Π°Π·Π°Π΄. Нам Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ конкурСнтоспособными. Но ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Ρ‚Π΅Ρ‚ΡŒ Π΄Ρ‹Ρ€Ρƒ Π² бСзопасности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ любая ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΡ€Π²Π΅Ρ‚ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ прСимущСство: наш мСссСндТСр Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ (Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅), ΠΏΡ€ΠΈ этом сотрудники Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌ записям. ΠšΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ собСсСдников доступны Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ MITM-Π°Ρ‚Π°ΠΊ.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии ΠΏΡƒΡˆΠ΅ΠΉ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ максимально ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ тСкст сообщСния. ΠŸΡƒΡˆ-сСрвис ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΎΡ‚ Π½ΠΎΠ΄Ρ‹ Π½Π΅ тСкст сообщСния, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сигнал ΠΎ Ρ„Π°ΠΊΡ‚Π΅ Π΅Π³ΠΎ получСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄Π΅Π» ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Β«ΠŸΡ€ΠΈΡˆΠ»ΠΎ Π½ΠΎΠ²ΠΎΠ΅ сообщСниС». ΠŸΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² мСссСндТСрС.

БСзопасныС push-увСдомлСния: ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅
Как это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ: Π²ΠΈΠ΄Π΅ΠΎ.

ПослС этого ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² послСднСй вСрсии ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡ‚ Apple Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Они выпустили UNNotificationServiceExtension, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· APNS. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° устройствС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ выполняСт Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ (ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅) ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. Π•Π΅ ΠΌΡ‹ ΠΈ взяли Π·Π° основу Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии ΠΏΡƒΡˆΠ΅ΠΉ.

БСйчас ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ для iOS, которая позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ тСкст сообщСния Π±Π΅Π· ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ бСзопасности. Π’ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° выглядит Ρ‚Π°ΠΊ:

  • ΠŸΡƒΡˆ сСрвис отправляСт push-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большим, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½)
  • Устройство ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ увСдомлСния запускаСт наш NotificationServiceExtension β€” ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π½ΠΎΠ΄Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΏΠΎ id, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сохранённой пассфразы, ΠΈ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ систСмС Π½ΠΎΠ²ΠΎΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. ΠŸΠ°ΡΡΡ„Ρ€Π°Π·Π° хранится Π² бСзопасном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  • БистСма ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ сообщСниСм ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ.
  • ΠšΠ»ΡŽΡ‡ΠΈ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ уходят, ΠΊΠ°ΠΊ ΠΈ plain text-сообщСниС. Π£ ΠΏΡƒΡˆ-сСрвиса Π½Π΅Ρ‚ возмоТности Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС.

БСзопасныС push-увСдомлСния: ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π­Ρ‚Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΡ‹ приняли Π·Π° Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π² послСднСм ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ прилоТСния для iOS.
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ΡΡ тСхничСской стороной ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ исходный ΠΊΠΎΠ΄: github.com/Adamant-im/adamant-notificationService.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ