5.1. Sunucu
Sunumun sadeliği açısından bu belge, tüm kullanıcı ve cihaz kayıtlarını ve tüm mesajları işleyen tek bir sunucudan söz eder. Gerçek bir sistemde bu işlevler birden çok birim arasında dağıtılmış olabilir.
Örneğin, farklı sunucular farklı kullanıcı gruplarını işleyebilir. Bu durumda Alice, Bob'a mesaj göndermek için Bob'un sunucusuyla iletişim kurar; Bob da Alice'e mesaj göndermek için Alice'in sunucusuyla iletişim kurar.
Bir başka örnek olarak, kullanıcı ve cihaz kayıtlarını işleyen sunucu(lar) ile posta kutularını işleyen sunucu(lar) birbirinden ayrı olabilir.
Başka iş bölümleri de mümkün olabilir; tüm olasılıkların çözümlenmesi bu belgenin kapsamı dışındadır.
5.2. X3DH ve Double Ratchet
Sesame, X3DH anahtar anlaşması [1] yoluyla kurulan Double Ratchet oturumlarıyla [2] birlikte kullanılmak üzere tasarlanmıştır.
Bu gerçekleştirimde cihazlar, kimlik açık anahtarlarıyla birlikte sunucuya tek-kullanımlık önanahtarlar (one-time prekeys) ve imzalı önanahtarlar (signed prekeys) yayımlar.
Bir başlatma oturumu kurmak için, gönderen cihaz sunucuyla iletişim kurar ve alıcı cihazın kimlik açık anahtarını, imzalı önanahtarını ve (varsa) bir tek-kullanımlık önanahtarını içeren bir önanahtar paketi (prekey bundle) alır. Bu değerler; X3DH algoritması tarafından hem bir Double Ratchet oturumunu başlatan gizli anahtarı hem de bir X3DH başlangıç mesajını üretmek için kullanılır.
X3DH başlangıç mesajı her başlatma mesajına eklenir; böylece alıcı, onu eşleşen bir Double Ratchet oturumu kurmak için kullanabilir. Bir başlatma mesajına yanıt alındığında, özgün gönderen sonraki mesajlara X3DH başlangıç mesajını eklemeyi bırakır; cihazlar bundan sonra yalnızca Double Ratchet üzerinden iletişim kurar.