Philipp'in cevabı mükemmel bir şekilde iyi olsa da, giriş sunucusu ile oyun sunucusu arasında bağlantı gerektirmeyen biraz farklı bir yol var, bu böyle bir bağlantı zorsa faydalıdır.
- Kullanıcı oturum açma sunucusunda kimlik doğrulaması yaptığında, yukarıdaki gibi bir oyun sunucusu adresi ve bir oturum açma belirteci gönderilir. Ancak bu simge 2 bölümden oluşur: giriş sunucusundaki zaman ve bu numaranın karması artı kullanıcı adı, IP adresleri, oyun sunucusunun IP adresi veya kimliği ve yalnızca bildiğiniz gizli bir anahtar.
- İstemci, bu jetonu göndererek sağlanan oyun sunucusunda oturum açmaya çalışır. Sunucu, giriş belirtecindeki bilgilere ek olarak kendi IP adresi / kimliğine ve gizli anahtara göre önceki ile aynı karmayı oluşturur. Bu karma jetondakiyle eşleşiyorsa, oynatıcının doğru şekilde kimlik doğrulaması yaptığını bilirsiniz. Ardından tarihin çok eski olmadığını kontrol edin (örn. 1 dakikadan fazla).
Bu çalışır çünkü:
- Tarihin sona ermesi nedeniyle kopyalanamaz ve tekrar kullanılamaz.
- Gizli anahtarı bilmeden yeni bir giriş olmadan inşa edilemez.
- Başka bir kişi (örneğin bir paket dinleyicisi ile) tarafından kolayca ele geçirilemez ve orijinal IP adresi onu oluşturmak için kullanıldığından kullanılamaz.
- Kullanıcı adı karmanın bir parçasını oluşturduğundan farklı bir hesap için kullanılamaz.
- Sunucunun kimliği / IP adresi karmanın bir parçasını oluşturduğundan, farklı oyun sunucularında eşzamanlı oturum açma işlemleri için kullanılamaz.
Veya daha basit bir ifadeyle, karma, gönderenin giriş jetonunu takmasının neredeyse imkansız olmasını sağlar ve böylece jetondaki bilgilere güvenilebilir.
Herhangi bir güvenlik odaklı karma işlemde olduğu gibi, elde edebileceğiniz en iyi karma işlevini kullanın - şu anda insanlar bcrypt, PBKDF2 ve scrypt gibi görünüyor ve kaba anahtar çoğaltmayı daha az pratik hale getirmek için gizli anahtarınızın çok uzun olmasını sağlayın.