Хөөе Хабр!
Өнөөдөр би хамтран ажиллагсадтайгаа хэдэн сарын турш юу хийж байгаа талаар ярих болно: гар утасны шуурхай мессенжерүүдэд зориулсан push мэдэгдлүүд. Би аль хэдийн хэлсэнчлэн манай програмд хамгаалалтад гол анхаарлаа хандуулдаг. Тиймээс бид түлхэх мэдэгдлүүд нь "сул тал" байгаа эсэхийг олж мэдсэн бөгөөд хэрэв байгаа бол энэ ашигтай сонголтыг манай үйлчилгээнд нэмэхийн тулд тэдгээрийг хэрхэн тэгшитгэх талаар олж мэдсэн.
Би манай орчуулгыг нийтэлж байна
Бид материалыг шалгадаг
Сонгодог загварт түлхэх мэдэгдлүүд нь мессенжерүүдийг MITM (Man-in-the-middle) халдлагад өртөмтгий болгодог. Жишээлбэл, Google, Microsoft болон iMessage-ийн хуучин хувилбарын хувьд програм нь Apple-ийн серверүүд рүү шифрлэлтийн түлхүүрүүдийг илгээдэг - сервер дээр хэрэглэгчдийг баталгаажуулж, мессежийн толгой хэсгийг (эсвэл түүний агуулгыг) тайлдаг.
Үүний үр дүнд push мэдэгдлийн серверт нэвтрэх замаар захидал харилцааг унших боломжтой болно. Энэ нь захидал харилцааны аливаа шифрлэлт нь ашиггүй гэсэн үг юм: түлхэх мэдэгдэл нь гуравдагч этгээдэд унших боломжийг үлдээх болно. Өгүүллийн зохиогчид энэ боломжийг илүү нарийвчлан авч үзсэн.
Хэрэв та Apple болон Google-ийн серверүүд хэрэглэгчийн шифрлэлтийн түлхүүр алдагдахаас 100% хамгаалагдсан гэж бодож байгаа бол тэдний ажилтнууд тэдгээрт хандах боломжтой гэдгийг анхаарч үзээрэй. Мөн ажилчид бол хүмүүс.
Түлхэх мэдэгдлийн бүх эмзэг байдлыг үл харгалзан Signal, Telegram зэрэг олон "аюулгүй" шуурхай мессенжерүүд үүнийг ашигладаг. Үгүй бол хэрэглэгчид програм руу байнга нэвтэрч шинэ мессежийг "гараар" хянах шаардлагатай болно. Энэ нь маш тохиромжгүй бөгөөд өрсөлдөгч мессенжерүүд давуу талтай болно.
Параной ба эрүүл ухаан
Төсөлдөө бид хэдэн сарын өмнө энэ асуудлыг нягт нямбай авч үзсэн. Бид өрсөлдөх чадвартай байхын тулд түлхэх мэдэгдлийн сонголтыг нэмэх шаардлагатай болсон. Гэхдээ үүний зэрэгцээ аюулгүй байдлын цоорхойг бүү нээ, учир нь аливаа мэдээлэл алдагдвал төсөлд итгэх итгэлийг алдагдуулна.
Гэсэн хэдий ч бид аль хэдийн чухал давуу талтай болсон: манай мессенжер нь төвлөрсөн бус (өгөгдөл блокчэйнд хадгалагддаг), ажилчид данс руу нэвтрэх эрхгүй. Зөвхөн хэрэглэгчид шифрлэлтийн түлхүүрүүдтэй байдаг бөгөөд MITM халдлагаас хамгаалахын тулд харилцан ярилцагчийн нийтийн түлхүүрүүд блокчейн дээр байдаг.
Түлхэх мэдэгдлийн эхний хувилбарт бид үүнийг аль болох аюулгүй болгож, мессежийн текстийг огт дамжуулахгүй байхаар шийдсэн. Түлхэх үйлчилгээ нь зангилаанаас мессежийн текстийг хүлээн аваагүй бөгөөд зөвхөн түүнийг хүлээн авсан тухай дохио юм. Тиймээс хэрэглэгч "Шинэ мессеж ирлээ" гэсэн мэдэгдлийг харсан. Зөвхөн мессенжерээс л унших боломжтой байсан.
Үүний дараа бид Apple-ийн мэдэгдлийн хамгийн сүүлийн хувилбар нь аюулгүй байдлын шинэ боломжуудтай болохыг олж мэдсэн. Тэд
Бид одоо iOS-д зориулсан push мэдэгдлийн хоёр дахь хувилбарыг боловсруулсан бөгөөд энэ нь танд аюулгүй байдлын эрсдэлгүйгээр мессежийн текстийг харуулах боломжийг олгодог. Шинэ үзэл баримтлалд логик нь дараах байдалтай байна.
- Түлхэх үйлчилгээ нь гүйлгээний дугаар бүхий түлхэх мэдэгдлийг илгээдэг (шифрлэгдсэн мессеж нь маш том байж болно, мэдэгдлийн хэмжээ маш хязгаарлагдмал)
- Төхөөрөмж мэдэгдэл хүлээн авмагц манай NotificationServiceExtension буюу id-ээр зангилаанаас гүйлгээ хийх хүсэлт гаргаж, хадгалсан нууц үг ашиглан шифрийг тайлж, систем рүү шинэ мэдэгдэл илгээдэг бичил программыг ажиллуулдаг. Нууц үг нь аюулгүй хадгалах санд хадгалагдана.
- Систем нь шифрлэгдсэн мессеж эсвэл орчуулга бүхий мэдэгдлийг харуулдаг.
- Түлхүүрүүд нь энгийн мессеж шиг хаашаа ч явдаггүй. Түлхэх үйлчилгээ нь мессежийн кодыг тайлах арга байхгүй.
Бид энэ хувилбарыг ажиллаж байгаа гэж хүлээн зөвшөөрч, iOS програмын хамгийн сүүлийн үеийн шинэчлэлт дээр хэрэгжүүлсэн.
Техникийн талыг сонирхож буй хүмүүс эх кодыг үзэх боломжтой:
Эх сурвалж: www.habr.com