Statik IV (ARCH5114)
Anahtar go.security.static-iv · Önem error · Kategori security · CWE CWE-329
Sabit veya sıfır bir IV/nonce kullanmak, aynı anahtarla şifrelenen aynı düz metinlerin aynı şifreli metni üretmesine yol açarak CBC/CTR/GCM’in anlamsal güvenliğini yok eder.
Hatalı
Bölüm başlığı “Hatalı”func encrypt(block cipher.Block, plaintext []byte) []byte { iv := make([]byte, block.BlockSize()) // sürekli sıfır stream := cipher.NewCTR(block, iv) out := make([]byte, len(plaintext)) stream.XORKeyStream(out, plaintext) return out}func encrypt(block cipher.Block, plaintext []byte) ([]byte, error) { iv := make([]byte, block.BlockSize()) if _, err := rand.Read(iv); err != nil { return nil, err } stream := cipher.NewCTR(block, iv) out := make([]byte, len(plaintext)) stream.XORKeyStream(out, plaintext) return append(iv, out...), nil // IV'yi başa ekle}Düzeltme
Bölüm başlığı “Düzeltme”Her şifreleme için crypto/rand ile benzersiz, rastgele bir IV/nonce üretin ve şifreli metinle birlikte saklayın.