6.1. Kimlik Doğrulama
Sesame, kullanıcıların muhataplarıyla kimlik açık anahtarlarını doğrulamasına dayanır. Örneğin bir kullanıcı çifti; tüm cihazları için açık anahtar parmak izlerini elle ya da bir QR kodu tarayarak karşılaştırabilir. Kimlik doğrulama yöntemlerinin ayrıntıları bu belgenin kapsamı dışındadır.
Kimlik doğrulama yapılmazsa, kullanıcılar kimle iletişim kurduklarına dair kriptografik bir güvenceye sahip olmazlar.
Bir Sesame cihazı; mesaj gönderirken, alırken ya da yeniden gönderirken uzak bir kullanıcı için değişmiş bir (ya da birden çok) kimlik açık anahtarıyla karşılaşabilir.
Bu durum; UserID'yi yeni bir kullanıcının kullandığına, kullanıcının uygulamayı yeniden kurduğuna ya da (cihaz başına kimlik anahtarları kullanılıyorsa) yeni cihazlar eklediğine işaret edebilir. Kötü niyetli bir sunucunun ya da özgün kullanıcının UserID'sini ele geçirmiş kötü niyetli bir kullanıcının uzak kullanıcıyı taklit etme girişimine de işaret edebilir.
Kimlik anahtarlarında bir değişiklik saptandığında kullanıcılar kimlik doğrulama sürecini tekrarlamalıdır; aksi takdirde kimle iletişim kurduklarına dair hiçbir kriptografik güvenceye sahip olmazlar. Bir anahtar değişikliği olduğunda cihaz, gönderme, alma ya da yeniden gönderme süreçlerini duraklatmayı (ya da iptal etmeyi) ve yalnızca kullanıcı anahtar değişikliğini olumlu biçimde onayladığında süreci sürdürmeyi (ya da yeniden başlatmayı) tercih edebilir. Bu durumda, koşullu güncelleme işlemi bir anahtar değişikliği saptandığında duraklar (ya da bir hata üretir).
6.2. Cihazın Ele Geçirilmesi
Bir saldırgan, bir cihazın kimlik gizli anahtarı ve oturum durumu gibi gizli değerlerini öğrenirse güvenlik felaket biçimde ihlal edilir. Bir cihazın ele geçirilmesinden kurtulmak; kullanıcının ele geçirilmiş cihazı ile ele geçirilmiş kimlik anahtar çiftini değiştirmesini ve tüm muhataplara yeni açık anahtarı bildirmesini gerektirir.
Bir saldırgan, bir ele geçirmeyi birçok biçimde değerlendirebilir:
Bir cihazın kimlik gizli anahtarını ele geçirmiş bir saldırgan, söz konusu cihazı diğer cihazlara karşı taklit edebilir.
Bir cihazı ele geçirebilen bir saldırgan, cihaza sürekli arka kapı erişimini sürdürebilir ya da ileriki güvenliğini azaltacak biçimde kurcalayabilir (örneğin rastgele sayı üreticisini zayıflatarak).
Bir cihazın gizli anahtarlarını çalabilen bir saldırgan, büyük olasılıkla yerel olarak arşivlenmiş mesajların düz metinlerini ve MessageRecords içindeki düz metinleri de çalabilir.
Saldırgan, ele geçirilmiş anahtarları pasif çözme (passive decryption) için kullanmayı deneyebilir. Örneğin eski iletişimleri geriye dönük çözmeyi ya da gelecekteki iletişimleri gizlice çözmeyi deneyebilir. Saldırgan ayrıca geçmişteki bir anda cihaz durumunu açığa çıkarmak üzere bir kriptanaliz ya da adli analiz saldırısı kullanabilir ve bu durumu olabildiğince eski trafiği çözmek için değerlendirebilir.
Sesame'in pasif çözmeye karşı direnci; birlikte kullanıldığı oturum kurma ve mesaj şifreleme algoritmalarından miras alınır. Örneğin Sesame, X3DH ve Double Ratchet algoritmasıyla birlikte kullanıldığında; ele geçirme öncesi ve ele geçirme sonrası mesajların pasif çözümü, geçici anahtarların, önanahtarların ve ratchet yapısının kullanımıyla sıkı biçimde sınırlanır [1], [2].
Tek istisna, eşleşen oturumlarla mesaj alışverişi yoluyla güvenliğin iyileştiği durumlarda ortaya çıkar — Diffie-Hellman ratchet'ta olduğu gibi [2]. Bu durumda, ve iki tarafın birbirleriyle aynı anda yeni oturumlar başlattığı nadir örneklerde, Sesame'in eşleşen tek bir oturum çiftine yakınsaması birkaç mesaj alışverişi sürebilir.
Saldırgan, hedef cihazı ele geçirmeden önce, ele geçirme gerçekleştiğinde daha eski mesajları çözme yeteneğini artırmak amacıyla iletişimleri değiştirebilir. Örneğin sunucu; yeniden deneme isteklerini sahteleyerek ya da cihazları tekrar tekrar silip yeniden ekleyerek, hedef cihaz tarafından alınan her mesajın tek-kullanımlık bir önanahtar olmadan yeni bir X3DH başlangıç mesajı kullanmasını sağlayabilir. Bu durumda, imzalı bir önanahtarın gizli anahtarının yaşam süresi boyunca hedefe gönderilen mesajlar; saldırgan söz konusu gizli anahtarı ele geçirirse çözülebilir hâle gelir.
Bir saldırgan, anahtar-ele-geçirme taklidi (key-compromise impersonation) gerçekleştirmeyi deneyebilir; burada saldırgan, ele geçirilmiş tarafa karşı diğer tarafları taklit eder (ele geçirilmiş tarafı diğerlerine taklit etmekten farklıdır). Örneğin Sesame, X3DH ve Double Ratchet kullandığında sunucu; ele geçirilmiş bir imzalı önanahtarı X3DH ile kullanarak hedefe, rastgele üçüncü taraflarla eşleşiyor gibi görünen oturumlar kurabilir. Saldırganın bu yeteneği, hedef ele geçirilmiş imzalı önanahtarın gizli anahtar(lar)ını silinceye kadar sürer. Bunun ardından saldırgan; imzalı önanahtarın silinmesinden önce elinde bulundurduğu oturumları kullanarak belirli üçüncü tarafları hedefe taklit etmeyi sürdürebilir. Bu saldırgan yeteneği, hedef saldırganın kontrolündeki oturumları oturum süresinin dolması gibi bir yolla silmedikçe (ve silinceye kadar) devam eder.
Son iki noktayı hafifletmek için X3DH ve Double Ratchet ya da benzer algoritmaları kullanan Sesame cihazları; kötü niyetli bir sunucunun silmeyi engellemesine izin vermeden imzalı önanahtarlarını düzenli olarak silmelidir. Oturum sonlandırma (Bölüm 4.2) son noktayı hafifletmede yardımcı olur.
Çeşitli hafifletmelere karşın, bu tehditlerin hiçbiri tamamen ortadan kaldırılamaz. Hafifletmelerin hiçbiri; bir cihazın ele geçirilmesinin felaket niteliğini ya da ele geçirilmiş cihazın ve ele geçirilmiş anahtarların tamamen değiştirilmesi gerekliliğini değiştirmez.
6.3. Sunucu İletişiminin Korunması
Cihazlar ile sunucular arasındaki iletişim şifrelenmeli ve kimlik doğrulamalı olmalıdır. Bu; dinleyicilere açık olan üst veri miktarını sınırlar ve üçüncü taraf saldırganların cihazdan cihaza iletişim üzerinde etkin ya da pasif saldırılar gerçekleştirmesini zorlaştırır.
Bir saldırgan, sunucuya kimlik doğrularken bir kurban cihazı taklit edebilirse, bu cihaza gönderilen mesajları alabilir. Saldırgan bu mesajları çözemez; ancak gönderen UserID'lerini ve DeviceID'lerini öğrenir.
Bu durum; saldırgan daha önce bir kurban cihaza ait olan aynı UserID, DeviceID ve kimlik açık anahtarıyla sunucuya kayıt olursa da oluşabilir. Bunu hafifletmek için sunucu, yeniden kullanımı önlemek üzere rastgele DeviceID'ler atayabilir ya da kayıt olan kullanıcıdan kimlik gizli anahtarına sahip olduğunu kanıtlamasını isteyebilir (örneğin kayıt sırasında bir nonce'u imzalayarak).
6.4. Eski Verilerin Silinmesi
Bir kullanıcı cihazındaki düz metin bir mesajı silmeyi tercih ettiğinde, bu düz metin kopyalarını içeren MessageRecords de silinmelidir.
Sesame, daha eski oturumları silmenin ne zaman güvenli olduğunu belirlemek için zaman eşikleri kullanır (yani Bölüm 3.1'deki bayat UserRecords ve DeviceRecords ile Bölüm 4.2'deki oturum sonlandırma). Buradaki düşünce; alıcının, daha eski oturumları gerektiren son mesajların gönderilmiş olabileceği andan itibaren bir MAXLATENCY süresi beklemesidir; bu noktada bu mesajlar ya alıcının posta kutusuna ulaşmış ya da kaybolmuştur. Alıcı bir sonraki seferde posta kutusundaki tüm mesajları aldığında ve işlediğinde, daha eski oturumları gerektiren beklenen başka bir mesaj kalmadığından emin olur ve böylece eski oturumlar silinebilir.
Saat hataları alıcının oturumları çok erken silmesine yol açarsa, çözülemeyen gecikmiş mesajların gelmesi riski oluşur. Saat hataları alıcının saatinin ilerlemesini engellerse, bu eski oturumlar hiçbir zaman silinmeyebilir.
Bu riskleri hafifletmek için istemciler; bir saldırganın değiştiremeyeceği güvenli ve güvenilir saatler kullanmalıdır. İstemciler ayrıca, kısa saat sorunlarının gereken verileri silmemesi için sağduyu denetimleri sağlamak amacıyla zaman denetimlerini başka denetimlerle (örneğin belirli sayıda mesaj gidiş-dönüşünü ya da başka olayları sayarak) birleştirmeyi tercih edebilir.
6.5. Sınırlı Döngüler ve Sınırlı Depolama
Bölüm 3.3'teki mesaj gönderme döngüsü; cihazın kayıtlarını sunucunun kayıtlarıyla eşleşecek biçimde tekrar tekrar ayarlamayı dener. Bölüm 4.1'deki yeniden gönderme süreci, bir mesajı bir alıcıya yeniden göndermek üzere tekrar tekrar tetiklenebilir.
Her iki durumda aşırı döngüden kaçınmak için cihazların, her süreçle birlikte bir sayaç kullanması önerilir (örneğin gönderme sırasında bellekte tutulur ve yeniden gönderme için bir MessageRecord içinde saklanır). Cihazlar; bir mesajı gönderme ya da yeniden gönderme girişimlerinin aşırı sayıya ulaşması durumunda bir hata tetiklemelidir.
Bir cihaz, ayrıca bir UserID için aşırı sayıda DeviceRecords ya da oturum üretmeye tetiklenebilir. Bir cihaz, herhangi bir UserRecord için saklayacağı DeviceRecords sayısına makul bir sınır koymayı tercih edebilir. Bir cihaz ayrıca herhangi bir DeviceRecord için saklayacağı oturum sayısına da bir sınır koymayı tercih edebilir. Bu sınır aşılırsa, etkin olmayan oturumlar listesinin sonundan fazla oturumlar silinir.
6.7. Hata İşleme
Mesaj gönderme, alma ya da yeniden gönderme sırasında ortaya çıkan herhangi bir hatanın ilgili süreci sonlandırmasına ve cihazı tutarsız bir durumda bırakacak değişiklikleri iptal etmesine özen gösterilmelidir.
Mesaj gönderme ya da yeniden gönderme sırasındaki hatalar; bir mesajın alıcı posta kutularının bazılarına ulaşmasına ancak hepsine ulaşmamasına yol açabilir.
Sesame üzerine inşa edilen üst düzey protokoller, mesajların alıcı gruplarına kısmi biçimde teslim edilmesini ele almaya hazır olmalıdır. Bir seçenek; işlem anlamları ekleyerek mesajların yalnızca tüm kullanıcılar için gönderme başarılı olduğunda posta kutularına işlenmesini sağlamak ve mesajların teslim edilme olasılığını artırmak için yeniden gönderme desteğini zorunlu kılmaktır.