Farkındayım OAuth Spec ConsumerKey, ConsumerSecret, AccessToken, RequestToken, TokenSecret veya Doğrulayıcı kodu kökeni hakkında bir şey belirtmez, fakat (özellikle Token önemli ölçüde güvenli belirteçleri oluşturmak için en iyi uygulama varsa merak ediyorum / Gizli kombinasyonlar).
Gördüğüm kadarıyla, token oluşturmak için birkaç yaklaşım var:
- Sadece rastgele baytlar kullanın, tüketici / kullanıcı ile ilişkili veritabanında saklayın
- Kullanıcı / tüketiciye özgü bazı verileri karma hale getirin, tüketici / kullanıcı ile ilişkili veritabanında depolayın
- Kullanıcıya / tüketiciye özel verileri şifreleyin
(1) 'in avantajları, en güvenli görünen bilgilerin tek kaynağı veritabanıdır. Saldırı yapmak (2) veya (3) 'ten daha zor olurdu.
Gerçek verilerin karma haline getirilmesi (2), jetonun muhtemelen zaten bilinen verilerden yeniden üretilmesine izin verecektir. Zaten depolamak / aramak gerekeceğinden (1) 'e gerçekten herhangi bir avantaj sağlamayabilir. (1) 'den daha yoğun CPU.
Gerçek verilerin şifrelenmesi (3), şifre çözmenin bilgileri bilmesine izin verir. Bu, (1) ve (2) 'den daha az depolama ve potansiyel olarak daha az arama gerektirir, ancak potansiyel olarak daha az güvenli de olacaktır.
Dikkate alınması gereken başka yaklaşımlar / avantajlar / dezavantajlar var mı?
DÜZENLEME: Başka bir husus, Jetonlarda bir tür rastgele değer OLMALIDIR, çünkü yeni jetonların süresinin dolması ve yeniden yayınlanması yeteneği olması gerektiğinden, yalnızca gerçek verilerden oluşmaması gerekir.
Soruları Takip Edin :
Kriptografik olarak önemli ölçüde güvenli hale getirmek için minimum Token uzunluğu var mı? Anladığım kadarıyla, daha uzun Token Sırları daha güvenli imzalar oluşturacaktır. Bu anlayış doğru mu?
Hashing açısından belirli bir kodlamayı diğerine göre kullanmanın avantajları var mı? Örneğin, onaltılık kodlamalar kullanan birçok API görüyorum (örn. GUID dizeleri). OAuth imzalama algoritmasında, Token bir dize olarak kullanılır. Onaltılık bir dizeyle, mevcut karakter kümesi Base64 kodlamasından çok daha küçük (daha tahmin edilebilir) olacaktır. Bana öyle geliyor ki, eşit uzunluktaki iki dizge için, daha büyük karakter kümesine sahip olanın daha iyi / daha geniş bir karma dağılımı olacak. Bu bana güvenliği artıracak gibi görünüyor. Bu varsayım doğru mu?
OAuth spesifikasyonu bu sorunu 11.10 Entropy of Secrets'da gündeme getiriyor .