Uçtan uca TCP'niz varsa, uçtan uca TLS kullanın (örn. HTTPS ile).
Özellikle kriptografi söz konusu olduğunda tekerleği yeniden icat etmeyin - çoğu insan yanlış anlar. Cihaz TLS'yi destekleyemeyecek kadar kaynak kısıtlaması olmadığı sürece, AES seviyesine inerseniz, yanlış yapıyorsunuz demektir . 1 numaralı hata şifrelemek ve kimlik doğrulamayı unutmaktır - sunucunuz ve cihazınız arasında şifreli bir kanal yerine sunucunuz ve ortadaki bir adam arasında şifreli bir kanalınız varsa, şifreleme herhangi bir fayda sağlamaz . TLS'yi kullanamıyorsanız, hangi protokolü kullanırsanız kullanın, her şeyin kimliğini doğruladığından ve gizli olması gerekenleri şifrelediğinden emin olun.
TLS'yi güvenli bir şekilde kullanmak için, her bir katılımcının bakış açısından hangi garantilere ihtiyacınız olduğunu düşünün. Genellikle cihazın yasal sunucu ile konuştuğunu bilmesi gerekir. Bu, sunucunun sertifikasını kontrol etmesi gerektiği anlamına gelir. Cihaz güvenilir olarak kaydedilmiş bir sertifika yetkilisinin X.509 sertifikasına sahip olmalıdır; bu, bir saldırgan tarafından değiştirilemeyen bir depolama alanı gerektirir, ancak depolama alanının gizliliğini gerektirmez. Sunucunun sertifikasını doğrudan kodlamamalısınız, çünkü bu, güvenliği ihlal edilmişse sertifikayı kolayca değiştirmenize izin vermez. Bunun yerine, cihaz beklenen kimliği depolarsunucunun (ana bilgisayar adı) ve belirli bir ortak anahtarın beklenen ana bilgisayar adına ait olduğunu garanti eden bir sertifika yetkilisinin sertifikası. Bir kez daha, tekerleği yeniden icat etmeyin, TLS kütüphaneniz veya uygulamanız tarafından sağlanan sertifika kontrolüne güvenin.
Sunucunun meşru bir istemciyle konuştuğunu bilmesi gerekiyorsa, her istemcinin kendi istemci sertifikasına sahip olması gerekir. Bu, istemcide gizli depolama gerektirir. İstemci sertifikasını TLS kitaplığınızdan TLS oturum açma işlevine aktarın veya uygulama yapılandırmasında ayarlayın.
Bu, sunucunuz ve cihazınız arasındaki iletişimin güvenliğini sağlar. Mobil uygulama cihazla doğrudan konuşabiliyorsa (örneğin, yerel wifi ağındayken bağlantısı kesilmiş çalışmaya izin vermek için), önce akıllı anahtar ve cep telefonu arasında eşleştirme yapmanız gerekir. Eşleştirme, bir anahtar değişimi, tercihen kaynaklar izin veriyorsa genel anahtar değişimi, aksi takdirde gizli anahtarların anlaşması anlamına gelir. Bu eşleştirmenin amacı, her cihazın kiminle konuştuğunu bilmesini sağlamaktır.
İster doğrudan mobil cihazdan akıllı anahtara veya bir sunucu aracılığıyla olsun, kontrol kanalını güvenli hale getirmeniz gerekir. Yetkilendirmeyi düşünün: anahtara farklı erişim düzeyleri var mı, örneğin yeniden yapılandırmaya izin veren bir kontrol seviyesi ve sadece açma / kapama geçişine izin veren temel bir kanal? Bu genellikle güvenli kanal (mümkünse TLS) oluşturulduktan sonra bir kimlik doğrulama adımı ile gerçekleştirilir.
Bir diğer husus, ürün yazılımı güncellemeleri. Bu zor bir şey: bir yandan mutlak güvenlik diye bir şey yoktur, bu yüzden arada sırada uygulanacak güvenlik yamalarınız olacaktır. Öte yandan, bir ürün yazılımı yükseltme mekanizması karmaşık bir şeydir ve kendisinde hatalar olabilir. En azından, ürün yazılımı yükseltmelerinizin imzalandığından emin olun. Yalnızca yükseltmeler için iletişim kanalının güvenliğine güvenmek tehlikeli, çünkü güvenli bir kanal için güvenilen güvenilir bir statik güvenlik doğrulamasından daha büyüktür ve bazen bir ağ bağlantısı olmadan ürün yazılımı güncellemelerini uygulamak isteyebilirsiniz. İmzayı doğrulamaya ek olarak, ideal olarak geri çekilmeye karşı biraz korumanız olmalıdır, böylece bir rakip '