署名の対象はバイト列ですが、XML、JSON、メールなどの形式では、同じ内容に対して何通りものバイトエンコーディングが可能です。正規化方式はそれを 1 つに固定します。XML-DSig と SAML には Exclusive XML Canonicalization、JSON には JSON Canonicalization Scheme(JCS、RFC 8785:キーをソートし、数値は ECMAScript の書式、空白なし)、メールのヘッダーと本文には DKIM の simple と relaxed アルゴリズム(RFC 6376 §3.4)、ASN.1 には正規形としての DER があります。
正規化はどれも攻撃対象領域になります。署名者と検証者がまったく同じように実装しなければならず、アプリケーションは生の入力ではなく正規化された内容に基づいて動作しなければならないからです。XML 署名ラッピングも DKIM の本文長を悪用する手口も、まさにその隙を突いています。JWS や COSE などの形式は、送信されるバイト列そのもの(base64url(header).base64url(payload))に署名することでこの問題を回避しており、そのため正しく実装しやすくなっています。