XAES-256-GCM'e giriş
- XAES-256-GCM, 256 bit anahtar ve 192 bit nonce kullanan kimlik doğrulamalı bir şifreleme algoritmasıdır (AEAD)
- Başlıca hedefler:
- Rastgele üretilen nonce'ları güvenli biçimde desteklemek
- FIPS 140 uyumluluğu
- Yaygın şifreleme kütüphanelerinde kolayca uygulanabilmek
XAES-256-GCM'in tasarım hedefleri
- Büyük nonce kullanarak sınırsız sayıda mesaj için güvenli şekilde rastgele üretim yapılabilmesi
- FIPS 140 uyumluluğu sayesinde çeşitli ortamlarda kullanılabilmesi
- Basit uygulama ile kullanıcı üzerindeki yükü azaltmak
XAES-256-GCM'in çalışma prensibi
- AES-256-GCM'i temel alan genişletilmiş bir nonce yapısı kullanır
- Girdi anahtarı ve nonce kullanılarak türetilmiş anahtar hesaplanır
- Mesajı işlemek için üç AES-256 çağrısı yapılır
Uygulama ve optimizasyon
- Go referans uygulaması 100 satırdan az koddan oluşur
- Yalnızca standart kütüphanedeki
crypto/cipher ve crypto/aes kullanılır
- NIST SP 800-108r1 KDF ve NIST AES-256-GCM AEAD kullanılarak açıklanabilir
Üçüncü taraf uygulamalar ve uyumluluk
- .NET 8+, pyca/cryptography ve Web Cryptography API üzerinde üçüncü taraf uygulamalar bulunur
- FIPS 140 uyumluluğu için round sayısı değiştirilemez
Alternatifler ve test vektörleri
- AES-GCM-SIV gibi çeşitli alternatifler mevcuttur
- Ana kod yolları için test vektörleri içerir
Özet
- XAES-256-GCM, güvenli, uyumlu ve birlikte çalışabilir bir AEAD olarak tasarlanmıştır
- XChaCha20Poly1305 ve AES-GCM-SIV'i tamamlayıcı bir rol üstlenir
- Go standart kütüphanesine eklenmesi umuluyor
GN⁺ görüşü
- XAES-256-GCM'in büyük nonce kullanarak güvenliği artırması dikkat çekicidir
- FIPS 140 uyumluluğu sayesinde çeşitli ortamlarda kullanılabilir
- Go gibi dillerde kolayca uygulanabilmesi, geliştiriciler için faydalıdır
- AES-GCM-SIV gibi alternatifleri de değerlendirmekte fayda vardır
- Yeni bir teknolojiyi devreye alırken performans ve uyumluluğun dikkatle incelenmesi gerekir
1 yorum
Hacker News görüşü
Tasarım çok akıllıca: CMAC tabanlı ve düşük seviye primitive'ler olmadığında anahtar türetmek için AES-CBC kullanılabiliyor
Filippo'nun işi harika: rastgele nonce kullanıldığında her yaklaşık 2^32 mesajda bir anahtarı döndürme sorununu çözüyor
Bu keşke birkaç yıl önce bir şifreli dosya sistemi yazarken var olsaydı
Bunun, arşiv dosyası şifreleme amacıyla age'in FIPS uyumlu bir varyantında[1] kullanılmasını umuyorum
Kriptograf olmayan biri olarak soruyorum: neden 256 bit yerine 192 bit nonce kullanılıyor?
(2⁸⁰ mesajda çakışma riski 2⁻³²)