Signal'e Benzer Gerçekten Güvenli Bir Mesajlaşma Uygulaması Nasıl Yapılır?
Yayınlanan: 2021-10-05Çevrimiçi iletişimin gizliliği ve güvenliği bu günlerde sıcak konular ve bir nedenden dolayı. Şifreli bir uygulamanın nasıl oluşturulacağını bildiğimiz için, bu makalede deneyimlerimizi paylaşmak ve ipuçları sunmak istiyoruz. Sektörün mevcut durumu, şifreleme yöntemleri ve olası risklerden bahsedeceğiz. Fiyat tahmini için makalenin sonuna gidin.
Ne oldu?
2021'in başında dünyanın en popüler mesajlaşma uygulaması WhatsApp, yeni hizmet şartlarını kullanıma sundu. Kısmen kafa karışıklığı nedeniyle oldukça büyük bir kargaşaya neden oldular. Bundan sonra, Facebook'un (WhatsApp'ın sahibi olduğu) tanınmış bir eleştirmeni olan Tesla CEO'su Elon Musk, 42,5 milyon Twitter takipçisinin daha önce pek tanınmayan bir haberci olan Signal'e geçmesini önerdi.
Sinyali Kullan
— Elon Musk (@elonmusk) 7 Ocak 2021
Bu tweet'in ardından , şifreleme sistemi WhatsApp'ın kullandığı Signal , bu arada, kullanıcılarda bir artış gördü. Bu dalgalanma o kadar büyüktü ki sunucular başa çıkmakta zorlandı. Signal'in geliştiricileri durumla başa çıkmayı başardı, ancak güvenli mesajlaşma sistemlerine olan talebin arttığını gösterdi. Artık herkes Signal gibi bir uygulamanın nasıl oluşturulacağını bilmek istiyor. Bu da bizi bu makaleye getiriyor.
Güvenli bir anlık mesajlaşma programına sahip olmak ne anlama gelir?
Günümüzde çoğu anlık mesajlaşma uygulaması uçtan uca şifreleme kullanır. Nedir? Örnek olarak bir sohbet uygulaması mimarisinin şeması:
Basitçe söylemek gerekirse, tipik bir habercinin birbirine bağlı üç ana parçası vardır:
gönderenin cihazı
Bir sunucu
alıcının cihazı
Bir gönderici tarafından bir alıcıya bir sunucu aracılığıyla bir mesaj gönderilir. Şifreleme olmadan, bu mesaj düz metin olarak iletilecektir ve bu nedenle yol boyunca herhangi bir noktada ona erişimi olan herkes tarafından okunabilir. Şifreleme ile mesaj, aktarım için düz metinden - bir anahtarla şifrelenmiş - şifreli metne dönüştürülür ve daha sonra eşleştirilmiş bir anahtarla alıcının cihazında geri dönüştürülür (şifresi çözülür) .
Uçtan uca şifreleme , şifreleme anahtarlarının sunucu yerine uçlarda, yani kullanıcıların cihazlarında saklanması anlamına gelir. Bu sayede gönderici ve alıcı dışında hiç kimse mesajları okuyamaz . Sunucunun sahibi olan servis sağlayıcının bile bunlara erişimi yoktur. Bu mesajları hacklemek için bir bilgisayar korsanının kullanıcıların cihazlarına erişmesi gerekir, çünkü servis sağlayıcının sunucusunu hacklemek pek işe yaramaz.
Uçtan uca şifrelemenin zayıf noktası, ortadaki adam (MITM) saldırısına açık olmasıdır . Yetenekli MITM bilgisayar korsanları, bir sunucuda depolanan genel anahtarı hackleyebilir ve sistemi bilgisayar korsanını haklı bir alıcı olarak tanıyacak şekilde yapılandırabilir ve bilgisayar korsanının bir konuşmayı dinlemesine ve hatta hedeflenen alıcının yerine katılmasına izin verebilir.
MITM saldırılarına karşı savaşmak için Signal geliştiricileri, protokollerinin uçtan uca şifrelemesini Double Ratchet Algoritması ile daha da yükseltti. Bu algoritma, kullanıcılar uygulamayı yüklediğinde oluşturulan genel ve özel anahtarlara ek olarak oturum anahtarları oluşturur. Gönderilen her mesaj için oturum anahtarları oluşturulur ve oturum tamamlandığında (yani mesaj alındığında) kendi kendini imha eder, bu da bir bilgisayar korsanının bir oturum için anahtarı almayı başarırsa tüm mesajların şifresini çözmesini imkansız hale getirir .
WhatsApp, tüm mesajları için uçtan uca şifreleme kullanır. Aslında, Signal'in kendi şifreleme protokolünü kullanır. Peki şimdi bununla ilgili sorun ne?
Uçtan uca şifrelemeye farklı yaklaşımlar
WhatsApp'ın mesajlarınızın içeriğini gözetleyemediği ve uygulama içi aramalarınızı dinleyemediği doğrudur. Ancak, WhatsApp'ın kullandığı Signal şifreleme protokolünün sürümü yalnızca mesajların içeriğini şifreler . Bu, WhatsApp'ın ve buna bağlı olarak Facebook'un ve bilgileri paylaşmaya karar verdikleri herkesin kiminle, ne zaman ve nereden konuştuğunuzu görebileceği anlamına gelir. Bu meta veriler, bir konuşmadaki tüm katılımcılar hakkında çok kişisel bilgileri ortaya çıkarabilir .
Aynı zamanda, Signal uygulaması meta verileri de kodlayan güncellenmiş bir protokol kullanır ve hiç kimse - hatta uygulamanın sahipleri bile - kullanıcıların cihazlarına doğrudan erişim olmadan şifresini çözemez .
Ayrıca, Signal'in Gizlilik Politikası uyarınca, neredeyse hiçbir meta veri sunucularında kalıcı olarak depolanmaz - yalnızca bir mesajın alınması için gereken süre boyunca. Ardından, kullanıcının son oturum açma tarihi dışındaki her şey silinir.
Bunu yapan diğer tek mesajlaşma uygulaması Telegram. Ancak Telegram'da uçtan uca şifreleme, varsayılan olarak tüm sohbetlere değil , yalnızca gizli modda uygulanır . Genel mesajlar Telegram'da iyi şifrelenmemiş. En azından Telegram, bu tür bilgileri hükümetler veya reklamcılar olsun hiç kimseyle paylaşmayı reddediyor.
Bugün, mesajlaşma uygulaması güvenliği çok büyük bir konudur - bir habercinin, kullanıcıların bilgilerini hükümetlerle paylaşma konusundaki isteksizliği veya isteksizliği genellikle sınırlamalar ve yasaklarla karşılanmaktadır. Örneğin Telegram, yaratıcısının anavatanı olan Rusya'da yasaklandı; Birleşik Arap Emirlikleri, devlete ait olmayan tüm VoIP hizmetlerini yasakladı. Buna yanıt olarak, her yerde insanlar daha güvenli iletişim araçları talep ediyor ve güvenli mobil mesajlaşma uygulamaları pazarı büyüyor .
Peki güvenli haberci nasıl yapılır?
Çoğu kişi, muhtemelen birkaç tane olmak üzere en az bir haberci kullanır ve bir mesajlaşma uygulamasının temel özellikleri sizi pek şaşırtmaz. Bu yüzden bu bölümde kısa olacağız. Güvenli bir sohbet çözümü için bir özellik tablosu :
Özellikleri | Açıklama |
---|---|
İlk Katılım | Uygulamanızı kısaca tanıtın; ne kadar kısa olursa o kadar iyi, ancak anlaşılır hale getirin. |
Kayıt Ol Giriş yap | Messenger hesabı genellikle bir telefon numarasına bağlıdır. |
Kullanıcı profilleri | Bir profil, bir kullanıcının kişisel bilgilerini ve kişiler, ayarlar ve SSS'ler gibi önemli özelliklere bağlantılarını saklar. |
Ayarlar | Kullanıcıların kendi kolaylıkları için haberciyi ayarlamasına izin verin. |
Bildirimler | Bir mesajlaşma uygulamasında, anlık bildirimler için güvenilir bir sisteme sahip olmak çok önemlidir. |
Metin sohbetleri | Hem bire bir sohbetleri hem de grup sohbetlerini desteklemek için modern bir mesajlaşma uygulaması gereklidir. |
Dosya transferi | Kullanıcıların kısa mesaj alışverişi yapabilmesinin yanı sıra resim ve belge paylaşabilmesi gerekir. |
Sesli sohbetler/çağrılar ![]() | VoIP özelliği bugün mesajlaşma kadar önemlidir. Kaliteli ses, düşük internet hızlarında bile sabit bir bağlantı gerektirir. |
Kendi kendini imha eden mesajlar | Signal protokolüyle bile, birisi bir kullanıcının telefonunu ele geçirirse, kullanıcılar silmedikçe önceki tüm mesajları görebilir. Kullanıcıların mesajları ve/veya medya dosyalarını yok etmek için bir zamanlayıcı ayarlaması için bir seçenek ekleyebilirsiniz. |
senkronizasyon | Çoğu kişinin, iletişim uygulamalarının yüklü olduğu birden fazla cihazı vardır. Kullanıcıların uygun gördükleri cihazlar arasında sorunsuz geçiş yapabilmeleri için bir senkronizasyon özelliği sağlamanız gerekir. |
İki adımlı kimlik doğrulama | Bir cihazın çalınması durumunda kullanıcıların verilerini daha iyi korumak için parmak izi, parola, pin kodu veya doğrulama kodu veya bağlantısı aracılığıyla iki adımlı kimlik doğrulama sunun. |
Kalabalığın arasından sıyrılan bir eşler arası mesajlaşma uygulaması oluşturmak istiyorsanız şu özellikleri göz önünde bulundurun:
Çıkartmalar ve GIF'ler. Bugün diğer tüm haberciler, popüler GIF hizmeti Giphy'yi, ifadeleri tamamlamak için arayüzüne entegre ediyor. Çıkartmalar, Telegram onları ücretsiz olarak sunmaya başladığında popüler hale geldi (örneğin, yalnızca bazı çıkartmaların ücretsiz olduğu Viber'in aksine).
Gizli/özel sohbetler. Kullanıcılarınızın meta verilerini şifreleseniz de şifrelemeseniz de, günümüzün fırtınalı gerçekliğinde, kaybolan veya kilitlenebilir sohbetlere sahip olmak uygulamanızın satış noktası olabilir. Örneğin, Telegram, cihazınızda Telegram'dan çıkış yaparsanız otomatik olarak kaybolan gizli sohbetler sunar. Bu sohbetler Telegram'ın bulut sunucularında depolanmaz ve bu nedenle birden fazla cihazda oturum açmış olsanız bile yedeklenemez veya senkronize edilemez.
Görüntülü sohbet. 2020'de, salgın nedeniyle çok sayıda insanın uzaktan çalışmak zorunda kalmasıyla birlikte, video konferans araçlarının popülaritesinde büyük bir artış görüldü. Ve birçoğu, mevcut popüler mesajlaşma programlarında görüntülü aramaların (bire bir ve grup aramalarının) olmamasından yakındı. Kesinlikle sahip olunması gereken bir özellik değil, ancak kesinlikle kullanıcılar arasında popüler olacak.
Bir mesajlaşma uygulamasının güvenliği nasıl sağlanır
Arka uç, sihrin habercilerde gerçekleştiği yerdir. Mesajların nasıl şifreleneceğini bilen kişiler oldukları için, sohbet uygulamanızın güvenliğinden ve güvenilirliğinden arka uç uzmanları sorumludur.
Uçtan uca şifrelemeyi uygulamanın ve bir iletişim uygulamasını güvenli hale getirmenin birkaç yolu vardır . Genellikle, şifreli mesajlar bir habercinin sunucularında depolanır - bulut sunucuları daha güvenlidir ve bu nedenle bu amaç için önerilir - ve şifre çözme anahtarları, sunucuların saldırıya uğraması durumunda bir veri ihlalini önlemek için yalnızca kullanıcıların cihazlarından alınabilir.
Mesajları sunucularınızda tamamen saklamaktan vazgeçip kullanıcıların cihazlarında saklamak da mümkündür. Ancak bu , oturum açtıkları cihazların kaybolması veya uygulamayı silmeleri durumunda kullanıcılarınızın mesaj geçmişlerini geri yükleyemeyecekleri anlamına gelir . Mesajları cihazlar arasında senkronize etmek de imkansız olacaktır.
Signal gibi güvenli bir mesajlaşma uygulaması yapmak için, aslında Signal'in kendisinden şifreli mesajlaşma API'sini kullanabilirsiniz . Signal'in açık kaynaklı şifreleme protokolü, sürekli olarak gözden geçirildiği ve denetlendiği için haberciler oluşturan geliştiriciler arasında en popüler olanıdır. Yazma tarihi itibariyle, aşağıdaki haberciler mesajlarının içeriğini şifrelemek için Signal'in protokolünü kullanır:
- Naber
- Facebook Messenger (yalnızca gizli sohbetler)
- Skype (yalnızca Özel Görüşmeler)
- Android için Google Mesajları (SMS)
Telegram, gizli sohbetler için MTProto adlı kendi 256 bit simetrik AES şifreleme tabanlı algoritmasını kullanır. Bu algoritma, Telegram'ın geniş çapta eleştirilmiş olduğu kapalı kaynaktır.
Güvenli bir mesajlaşma uygulaması yapmanın maliyeti
Herhangi bir uygulama yapmanın maliyeti, büyük ölçüde geliştirme için gereken süreye bağlıdır. Özellik sayısı arttıkça, haberciler çok karmaşık görünmüyor; ancak, iyi şifrelenmiş bir mesajlaşma uygulaması için tek başına arka ucun oluşturulması yaklaşık 520 saat sürebilir .
Bir haberci arka ucu için olağan programlama dili seçenekleri Elixir veya Erlang'dır - Ruby on Rails, metin mesajları, medya ve sesli/görüntülü aramalar biçimindeki büyük miktarda veri için iyi bir seçim değildir. WhatsApp Erlang'ı kullanırken, Elixir Discord tarafından kullanılıyor.
Mind Studios'ta , Elixir tabanlı bir arka uca sahip bir mesajlaşma uygulaması geliştirdik. Bununla birlikte, Elixir'in kendisi, bazı Ruby'lerin karıştırıldığı Erlang'a dayanmaktadır, bu nedenle deneyimli bir Elixir geliştiricisi, Erlang'da da kod yazabilir.
Güvenli bir mesajlaşma uygulaması geliştirmek için gereken zamanı şöyle özetleyebiliriz :
İş analizi ve şartname oluşturma — 96+ saat
UI/UX tasarımı — 168+ saat
iOS istemci tarafı mobil uygulaması — en temel özelliklere sahip bir MVP için 450+ saat
Arka uç geliştirme — 520+ saat
iOS uygulama testi — ~ 240 saat
Android geliştirme, iOS geliştirmeden biraz daha az zaman alır, ancak daha geniş cihaz çeşitliliği nedeniyle testler daha uzun sürer.
Bu zorlu zaman tahminiyle, gerçekten güvenli bir sohbet uygulaması oluşturmanın maliyeti 51.590 dolardan başlayacak ve ekstra özelliklerle artacaktır.
Çözüm
Güvenli haberciler son derece önemlidir ve onlara olan talep bugün yüksektir ve yarın daha da yüksek olacaktır. Ama rekabet de öyle. Her şirket şifreli mesajlaşma uygulamaları yapamaz. Signal gibi güvenli bir anlık mesajlaşma uygulaması geliştirmek için bu alanda deneyimli geliştiricilere ihtiyacınız olacak .
Ayrıca, tasarım söz konusu olduğunda sektör liderlerine ayak uydurmanız gerekecek. Signal uygulaması basittir ve sezgiselliği ile ünlü değildir, ancak gizliliklerini zillerden ve ıslıklardan daha fazla önemseyen kullanıcıları kazanır. WhatsApp ve Telegram ise şık görünüyor ve güvenli olmanın yanı sıra son derece sezgisel (güvenlikleri Signal ile aynı seviyede olmasa da yine de etkileyici). Bu nedenle, bu alanda parıldamak için özel uygulamanızın hem güvenli hem de kullanıcı dostu olması gerekir . Bu gereksinimleri dengelemek önemsiz bir mesele değildir. Ancak doğru ekiple bu mümkün.