Claude thêm watermark vào văn bản như nào?

Ký tên vào một đoạn văn mà không thêm một ký tự nào. Chỗ còn trống để giấu chữ ký là cách máy tung xúc xắc lúc chọn từng từ.

Claude thêm watermark vào văn bản như nào?

Anthropic phải ký tên vào văn bản Claude viết ra, mà không được thêm một ký tự nào. Không được đổi một từ nào, vì người dùng trả tiền cho chất lượng câu chữ. Chữ ký phải sống sót khi có người bôi đen, sao chép, dán sang cửa sổ soạn email. Và người muốn kiểm tra chữ ký thì không được phép chạy lại mô hình đã viết ra đoạn văn ấy.

Ngày 14 tháng 8 năm 2026, họ nói đã làm được [1].

Chữ ký nằm trong cách máy chọn chữ.

Bốn ràng buộc phải thoả mãn cùng lúc

Bốn sợi xích từ bốn phía cùng khoá vào một ngòi bút: bốn ràng buộc phải thoả mãn cùng lúc, tuột một là cả chữ ký hỏng

Lý do là luật, không làm thì bố mày phạt. Anthropic ký vào Bộ quy tắc minh bạch với nội dung do AI sinh ra của châu Âu hồi tháng 7 năm 2026, cùng khoảng 190 tổ chức khác, và bộ quy tắc đó buộc nhà cung cấp phải đánh dấu văn bản máy viết. Họ bật watermark trên toàn cầu ngay từ đầu, không khoanh vùng, với lý do ghi trong thông báo: hiện chưa có cách khoanh vùng nào đáp ứng được. Nhưng tôi đoán họ biết rõ một chuyện khác: gắn watermark mà không làm giảm chất lượng thì khó, và chỉ bật ở một khu vực thì ngay lập tức có người so sánh chất lượng hai bên. Lời nói dối sẽ lòi ra.

Trích đoạn bài Anthropic về EU AI Act, bôi vàng cụm EU AI Act và applying watermarking globally

Ràng buộc thứ nhất là không được đổi nội dung, vì bật watermark mà văn kém đi thì người ta về dùng AI Trung Quốc. Thứ hai, không được thêm token, vì thêm chữ là thêm tiền, thêm độ trễ. Thứ ba, phải giữ được qua copy và paste. Thứ tư, phải kiểm tra được mà không cần nạp một mô hình vài trăm tỷ tham số lên GPU.

Cách làm Lý do Kết luận
Chèn ký tự ẩn kiểu zero-width space Chuẩn hoá Unicode, gõ lại, đổi font là mất. Ai cũng dò ra và xoá được bằng vài dòng script Loại
Ghi metadata vào file Bôi đen đoạn văn rồi dán đi nơi khác là metadata ở lại phía sau Loại
Lưu lại toàn bộ output rồi tra cứu Phải giữ mọi câu Claude từng viết cho mọi người dùng. Riêng tư và chi phí đều không chịu nổi Loại
Đoán bằng văn phong, kiểu Pangram Đoán theo thói quen hành văn, không có bảo chứng toán học, và người viết thật vẫn bị gắn cờ oan Không phải watermark
Đổi nguồn ngẫu nhiên lúc sinh chữ Không thêm ký tự, không đổi phân phối, kiểm tra chỉ cần khoá và chính văn bản Cách được chọn

Ba ràng buộc đầu loại hết mọi chỗ giấu nằm ngoài câu chữ. Ràng buộc thứ tư loại luôn cách kiểm tra bằng chính mô hình. Còn lại quá trình chọn chữ.

Nguyên văn thông báo là "Future Claude models will generate text that contains a watermark", và chỗ này hay bị đọc quá tay. Model ra mắt từ ngày 2 tháng 8 năm 2026 trở đi có sẵn watermark, còn model cũ hơn đang được bổ sung dần trong vài tháng.

Câu mở đầu thông báo của Anthropic, bôi vàng cụm will generate text that contains a watermark

Cách model chọn chữ (token) nào sẽ được viết ra

Một con xúc xắc đang tung trên hàng ô chữ trống: model không chọn thẳng một từ, nó tung xúc xắc trên bảng xác suất

Mô hình ngôn ngữ không viết cả câu một lúc. Nó viết từng token, mỗi lần một mẩu. Ở mỗi bước nó không chọn thẳng một từ, nó tính ra một bảng xác suất trên toàn bộ từ vựng.

\[p_t(v) \;=\; \Pr\!\left[\,x_t = v \;\middle|\; x_1, \dots, x_{t-1}\,\right]\]

\(t\) là bước thứ mấy, \(v\) là một ứng viên bất kỳ trong từ vựng, \(x_t\) là chữ được chọn ở bước \(t\). Dấu gạch đứng đọc là "với điều kiện đã biết", và mọi thứ bên phải nó là phần văn bản đã viết ra. Cả dòng là bảng xác suất cho chữ tiếp theo, tính từ những chữ đã có.

Anthropic lấy ví dụ câu "The weather today was cold and...". Từ tiếp theo gần như không thể là "sugary", nhưng dễ là "overcast" hoặc "grey". Với người đọc thì chọn từ nào cũng vậy, và lựa chọn đó được quyết bởi một con số ngẫu nhiên.

Trích đoạn Anthropic giải thích model chọn giữa overcast và grey, bôi vàng cụm the choice is settled by a random number

Trong tiếng Việt cũng thế. Câu "Hôm nay tôi đi học thì trời..." nối được bằng "âm u", bằng "mưa", bằng "lạnh". Nghĩa gần như không đổi. Một đoạn văn dài có hàng trăm chỗ như vậy, và ở mỗi chỗ model sẽ tung xúc xắc để chọn ra từ may mắn được viết ra.

\[u \sim \mathrm{Uniform}(0,1), \qquad x_t = F^{-1}_{p_t}(u)\]

\(u\) là một con số ngẫu nhiên giữa 0 và 1, kiểu 0.6371. Hàm \(F\) xếp các từ thành những ô liền nhau trên đoạn đó, từ nào xác suất lớn thì ô dài. Còn \(F^{-1}\) là chiều ngược lại: đưa cho nó một điểm, nó trả về ô chứa điểm đó. Kẻ một đoạn thẳng từ 0 tới 1, chia thành các ô theo xác suất, ném một điểm ngẫu nhiên xuống, điểm rơi ô nào thì lấy từ đó.

Đây là cách chúng ta random có tỷ lệ. Giống bạn chơi game Gacha thì tỷ lệ nổ SSR là 1% ấy, random có tỷ lệ.

Hình 1. Thanh từ 0 tới 1 chia theo xác suất, chấm cam là con số ngẫu nhiên rơi xuống và chọn ra một từ. Sáu xác suất trong hình là con số bài đặt ra cho dễ nhìn, không phải số đo từ một model nào.

Đây là hành vi của model khi chưa có watermark.

Sáu ứng viên cho chỗ trống trong câu "Hôm nay tôi đi học thì trời...". Gieo vài lần để thấy kết quả nhảy lung tung, rồi gieo hai nghìn lần để thấy tần suất bám đúng xác suất gốc.

Hình 2. Gieo vài lần thì kết quả nhảy lung tung. Gieo hai nghìn lần thì tần suất bám sát xác suất gốc, sai lệch chỉ còn ở hàng thập phân thứ hai. Thứ đáng đọc là chuyện tần suất hội tụ về đúng cột p, không phải giá trị p cụ thể của từng từ.

Bạn có thể dùng số Pi thay cho một hàm ngẫu nhiên

Bàn cờ và cuốn sách ghi các chữ số của số Pi: ngẫu nhiên với người chơi, nhưng xác định với người cầm cuốn sách

Anthropic giải thích ý tưởng bằng trò chơi cờ tỉ phú, với mình thì trò cá ngựa cũng tương tự. Thay vì tung xúc xắc, người chơi mở một cuốn sách ghi các chữ số của số \(pi\), bắt đầu từ một vị trí ngẫu nhiên, rồi dùng lần lượt từng chữ số làm kết quả tung. Cách này cũng hao hao cách anh em móc tờ tiền ra lấy số seri để chơi trò "đầu đít" ấy.

Trích đoạn Anthropic về ván cờ tỷ phú chơi bằng các chữ số của số Pi

Với người chơi, không có gì khác. Các nước đi vẫn không đoán trước được. Nhưng ván cờ giờ đây kiểm tra lại được. Ai biết các chữ số của số \(pi\) và biết vị trí bắt đầu, người đó xem lại toàn bộ ván chơi và biết được rằng ván chơi này khớp với đoạn số \(pi\) đó hay không.

Hình 3. Mỗi lượt lấy chữ số kế tiếp của Pi làm kết quả tung. Ngẫu nhiên với người chơi, xác định với người cầm cuốn sách.

Đó là toàn bộ ý tưởng cốt lõi của watermark. Họ đổi nguồn ngẫu nhiên thành một nguồn giả ngẫu nhiên có kiểm soát và truy ngược lại được.

Thay số Pi bằng hàm băm có khoá

Máy xay có cắm chìa khoá: đưa cùng một thứ vào luôn ra cùng một số, nhưng không có khoá thì không lần ngược được

Để không ai "bẻ khoá" công thức kiểm tra thì Anthropic không dùng số \(pi\) mà họ dùng một hàm băm bí mật. Hàm băm là một cái máy xay xác định: đưa cùng một thứ vào thì luôn ra cùng một số, đổi một ký tự thì số ra khác hẳn, và nhìn số ra thì không lần ngược lại được đầu vào.

\[r_t \;=\; h\!\left(x_{t-H},\, \dots,\, x_{t-1},\; k\right)\]

\(h\) là hàm băm, \(k\) là khoá bí mật của Anthropic, thứ người ngoài không có. \(H\) là số chữ phía trước được lấy vào để tính: bài báo Nature dùng \(H = 4\), còn tài liệu của Google gợi ý mặc định 5 [2] [3]. Kết quả \(r_t\) là random seed cho bước \(t\). Lấy bốn chữ vừa viết xong, trộn với khoá bí mật, hash ra một con số, và con số đó điều khiển việc chọn chữ tiếp theo.

Trích đoạn Anthropic, bôi vàng cụm uses the key and a few words that come before

Vì sao lại lấy đúng vài chữ đứng trước làm random seed? Vì detector sau này chỉ có trong tay đoạn văn bản. Nếu random seed phụ thuộc vào prompt, vào thời gian, vào phiên chat, thì không ai tính lại được. Lấy \(H\) chữ ngay trước thì mỗi vị trí có random seed riêng mà không phải lưu trữ gì cả, và người kiểm tra đọc trực tiếp từ văn bản là ra.

Chỗ này cũng là điểm yếu. Sửa một chữ là hỏng random seed của vài bước sau nó, và mục nói về tẩy dấu sẽ quay lại điểm này.

Hình 4. Ngữ cảnh cộng khoá đi vào hàm băm, mỗi ứng viên nhận một điểm bí mật. Người không có khoá nhìn cột điểm này chỉ thấy nhiễu trắng.

Số mũ một chia p làm gì ở đó

Cuộc đua về đích: từ nào xác suất gấp đôi thì chạy nhanh gấp đôi, nên phân phối không hề bị kéo lệch

Có random seed rồi thì dùng nó thế nào. Ý tưởng gốc là của Scott Aaronson năm 2022, và Anthropic xác nhận kỹ thuật của họ thuộc đúng nhánh đó. Mỗi ứng viên được hàm băm cho một con số may mắn ngẫu nhiên, gọi là \(r(v)\), nằm giữa 0 và 1. Rồi model chọn theo công thức này.

\[x_t \;=\; \arg\max_{v} \; r_t(v)^{\,1/p_t(v)}\]

\(\arg\max_{v}\) là trong danh sách các ứng viên \(v\), lấy cái \(v\) đạt giá trị lớn nhất. \(r_t(v)\) là tấm vé may mắn của ứng viên \(v\), do hàm băm cấp cho. \(p_t(v)\) là xác suất gốc model tính toán cho \(v\). Còn \(1/p\) là số mũ: từ càng hợp lý thì \(p\) càng lớn, nên \(1/p\) sẽ càng nhỏ.

Vé may mắn \(r\) luôn nhỏ hơn 1, mà một số nhỏ hơn 1 nâng lên mũ càng nhỏ thì kết quả càng bị kéo lên gần 1. Vậy \(1/p\) nhỏ, nghĩa là \(p\) lớn, nghĩa là từ hợp lý, thì điểm được kéo lên.

Chỗ này hơi lằng nhằng.

Ứng viên p gốc Vé r bốc được Số mũ 1/p Điểm cuối
âm u 0,31 0,50 3,23 0,107
mưa 0,28 0,90 3,57 0,686
lạnh 0,12 0,99 8,33 0,920 thắng
ngọt 0,0001 0,995 10 000 gần như bằng 0

Từ vô lý "ngọt" bốc được con số ngẫu nhiên rất lớn nhưng sẽ bị số mũ 10,000 kéo về gần như bằng không, nên chắc chắn nó sẽ không được chọn. Còn "lạnh" thắng dù xác suất gốc thấp hơn "âm u", nhờ bốc được vé đẹp. Kết quả vẫn ngẫu nhiên, chỉ là ngẫu nhiên có kiểm soát.

Đổi biến một chút thì công thức sẽ giống một cuộc đua xe: đặt thời gian về đích của mỗi ứng viên là \(-\ln(r)/p\), ai về sớm nhất thì thắng. Chọn lớn nhất theo argmax tương đương chọn nhỏ nhất theo cách viết này. Trong cách đọc đó, \(-\ln(r)\) là một chiếc đồng hồ ngẫu nhiên chung cho mọi ứng viên, còn \(p\) là tốc độ chạy. Từ nào xác suất gấp đôi thì chạy nhanh gấp đôi, nên khả năng về nhất cũng gấp đôi. Đó là cách hiểu trực giác vì sao trò này không làm lệch phân phối.

Cột cam là tần suất thắng thật khi chọn bằng công thức có khoá. Vạch đen là xác suất gốc của model. Nếu công thức làm lệch phân phối, hai thứ sẽ tách nhau.

tần suất thắng đo được xác suất gốc

Hình 5. Chạy hai vạn lượt bằng đúng công thức argmax r mũ một chia p. Thứ đáng đọc là khoảng cách giữa cột cam và vạch đen co lại tới đâu khi số lượt tăng, không phải độ cao của một cột riêng lẻ. Sáu xác suất gốc là con số bài đặt ra.

Aaronson kiểm bằng cách nào

Xòe dãy vé rồi cộng dồn: văn bản có watermark thì vé nào cũng đẹp một cách bất thường

Đổi vai một lát. Bạn cầm khoá, cầm một đoạn văn, và không có model.

Ở mỗi vị trí, bạn lấy \(H\) chữ đứng ngay trước cộng khoá rồi băm lại, ra đúng bộ vé mà bên sinh chữ đã dùng. Bạn không cần biết lúc đó danh sách ứng viên gồm những ai, cũng không cần biết \(p\) của chúng. Bạn chỉ cần vé của đúng một chữ, là chữ thật sự có mặt ở vị trí đó, tức \(r_t(x_t)\).

Chữ được viết ra là chữ thắng, mà muốn thắng thì vé phải đẹp. Nên trên văn bản do model sinh bằng đúng khoá này, cả dãy \(r_t(x_t)\) bị đẩy lệch về phía 1. Trên văn bản người viết, hàm băm vẫn cấp một con số cho chữ đứng ở đó, nhưng con số ấy chẳng dính dáng gì tới việc chữ ấy được chọn, nên nó rải đều từ 0 tới 1.

Aaronson cộng cả dãy lại theo công thức này [4].

\[A \;=\; -\sum_{t=1}^{T} \ln\!\left(1 - r_t(x_t)\right)\]

\(T\) là số token của đoạn văn đang kiểm. Mỗi số hạng lấy vé của chữ đã xuất hiện, trừ khỏi 1, rồi lấy logarit và đổi dấu. Vé càng sát 1 thì \(1 - r\) càng bé, logarit của số bé càng âm sâu, nên số hạng càng lớn.

Vì sao phải bọc qua logarit thay vì cộng thẳng vé? Vì nó thổi phồng đúng loại bằng chứng đắt nhất. Vé 0,9 đóng góp 2,30, còn vé 0,999 đóng góp 6,91, gấp đúng ba lần. Mà bốc được 0,9 thì cứ mười lần là trúng một, bốc được 0,999 thì phải nghìn lần.

Ngưỡng đọc thẳng ra từ phân phối. Với văn bản không dính khoá này, mỗi số hạng là một biến ngẫu nhiên mũ có kỳ vọng bằng 1, nên \(A\) quẩn quanh \(T\), và tổng của \(T\) biến như vậy là một phân phối Gamma. Bạn tính được ngay xác suất một văn bản sạch vô tình leo tới mức \(A\) đang thấy. Không mô phỏng, không GPU, và không cần chính con model đã viết ra nó.

Lấy đúng ví dụ "hôm nay tôi đi học thì trời" rồi cho máy đi tiếp sáu bước, mỗi bước một nhóm ứng viên riêng, khoá là chuỗi khoa-cua-anthropic.

Vị trí Chữ được viết ra Vé r -ln(1-r) Cộng dồn
1 mưa 0,5375 0,77 0,77
2 nên 0,9041 2,34 3,12
3 cả lớp 0,9103 2,41 5,53
4 vác theo 0,8936 2,24 7,77
5 áo mưa 0,2866 0,34 8,11
6 cho chắc 0,9546 3,09 11,20

Câu ra là "hôm nay tôi đi học thì trời mưa nên cả lớp vác theo áo mưa cho chắc". Tổng \(A\) được 11,20, còn \(T\) là 6.

"Mưa" thắng dù vé chỉ 0,5375, và "áo mưa" thắng dù vé chỉ 0,2866. Cả hai đều có xác suất gốc cao nên số mũ \(1/p\) nhỏ, một tấm vé tầm thường cũng đủ đưa chúng lên đầu. Đó là lý do phân phối không bị kéo lệch, và cũng là lý do hai vị trí ấy góp ít vào \(A\).

Đem đúng phép tính đó chạy trên một câu người viết cùng sáu vị trí, "trời se lạnh và mình cầm theo cái ô cho chắc", thì \(A\) được 4,73, quẩn quanh đúng \(T\). Sáu token thì chưa kết luận được gì cả: khả năng một đoạn sạch tình cờ leo tới 11,20 vẫn là 1 trên 30.

Chạy ba nghìn lượt cho mỗi độ dài trên đúng lưới sáu vị trí ấy, trung bình mỗi token hội tụ về hai con số. Văn bản sạch cho 1,00. Văn bản có dấu cho 2,05. Đặt ngưỡng báo nhầm ở một phần nghìn thì đoạn 12 token bắt được 39,2 phần trăm, 24 token bắt được 88,6 phần trăm, và từ 60 token trở lên là bắt hết, với tỷ lệ báo nhầm đo được rơi vào khoảng 0,03 tới 0,17 phần trăm.

Đây là số của lưới ví dụ do bài dựng, không phải số đo của Google hay Anthropic. Lưới này cho vị trí nào cũng là một lựa chọn thật giữa ba tới sáu ứng viên, entropy trung bình 1,34 nat. Văn bản thật có rất nhiều chỗ không còn lựa chọn nào. Chính Aaronson viết rằng số token cần có bậc \(1/\alpha^2\) nhân \(\log(1/\varepsilon)\), với \(\alpha\) là entropy trung bình mỗi token và \(\varepsilon\) là mức sai số muốn đạt [4].

Kéo độ dài văn bản rồi nhìn hai đường cộng dồn tách khỏi đường chéo. Đường chéo là mức mà một văn bản không dính khoá được kỳ vọng đạt tới.

Khoá bí mật

Độ dài văn bản 6 token

Vị tríChữ được viết raVé r-ln(1-r)Cộng dồn

Hình 6. Đường cam là đoạn do máy sinh bằng khoá đang nhập, đường xám là đoạn người viết chấm bằng cùng khoá đó, đường đứt nét là mức mà một văn bản sạch được kỳ vọng đạt tới. Kéo về 6 token thì bảng dưới ra đúng sáu dòng đã tính bằng tay. Lưới ứng viên và hàm băm FNV-1a 32 bit là do bài dựng, không phải thứ Anthropic dùng.

Chỗ chỉ có một đáp án đúng, ngay sau "2 + 2 =" chẳng hạn, thì kẻ thắng là kẻ duy nhất và vé của nó rải đều y như của người viết, nên vị trí đó không góp gì vào \(A\). Còn vị trí nào có góp thì góp đúng một số hạng.

Google đổi sang cơ chế giải đấu

Giải đấu loại trực tiếp tám ứng viên: nhà vô địch phải thắng nhiều vòng, nên mỗi chữ để lại nhiều bằng chứng hơn

Claude không dùng thẳng công thức của Aaronson. Anthropic nói rõ họ dùng "a version of the SynthID-Text approach" của Google DeepMind, công bố trên Nature năm 2024. Cùng nguyên lý đổi nguồn ngẫu nhiên, nhưng cách chọn từ thì khác hẳn: thay vì một phép so sánh, họ tổ chức một giải đấu loại trực tiếp.

Trích đoạn Anthropic, bôi vàng cụm a version of the SynthID-Text approach và Scott Aaronson in 2022

random seed \(r_t\) vẫn tính từ vài chữ trước cộng khoá, y như hàm băm vừa nói. random seed đó sinh ra \(m\) hàm chấm điểm \(g_1, g_2, \dots, g_m\), mỗi hàm chấm mỗi ứng viên đúng một điểm là 0 hoặc 1, như tung đồng xu, nhưng là đồng xu xác định theo khoá. Rút một nhóm ứng viên từ chính phân phối gốc của model. Hình minh hoạ trong bài báo dùng \(m = 3\) tầng, tức 8 ứng viên. Chia thành từng cặp, vòng một so điểm \(g_1\), ai cao hơn thì đi tiếp, hoà thì bốc thăm. Vòng hai so \(g_2\). Cứ thế tới tầng cuối, và nhà vô địch là token được viết ra. Trong thí nghiệm của bài báo, họ chạy tới \(m = 30\) tầng.

Hình 7. Tám ứng viên, ba vòng đấu, điểm g tính thật bằng hàm băm. Kẻ thua mờ đi, nhà vô địch là chữ được viết ra.

Tám ứng viên rút từ phân phối gốc, đấu ba vòng. Đổi khoá rồi chạy lại: cùng một ngữ cảnh, khoá khác thì nhà vô địch khác. Đó là lý do một người không có khoá thì không tái lập được gì.

Khoá bí mật

Hình 8. Nhóm tám ứng viên giữ nguyên cho tới khi bạn bấm rút lại, nên chỉ có khoá là biến. Sửa đúng một ký tự trong ô khoá rồi chạy lại: toàn bộ cột điểm g lật, và nhà vô địch thường đổi theo. Thứ đáng đọc là chuyện cả cột g lật, không phải điểm cụ thể của một từ. Hàm băm ở đây là FNV-1a 32 bit viết ngay trong trang cho chạy được tại chỗ, không phải hàm băm Anthropic dùng.

Vì sao bỏ công thức đẹp của Aaronson để đi làm giải đấu? Bài báo đưa ba lý do.

Lý do một, mỗi chữ để lại nhiều dấu vết thay vì một. Với công thức Aaronson, mỗi vị trí cho detector đúng một mẩu bằng chứng. Với giải đấu \(m\) tầng, mỗi vị trí cho \(m\) mẩu, vì nhà vô địch phải thắng ở nhiều vòng. Nhiều bằng chứng hơn trên cùng một độ dài nghĩa là kết luận được với văn bản ngắn hơn.

Lý do hai, khoảng cách lớn nhất nằm đúng ở chỗ khó nhất. Bài báo đo và thấy SynthID-Text phát hiện tốt hơn cách của Aaronson với cùng độ dài, và khoảng cách lớn nhất khi entropy thấp, tức khi model ít phân vân, tức khi watermark khó cắm vào nhất. Đó cũng là vùng mà văn bản thật hay rơi vào.

Lý do ba, trận đấu hai người vẫn không làm méo phân phối. Bài báo chứng minh trong phần phụ lục rằng khi mỗi trận chỉ có đúng hai đấu thủ, giải đấu giữ nguyên phân phối ở từng token.

Nếu cùng bốn chữ đó xuất hiện lại lần nữa trong bài thì random seed sẽ y hệt, và watermark sẽ đè lên cùng một lựa chọn lần nữa. Lặp lại nhiều lần thì phân phối bắt đầu lệch thật. SynthID xử lý bằng một luật: nếu cửa sổ ngữ cảnh này đã dùng để đóng dấu rồi thì bước này bỏ qua watermark, cứ sinh chữ bình thường. Chỗ nào watermark có nguy cơ đụng tới chất lượng thì watermark nhường đường.

Trích đoạn bài báo Nature, bôi vàng cụm Tournament sampling

Kiểm tra mà không cần model

Chỉ một cái laptop và một kính lúp: phép kiểm chỉ là băm rồi cộng, không đụng tới mô hình

Bây giờ đổi vai. Bạn có một đoạn văn nghi do Claude viết, và bạn là người cầm khoá. Bạn tách đoạn văn thành token bằng đúng bộ tokenizer của model. Ở mỗi vị trí, lấy \(H\) token đứng trước cộng với khoá rồi băm lại để ra random seed. Từ random seed đó tính lại các điểm \(g\) mà token có mặt tại vị trí ấy sẽ nhận được ở từng vòng đấu. Cộng tất cả điểm lại rồi so với ngưỡng.

Không bước nào cần chạy mô hình, không cần GPU, cũng không cần biết prompt hay phiên chat. random seed chỉ phụ thuộc mấy chữ đứng trước cộng khoá, còn điểm \(g\) chỉ phụ thuộc random seed và chính token, nên cả hai đọc trực tiếp ra từ đoạn văn bạn đang cầm.

Tóm tắt bài báo Nature, bôi vàng cụm modifies only the sampling procedure và without using the underlying LLM
Hình 9. Văn bản đi qua tokenizer rồi qua hàm băm có khoá, ra một dãy điểm g. Không có mô hình nào trong sơ đồ này.

Nếu phải chạy model để kiểm tra thì chi phí kiểm ngang chi phí sinh, và không ai kiểm ở quy mô lớn được. Vì phép kiểm chỉ là băm rồi cộng, nó rẻ tới mức chạy được trên một máy tính xách tay. Bài báo còn dùng đúng tính chất này để ghép watermark vào speculative decoding, kỹ thuật tăng tốc đang chạy trong các hệ thống thật.

Hai hình chuông

Hai hình chuông tách nhau khi văn bản đủ dài: chuông xám là văn bản sạch, chuông cam là văn bản có dấu

Cách chấm điểm đơn giản nhất tên là mean score, và nó đúng như tên gọi: lấy trung bình cộng của mọi điểm \(g\), trên mọi vị trí và mọi vòng đấu.

\[S \;=\; \frac{1}{m\,T} \sum_{t=1}^{T} \sum_{\ell=1}^{m} g_\ell\!\left(x_t,\, r_t\right)\]

\(T\) là số token của đoạn văn đang kiểm tra, \(m\) là số vòng đấu tức số điểm \(g\) mà mỗi token để lại. Hai dấu sigma là cộng qua mọi token rồi cộng qua mọi vòng. Còn \(1/(mT)\) là chia cho tổng số điểm đã cộng.

Văn bản do người viết, hoặc do một AI khác viết, thì với khoá này các điểm \(g\) chỉ là những lần tung đồng xu độc lập, nên trung bình của chúng loanh quanh một phần hai. Còn văn bản có watermark thì mỗi token đã phải thắng giải đấu nhờ điểm \(g\) cao, nên trung bình nhích lên trên một phần hai.

Hai trường hợp cho hai hình chuông. Định lý giới hạn trung tâm nói bề rộng của mỗi chuông co lại theo một chia căn bậc hai của \(mT\). Văn bản dài gấp bốn thì chuông hẹp lại một nửa, và hai chuông tách nhau ra.

Hình 10. Chuông xám là văn bản không có watermark, đỉnh đúng ở một phần hai. Chuông cam là văn bản có watermark. Văn bản càng dài, hai chuông càng tách.

Kéo độ dài văn bản và số vòng đấu, rồi nhìn hai hình chuông tách nhau ra.

Độ dài văn bản 60 token

Số vòng đấu 4 vòng

Hình 11. Kéo độ dài văn bản và số vòng đấu. Mô phỏng giả định điểm watermark nhỉnh hơn một phần hai đúng 0,085, con số do bài đặt ra chứ không phải số đo của Google, nên thứ đọc được là dáng hình và tốc độ hai chuông tách nhau, không phải giá trị tuyệt đối của tỷ lệ báo nhầm.

Câu "văn bản càng dài thì kết luận càng chắc" là hệ quả của việc sai số co lại theo căn bậc hai của số lần đo. Đoạn quá ngắn thì hai hình chuông còn chồng lên nhau.

Watermark chịu được tới đâu

Cục tẩy xoá dần dấu con dấu trên giấy: viết lại bằng một model khác là đòn tẩy dấu mạnh nhất

Bài của Anthropic không có phần này. Vài nhóm nghiên cứu đã đo SynthID-Text từ phía tấn công.

Tẩy dấu bằng viết lại là đòn hiệu quả nhất, và lý do nằm ngay trong thiết kế. Vì random seed phụ thuộc mấy chữ đứng ngay trước, đổi chữ là đổi random seed. Chính phụ lục C.6 của bài Nature đo: viết lại bằng một model khác, trên văn bản 1000 token, khả năng phân biệt tụt xuống mức AUC khoảng 0,7 [2]. Nhóm SRI Lab ở ETH Zurich kết luận SynthID-Text thuộc loại tẩy được bằng paraphrase, và nếu kẻ tấn công học trước được thói quen của watermark thì tỷ lệ tẩy thành công tăng vọt [5]. Một đánh giá độc lập năm 2025 cũng liệt kê paraphrase, cắt dán và dịch đi dịch lại là ba đòn làm giảm mạnh khả năng phát hiện [6].

Chiều ngược lại là giả mạo: sinh ra văn bản xấu rồi làm cho nó trông như do Claude viết. Nhóm SRI đạt tỷ lệ 9 tới 15 phần trăm ở ngưỡng báo nhầm một phần nghìn. Tỷ lệ còn thấp, và cơ chế giải đấu có làm giảm rủi ro này so với các sơ đồ trước đó, nhưng nó không bằng không.

Chuyện có watermark hay không thì cũng không giấu được. Cũng nhóm đó khẳng định được một mô hình có bật watermark hay không, chỉ bằng truy vấn từ bên ngoài vào rồi phân tích thống kê.

Có ba câu mà đọc xong toàn bộ phần toán vẫn không nên nói. Đừng nói "watermark chứng minh văn bản do Claude viết", vì nó chỉ trả lời khả năng Claude có tham gia, và không phân biệt được viết toàn bộ với sửa nhiều. Đừng nói "không có watermark nghĩa là người viết", vì có thể là AI khác, có thể là Claude bản cũ, có thể là văn bản đã bị viết lại. Và đừng nói "sửa nhẹ là xoá được": Anthropic nói sửa nhẹ thường không xoá hết, phải viết lại toàn bộ mới xoá, nhưng đo độc lập cho thấy một lượt paraphrase bằng model khác đã đủ làm detector lung lay.

Chứng minh văn bản không dở đi

Cân thăng bằng tuyệt đối: xác suất sau khi thay xúc xắc bằng đúng xác suất gốc, là đẳng thức chứ không phải lời hứa

Ràng buộc đầu tiên trong bốn ràng buộc là không được đổi nội dung. Chạy thử hai vạn lượt chỉ nói được rằng hai vạn lượt đó không lệch. Ba dòng sau nói vì sao nó không bao giờ lệch.

\[\Pr\!\left[\,r^{1/p} \le y\,\right] \;=\; \Pr\!\left[\,r \le y^{\,p}\,\right] \;=\; y^{\,p}\]

Dòng một. Muốn biết điểm cuối của một từ có nhỏ hơn ngưỡng \(y\) hay không, chỉ cần hỏi vé \(r\) của nó có nhỏ hơn \(y\) mũ \(p\) hay không. Mà \(r\) được bốc đều trên đoạn từ 0 tới 1, nên xác suất rơi dưới một ngưỡng chính bằng ngưỡng đó. Ném phi tiêu vào thanh dài một mét, xác suất trúng đoạn ba mươi phân đầu là 0,3.

Gọi \(W(v)\) là xác suất ứng viên \(v\) thắng cả lượt.

\[W(v) \;=\; \int_0^1 \; p_v\, y^{\,p_v-1} \;\cdot\; \prod_{w \neq v} y^{\,p_w} \; dy\]

Dòng hai. Dấu tích phân ở đây là "cộng dồn mọi trường hợp có thể": xét lần lượt mọi mức điểm \(y\) mà người thắng có thể đạt được, rồi cộng lại. Thừa số đầu là khả năng \(v\) đạt đúng mức \(y\), chính là đạo hàm của dòng một. Dấu pi hoa đọc là "nhân tất cả lại", và ở đây nó là xác suất mọi đối thủ đều có điểm thấp hơn \(y\), tức là \(v\) thắng thật. Nói bằng tiếng Việt thì \(v\) thắng khi nó đạt một mức nào đó và tất cả những kẻ còn lại đều thấp hơn mức ấy, rồi ta cộng dồn qua mọi mức.

\[W(v) \;=\; \int_0^1 p_v \, y^{\,p_v - 1 + \sum_{w \neq v} p_w} \, dy \;=\; \int_0^1 p_v \, y^{\,0} \, dy \;=\; p_v\]

Dòng ba. Nhân các luỹ thừa cùng cơ số thì cộng số mũ. Số mũ gộp lại là \(p_v - 1\) cộng tổng xác suất của mọi từ khác. Mà tổng xác suất của tất cả các từ luôn bằng 1, nên tổng của mọi từ khác đúng bằng \(1 - p_v\). Cộng vào thì được 0. Số mũ bằng 0 thì \(y\) biến mất, còn lại phép cộng dồn một hằng số trên đoạn dài 1, ra đúng \(p_v\).

Xác suất một từ được chọn sau khi thay xúc xắc vẫn đúng bằng xác suất gốc. Đây là đẳng thức chứ không phải xấp xỉ.

Đọc lại một lượt nữa cũng được.

Hình 12. Ba bước biến đổi, kết thúc ở dòng gọn nhất của cả bài: kết quả bằng đúng xác suất gốc.

Đây là chỗ cho phép một công ty bật watermark cho toàn bộ khách hàng mà không cần xin phép ai. Đo thực nghiệm rồi nói "chúng tôi thấy chất lượng không giảm" thì đó chỉ là một lời hứa. Đẳng thức trên thì không phải lời hứa, và phần đo đạc chỉ còn là xác nhận. Google đã thu phản hồi người dùng trên gần 20 triệu lượt trả lời của Gemini chạy thật, và kết luận là chất lượng văn bản được giữ nguyên [2].

Chứng minh này nói về kỳ vọng ở từng bước: mỗi lần chọn, xác suất giữ nguyên. Nó không nói rằng hai lần hỏi cùng một câu sẽ cho ra hai câu trả lời đa dạng như trước. Chính bài báo Nature thừa nhận cấu hình đang chạy có làm giảm độ đa dạng giữa các lần trả lời.

Vì sao code gần như sạch dấu

Hai tờ giấy: code chỉ có một đáp án đúng nên sạch dấu, văn xuôi nhiều cách viết nên dấu bám dày

Watermark chỉ sống ở chỗ model phân vân. Độ phân vân đó có tên là entropy.

\[\mathcal{H}(p_t) \;=\; -\sum_{v} p_t(v)\,\log p_t(v)\]

Dấu sigma là "cộng qua mọi ứng viên \(v\)". Với mỗi ứng viên, lấy xác suất nhân với logarit của chính nó. Logarit của số nhỏ hơn 1 luôn âm, nên dấu trừ ở đầu chỉ để kết quả thành số dương. Nếu một từ chiếm gần hết xác suất thì entropy gần 0. Nếu nhiều từ chia đều nhau thì entropy cao.

Hình 13. Bên trái là phân phối dồn hết vào một từ, không có chỗ giấu. Bên phải là phân phối dàn đều, watermark cắm vào thoải mái.

Viết xong "2 + 2 =" thì chỉ có một đáp án đúng, nên cú hích của watermark không được áp vào. Code cũng vậy: phần lớn phải chính xác, nên code nói chung mang ít watermark hơn văn xuôi, dấu vết chỉ còn ở chỗ tuỳ chọn như comment và tên biến.

Trích đoạn Anthropic về 2 + 2 và về code, bôi vàng

Câu "Isaac Newton's most famous work was called Principia..." cũng chỉ có một từ tiếp theo đúng, nên watermark không có gì để bám. Cùng đoạn đó, Anthropic nói thẳng rằng nếu bạn đưa Claude một bài viết và chỉ nhờ sửa chính tả, watermark chỉ sống được trong dăm ba chỗ sửa, thường là quá ít để phát hiện.

Trích đoạn Anthropic về Principia và về việc nhờ Claude soát lỗi chính tả

Ngược lại, bản dịch thì dính đầy, vì mọi từ trong bản dịch đều do model chọn. "I go to school" có thể ra "tôi đi học", cũng có thể ra "tôi tới trường". Mỗi chỗ như vậy là một lần đóng dấu.

Hình 14. Dịch thuật là vùng entropy cao: mỗi câu có nhiều cách nói đúng như nhau, nên watermark bám dày.
Loại văn bản Mật độ dấu Vì sao
Code Rất thưa Chỉ comment và tên biến tuỳ chọn mới có chỗ
Câu dữ kiện Thưa Tên riêng, con số, đáp án đều bị khoá cứng
Nhờ soát lỗi hộ Gần như không Chữ là của bạn, Claude chỉ sửa vài chỗ
Dịch và sáng tác Dày Mọi từ đều do model chọn

Chỗ nào model không có quyền chọn thì chỗ đó sạch dấu.

Đào sâu: điểm Bayesian

Xếp từng viên bằng chứng lên một bên cân: niềm tin sau khi đọc bằng niềm tin ban đầu cộng thêm bằng chứng

Trung bình cộng của dãy \(g\) vứt đi nhiều thông tin. Nó chỉ nhìn một con số, trong khi hình dáng của cả dãy cũng nói lên nhiều điều. Nên bài báo còn đề xuất một cách chấm học được từ dữ liệu. Gọi \(D\) là giả thuyết "văn bản này có watermark".

\[\log \frac{\Pr[\,D \mid x\,]}{\Pr[\,\neg D \mid x\,]} \;=\; \log \frac{\Pr[\,x \mid D\,]}{\Pr[\,x \mid \neg D\,]} \;+\; \log \frac{\Pr[D]}{\Pr[\neg D]}\]

Vế trái là: sau khi đã đọc văn bản, khả năng có watermark gấp bao nhiêu lần khả năng không có, lấy logarit cho dễ cộng. Số hạng đầu bên phải là bằng chứng từ chính văn bản, tức dãy điểm \(g\) này hợp với bên nào hơn. Số hạng sau là niềm tin ban đầu, trước khi đọc gì cả. Niềm tin sau khi đọc bằng niềm tin ban đầu cộng thêm bằng chứng thu được, và đó là toàn bộ tinh thần Bayes, viết bằng logarit để phép nhân thành phép cộng.

Con số ở vế trái chạy từ âm vô cùng tới dương vô cùng nên khó đọc, và bước cuối ép nó qua một hàm hình chữ S để nén về khoảng từ 0 tới 1. Gần 1 nghĩa là khoá nhiều khả năng đã tham gia tạo ra văn bản này.

Hình 15. Cộng dồn bằng chứng, cộng niềm tin ban đầu, rồi ép qua hàm chữ S để ra một điểm số dễ đọc.

Bộ dò này có thật và chạy được. Tài liệu của Google cho biết nó nằm sẵn trong Hugging Face Transformers, và nó cho ra ba kết luận chứ không phải hai: có watermark, không có, và không chắc. Hai ngưỡng phân cách chỉnh được theo tỷ lệ báo nhầm mà bạn chấp nhận [3].

Tài liệu Google về Bayesian detector với ba trạng thái đầu ra

Kho mã chính thức nói rõ sự khác nhau giữa hai bộ dò: bộ dò trung bình có trọng số thì không cần huấn luyện, còn bộ dò Bayesian mạnh hơn nhưng phải huấn luyện [7].

Kho mã google-deepmind synthid-text, mô tả Weighted Mean detector và Bayesian detector

Phải huấn luyện cái gì mới được? Bộ dò Bayesian không chỉ hỏi trung bình có cao không, nó học hẳn hình dáng phân phối của điểm \(g\) trong văn bản có dấu và không có dấu. Mà hình dáng ấy sinh ra từ khoá, từ model, từ cấu hình vòng đấu, nên suy ra là đổi khoá thì phải học lại. Đây là suy luận từ chính cách sinh điểm \(g\) chứ không phải câu trích, nhưng nó khớp với một chuyện quan sát được: bộ dò không thể là một thư viện dùng chung cho mọi nhà cung cấp.

Tham số cửa sổ ngữ cảnh, tức chính cái \(H\) trong hàm băm, là một nút vặn đánh đổi: đặt dài thì dễ phát hiện hơn nhưng dễ vỡ hơn khi văn bản bị sửa. Google khuyến nghị mặc định là 5.

Tài liệu Google về tham số ngram_len, bôi vàng giá trị mặc định 5

Mấy câu hỏi hay gặp

Ba câu hỏi thường gặp: có chậm đi không, model tôi đang dùng có dấu chưa, watermark có lần ra người dùng không

Có làm Claude chậm đi hay đắt lên không? Không. Anthropic nói ảnh hưởng tới tốc độ là không đáng kể, và vì watermark không sinh thêm token nào nên giá không đổi. Đó là hệ quả trực tiếp của chỗ họ chọn để can thiệp: đúng một dòng trong vòng lặp sinh chữ, không đụng tokenizer, không đụng bộ nhớ đệm.

Model Claude tôi đang dùng đã có watermark chưa? Chưa chắc. Model ra mắt từ ngày 2 tháng 8 năm 2026 trở đi có sẵn. Model cũ hơn nằm trong thời gian chuyển tiếp mà luật cho phép, và Anthropic nói đang bổ sung dần.

Watermark có lần ra được người dùng không? Không. Trong watermark và trong khoá không có gì cho phép khôi phục thông tin về người dùng, tổ chức hay nội dung cuộc trò chuyện. Nó chỉ nói về Claude, và nó cũng không thay đổi quyền sở hữu hay trách nhiệm pháp lý với văn bản.

Còn ảnh và file thì sao? Cách khác hẳn. Với file như png, jpg hay svg, Claude gắn một chứng nhận nội dung theo chuẩn mở C2PA vào phần metadata, tức một ghi chú có chữ ký số nói rằng file này do Claude tạo hoặc xử lý. Nội dung file không đổi một byte nào, và bất kỳ công cụ nào hiểu C2PA đều đọc được. Nhãn này công khai, và nó biến mất nếu ai đó tước metadata đi.

Khác gì với các phần mềm dò AI như Pangram? Khác hẳn. Các dịch vụ đó không có khoá nên họ đoán bằng thói quen hành văn. Anthropic còn chỉ đích danh vài thói quen của chính mô hình mình: nó khoái cấu trúc "this isn't X, it's Y" và dùng từ "quietly" nhiều bất thường. Đoán theo văn phong là suy luận thống kê về phong cách, còn kiểm tra watermark là tính lại một hàm băm.

Nhờ Claude sửa văn của mình thì có bị đánh dấu không? Gần như không, vì watermark chỉ bám vào những từ do Claude chọn. Đưa cả bài rồi nhờ sửa ngữ pháp thì phần lớn chữ vẫn là của bạn. Giao cho nó viết càng nhiều thì dấu càng đậm.

Chỉ một bên cầm khoá

Một tay giữ chìa khoá, một tay khua trống: chỉ Anthropic kiểm tra được, và chưa ai trả lời ai được phép kiểm

Cả thiết kế này đứng được nhờ khoá bí mật. Chỉ Anthropic giữ nó, nên chỉ Anthropic kiểm tra được. Khi một kết luận được đưa ra, không ai có đường kiểm chứng độc lập.

Mà mở bộ dò cho tất cả mọi người thì bộ dò trở thành máy thử cho kẻ muốn tẩy dấu: cứ sửa, cứ hỏi, tới khi nào máy báo sạch thì thôi. Hai đầu của cái kẹp này không có điểm giữa hiển nhiên nào.

Hiện Anthropic mới hứa "sẽ sớm cung cấp" một API kiểm tra, và nói thẳng là chi tiết vẫn đang bàn.

Trích đoạn Anthropic về watermark detection API sắp có

Phần toán thì đã xong từ năm 2024, và nó chạy được trên một cái laptop. Còn ai được phép cầm khoá mà kiểm thì tới giờ vẫn chưa ai trả lời.

Phụ lục: Citations (7)
  1. Anthropic. How Claude's text watermark works. Anthropic. 2026-08-14. Nguồn chính của bài, đọc ngày 18 tháng 8 năm 2026. Mọi ảnh chụp có bôi vàng trong bài đều lấy từ trang này, phần bôi vàng do bài đánh dấu chứ không có sẵn trong nguồn. Chống lưng cho câu về EU AI Act và con số 190: "We're implementing watermarking to comply with the EU AI Act. Anthropic, along with several other major AI model providers and around 190 total signatories, signed the EU Code of Practice on Transparency of AI-Generated Content in July 2026." cùng câu "We're applying watermarking globally at launch because we don't yet have a durable way to scope it by region." Chống lưng cho câu về phạm vi áp dụng: "Future Claude models will generate text that contains a watermark", tức model ra mắt từ đây trở đi có sẵn, model cũ đang được bổ sung dần. Chống lưng cho ví dụ overcast/grey và câu "the choice is settled by a random number". Chống lưng cho hình ảnh ván cờ chơi bằng các chữ số của số Pi, cho câu về "2 + 2 =" và về code, cho câu về Principia, cho đoạn nói nhờ Claude soát chính tả thì dấu quá thưa để phát hiện, cho câu xác nhận kỹ thuật là "a version of the SynthID-Text approach" thuộc nhánh ý tưởng "Scott Aaronson in 2022", cho câu về C2PA với file ảnh, cho hai thói quen hành văn "this isn't X, it's Y" và từ "quietly", và cho câu "We will soon be offering a watermark detection API. We're in the process of working out the details of its implementation."
  2. Sumanth Dathathri và cộng sự. Scalable watermarking for identifying large language model outputs. Nature 634, 818-823. 2024-10-23. Bài báo giới thiệu SynthID-Text và thuật toán tournament sampling. Bản đầy đủ truy cập mở tại Europe PMC, https://europepmc.org/articles/PMC11499265, đọc ngày 18 tháng 8 năm 2026. Chống lưng cho: cấu hình non-distortionary giữ nguyên phân phối ở từng token và phần phụ lục chứng minh riêng cho trận đấu hai người; H = 4 trong thí nghiệm của bài; m = 30 tầng; luật chống lặp ngữ cảnh; thí nghiệm trực tiếp trên gần 20 triệu phản hồi Gemini không cho khác biệt có ý nghĩa thống kê về tỷ lệ thích và không thích; câu thừa nhận cấu hình đang chạy làm giảm độ đa dạng giữa các lần trả lời; khoảng cách phát hiện so với nhánh Aaronson lớn nhất ở vùng entropy thấp; phát hiện không cần dùng tới mô hình ("without using the underlying LLM") vì chỉ sửa thủ tục lấy mẫu ("modifies only the sampling procedure"); ghép được với speculative decoding; và phụ lục C.6 đo AUC tụt về khoảng 0,7 sau một lượt paraphrase trên văn bản 1000 token.
  3. Google AI for Developers. SynthID Text - Responsible GenAI Toolkit. Google. 2026-08-18. Ngày ghi là ngày đọc. Chống lưng cho: bộ dò Bayesian có sẵn trong Hugging Face Transformers, cho ra ba trạng thái kết luận (có watermark, không có, không chắc) với hai ngưỡng chỉnh được theo tỷ lệ báo nhầm mong muốn; và tham số ngram_len là nút vặn đánh đổi giữa dễ phát hiện và dễ vỡ khi văn bản bị sửa, với khuyến nghị mặc định là 5.
  4. Scott Aaronson. Watermarking: Where To?. Simons Institute for the Theory of Computing, UC Berkeley. 2024-10. Slide của chính tác giả sơ đồ, tải ngày 22 tháng 8 năm 2026, 10 trang. Trang 3 mang cả hai nửa mà bài dùng: bên sinh chữ là "At each position t, choose the token i = i(t) that maximizes r_{t,i}^{1/p_{t,i}}", bên kiểm là "In detection phase: Calculate sum_{t=1}^{n} ln(1/(1 - r_{t,i(t)})). Iff this sum exceeds a threshold, say the LLM probably wrote the thing." Cùng trang định nghĩa r là "a pseudorandom function of the previous k tokens", tức phần random seed lấy từ mấy chữ đứng trước. Trang 4 nói số token cần có bậc 1/alpha^2 nhân log(1/epsilon) với alpha là entropy trung bình mỗi token, chống lưng cho mệnh đề entropy thấp thì cần văn bản dài hơn. Trang 7 liệt kê đúng thế kẹt của mục cuối bài: "Who gets access to the detection tool? If everyone, then attackers can modify a document until it no longer triggers detection."
  5. SRI Lab, ETH Zurich. Probing Google DeepMind's SynthID-Text Watermark. ETH Zurich. 2026-08-18. Ngày ghi là ngày đọc. Đo SynthID-Text từ phía tấn công. Chống lưng cho ba con số ở mục chỗ gãy: tỷ lệ giả mạo dấu đạt 9 tới 15 phần trăm ở ngưỡng báo nhầm một phần nghìn; SynthID-Text thuộc loại tẩy được bằng paraphrase, và tỷ lệ tẩy thành công tăng vọt khi kẻ tấn công học trước thói quen của watermark; và chỉ bằng truy vấn từ bên ngoài đã khẳng định được một mô hình có bật watermark hay không.
  6. Han và cộng sự. Robustness Assessment and Enhancement of Text Watermarking for Google's SynthID. arXiv. 2025-08-27. Đánh giá độc lập, đọc ngày 18 tháng 8 năm 2026. Chống lưng cho câu liệt kê ba đòn làm giảm mạnh khả năng phát hiện: paraphrase, cắt dán, và dịch đi dịch lại.
  7. Google DeepMind. google-deepmind/synthid-text. GitHub. 2026-08-18. Ngày ghi là ngày đọc. Mã nguồn mở của SynthID-Text. Chống lưng cho khác biệt giữa hai bộ dò: bộ dò trung bình có trọng số không cần huấn luyện, còn bộ dò Bayesian mạnh hơn nhưng phải huấn luyện và phải huấn luyện riêng theo từng khoá.