{"id":2268,"date":"2025-03-03T21:15:56","date_gmt":"2025-03-03T21:15:56","guid":{"rendered":"https:\/\/exponentialdecay.co.uk\/blog\/?p=2268"},"modified":"2025-12-01T16:59:43","modified_gmt":"2025-12-01T16:59:43","slug":"informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output","status":"publish","type":"post","link":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/","title":{"rendered":"Informed consent: considering steganographic techniques to fingerprint Generative AI output"},"content":{"rendered":"<p>Artificial intelligence (AI) is a polarizing topic. For every reasoned assessment of the technology and its potential to make some of our smaller, onerous, or more repetitive tasks easier, there are probably 100 reactive pieces predicting some radical overhaul of societal norms, from the service industry receiving new intakes of out of work software developers to laypeople taking on roles traditionally occupied by those of a college education, if they just start <em>&#8220;<a href=\"https:\/\/bsky.app\/profile\/sonjadrimmer.bsky.social\/post\/3lik3yjljo22n\" target=\"_blank\" rel=\"noopener\">asking their AI the right questions<\/a>&#8220;<\/em> \u00af\\_(\u30c4)_\/\u00af<\/p>\n<p>The amount of AI-propaganda is draining, and the reaction is often spread across the board too, some cheer leading, some decrying, plenty taking their time to offer skilled and nuanced rebuttals, or suggestions for improvements.<\/p>\n<p>I find myself largely trying to stay out of the conversations. A lot like blockchain conversations 8 years ago, it will take another half decade for the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gartner_hype_cycle\" target=\"_blank\" rel=\"noopener\">hype-cycle<\/a> to plateau for us to see where it can truly complement our work.<\/p>\n<p>One part of the conversation that is increasingly harder to ignore, is being informed about when AI has been used in the generation of text or images. It is the property of knowing, or having the tools to\u00a0<em>know<\/em> is what I feel is the most important.<\/p>\n<p>How can we be better informed about when AI is used, so that we are better prepared as consumers, to receive and understand content?<\/p>\n<p>In this blog I want to explore the potential for steganography techniques to be used in the output of AI to fingerprint content and provide a way for front-end mechanisms to identify it, as we might file formats using <a href=\"https:\/\/blog.nationalarchives.gov.uk\/cafed00ds-and-cafebabes\/\" target=\"_blank\" rel=\"noopener\">magic numbers<\/a>, so that users can be given the chance of informed consent: the opportunity to opt-in or out of whether we engage with AI content or not.<!--more--><\/p>\n<h2>Identifying AI<\/h2>\n<p>Some organizations are adopting <a href=\"https:\/\/www.ipres2025.nz\/ai-usage-guidelines\" target=\"_blank\" rel=\"noopener\">AI usage guidelines<\/a>, similarly, some folks are asking about <a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7258510980765118465\/\" target=\"_blank\" rel=\"noopener\">codes of conduct<\/a>. These are all good faith approaches, and absolutely needed.<\/p>\n<p>But <del>a wild<\/del> unwanted AI <del>appeared<\/del> content is still bombarding us, from appearing in <a href=\"https:\/\/bsky.app\/profile\/melissaterras.bsky.social\/post\/3lgfwadqiss26\" target=\"_blank\" rel=\"noopener\">conference proposals<\/a> to the dross we see on social media at important times such as the <a href=\"https:\/\/www.theguardian.com\/world\/2025\/feb\/17\/plane-crashes-at-toronto-airport-with-reports-of-people-injured-canada-delta\" target=\"_blank\" rel=\"noopener\">recent crash<\/a> at Toronto airport.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pbs.twimg.com\/media\/GkBIaSRX0AA0Zbb?format=jpg&amp;name=medium\" alt=\"Image of an AI generated aircraft crash from Twitter account @100NEWS (Feb 17, 2024), following an aircraft crash at Toronto Airport\" width=\"1024\" height=\"768\" \/><figcaption class=\"wp-caption-text\">Image of an AI generated aircraft crash from Twitter account @100NEWS (Feb 17, 2024), following an aircraft crash at Toronto Airport &#8212; <a href=\"https:\/\/x.com\/100NEWS\/status\/1891597037965033627\/photo\/1\" target=\"_blank\" rel=\"noopener\">original link<\/a>.<\/figcaption><\/figure>\n<figure id=\"attachment_2287\" aria-describedby=\"caption-attachment-2287\" style=\"width: 880px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-generated-delta-airlines-crash.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2287\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-generated-delta-airlines-crash.jpg\" alt=\"AI rendering of a plane crash scene and video from Twitter account @Pensacola_X on Feb 18, 2024. The text also reads &quot;for breaking news, global headlines, and exclusive local coverage, stay connected with PensecolaX, your trusted source for news that matters.&quot;\" width=\"880\" height=\"805\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-generated-delta-airlines-crash.jpg 880w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-generated-delta-airlines-crash-500x457.jpg 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-generated-delta-airlines-crash-768x703.jpg 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/a><figcaption id=\"caption-attachment-2287\" class=\"wp-caption-text\">AI rendering of a plane crash scene and video from Twitter account @Pensacola_X on Feb 18, 2024 &#8212; <a href=\"https:\/\/x.com\/Pensacola_X\/status\/1891672197917254030\" target=\"_blank\" rel=\"noopener\">original link<\/a>.<\/figcaption><\/figure>\n<p><strong><em>NB.<\/em><\/strong><em> Twitter links are likely to disappear. They are not easy to archive, see more <a href=\"https:\/\/bsky.app\/profile\/b33tk33p3r.bsky.social\/post\/3liuaws23wk2k\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/em><\/p>\n<p>It is not just chancers trying to get more clicks, stock photography sources can be <a href=\"https:\/\/www.crikey.com.au\/2023\/11\/01\/israel-gaza-adobe-artificial-intelligence-images-fake-news\/\" target=\"_blank\" rel=\"noopener\">flooded with AI<\/a> too<em> (I really like Kelly Pendergrast&#8217;s <a href=\"https:\/\/x.com\/k_pendergrast\/status\/1721951317403549840\" target=\"_blank\" rel=\"noopener\">thread<\/a> following up on that article)<\/em>.<\/p>\n<p>While standards like <a href=\"https:\/\/c2pa.org\/\" target=\"_blank\" rel=\"noopener\">C2PA<\/a> exist and might enable reasonable understanding of the content creation workflow and provenance; requiring <a href=\"https:\/\/www.bbc.co.uk\/rd\/blog\/2024-03-c2pa-verification-news-journalism-credentials\" target=\"_blank\" rel=\"noopener\">digital signing<\/a> at each stage of the media creation and editing process is onerous, the complexity is a bit of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Code_smell\" target=\"_blank\" rel=\"noopener\">smell<\/a>. To be clearer, there&#8217;s a lot of technology involved at each layer in the C2PA process, from hardware, to creating tools and software, rendering tools and software, the existence of file formats with good support for metadata, and of course digital signing and certificates; all of which can potentially be disappeared through round-tripping, given an image as an example, through <a href=\"http:\/\/justsolve.archiveteam.org\/wiki\/BMP\" target=\"_blank\" rel=\"noopener\">Windows BMP<\/a>, and back to something else, e.g. JPEG.<\/p>\n<p><em>I will closely monitor C2PA as I believe it is an important discussion; however, I initially perceive it as being overly focused on images, requiring significant labor, and resembling a technologically advanced honors system, although policy will also play an big role.<\/em><\/p>\n<p>Is there something out there that can be implemented at the source? on multiple different types of output? that is easy to implement? and detect? that might <em>signal<\/em> to us, the use of AI?<\/p>\n<p>I think so, I think we might be able to do this using steganography.<\/p>\n<h2>Steganography<\/h2>\n<p>Steganography is the practice of encoding information within another message or physical object (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Steganography\" target=\"_blank\" rel=\"noopener\">Wikipedia<\/a>). The earliest recorded examples of Steganography come from Greece in 440BC.<\/p>\n<p>Steganography is different from cryptography, although they are often used in concert with one another; this Nord <a href=\"https:\/\/nordvpn.com\/blog\/what-is-steganography\/\" target=\"_blank\" rel=\"noopener\">explainer<\/a> is helpful.<\/p>\n<p>The properties of steganography that I feel are important for this blog are those of being hidden in plain-sight while using obfuscation without changing an object&#8217;s structure. It is also important that steganography can be detected and identified, as previously mentioned, maybe like a file format&#8217;s <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_file_signatures\" target=\"_blank\" rel=\"noopener\">magic number<\/a>.<\/p>\n<p>I haven&#8217;t had much need to use steganography in every-day life but I have always found the technique interesting, and others too, as a quick internet search will reveal a large number of articles on the topic. This is <a href=\"https:\/\/www.linkedin.com\/pulse\/unveiling-secrets-comprehensive-history-steganography-raj-saha-gb9oc\/\" target=\"_blank\" rel=\"noopener\">an interesting one<\/a> via LinkedIn describing some of its historical uses through tattoos, textiles, and invisible ink.<\/p>\n<p>I&#8217;ll touch on three real-world examples of steganography below, before looking at why it might be helpful to digitally fingerprint AI.<\/p>\n<h2>Steganography in the real world<\/h2>\n<h3>Example 1: printer dots<\/h3>\n<p>The Electronic Frontier Foundation (EFF) started <a href=\"https:\/\/www.eff.org\/issues\/printers\" target=\"_blank\" rel=\"noopener\">tracking the use of printer dots hidden on physical printouts<\/a> from 2005. The printer dots were used to encode the serial number of the printer (and therefore type of printer), and date and time, if known, of the physical printout.<\/p>\n<p>The technique was first developed by <a href=\"https:\/\/en.wikipedia.org\/wiki\/Printer_tracking_dots#History\" target=\"_blank\" rel=\"noopener\">Xerox in the 80&#8217;s<\/a> and it is thought that law enforcement wanted to mandate the use of these dots to track printers forensically, and while they couldn&#8217;t legally mandate this, a secret agreement was allegedly made by manufacturers to continue to use them.<\/p>\n<figure style=\"width: 512px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/a\/ab\/Machine_Identification_Code_von_Druckern.png\" alt=\"Image shows how information can be decoded from steganographic dots hidden on physical printouts.\" width=\"512\" height=\"384\" \/><figcaption class=\"wp-caption-text\">Electronic Frontier Foundation (EFF) &#8211; Robert Lee, Seth Schoen, Patrick Murphy, Joel Alwen, and Andrew &#8220;bunnie&#8221; Huang, CC BY 3.0, via Wikimedia Commons<\/figcaption><\/figure>\n<p>The suggestion was that the technique was to support the detection of counterfeiters, e.g. of money, although theoretically, once you can track a serial number, you can track <a href=\"https:\/\/en.wikipedia.org\/wiki\/German_tank_problem\" target=\"_blank\" rel=\"noopener\">so much more<\/a>. Just a few years ago, it is believed that the FBI tracked NSA whistle-blower &#8216;Reality Winner&#8217; <a href=\"https:\/\/www.theatlantic.com\/technology\/archive\/2017\/06\/the-mysterious-printer-code-that-could-have-led-the-fbi-to-reality-winner\/529350\/\" target=\"_blank\" rel=\"noopener\">using this very technique<\/a>.<\/p>\n<ul>\n<li><a href=\"https:\/\/w2.eff.org\/Privacy\/printers\/docucolor\/\" target=\"_blank\" rel=\"noopener\">More information<\/a> from the EFF about decoding the printer&#8217;s dots.<\/li>\n<li>Can you <a style=\"font-family: var(--typography_fonts_text);\" href=\"https:\/\/www.eff.org\/pages\/list-printers-which-do-or-do-not-display-tracking-dots\" target=\"_blank\" rel=\"noopener\">find your printer<\/a><span style=\"background-color: var(--color_content_background); color: var(--color_content_text); font-family: var(--typography_fonts_text);\" data-darkreader-inline-bgcolor=\"\" data-darkreader-inline-color=\"\"> listed on the EFF&#8217;s website?<\/span><\/li>\n<\/ul>\n<h3>Example 2: EURion constellation<\/h3>\n<p>In another counterfeit use-case, a famous steganographic pattern was embedded in bank-notes across the globe. The <a href=\"https:\/\/en.wikipedia.org\/wiki\/EURion_constellation\" target=\"_blank\" rel=\"noopener\">EURion Constellation<\/a>.<\/p>\n<p>Named for its similarity to the Orion constellation.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/8\/8b\/EURion.jpg\" alt=\"undefined\" \/><\/p>\n<p>Print or scanning software are potentially able to detect the appearance of this constellation, understood to be at a certain frequency or density of appearance, which can then trigger a warning about the legality of copying or printing currency for the purposes of counterfeiting.<\/p>\n<figure style=\"width: 681px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/de\/Photoshop_CDS_error.png\" alt=\"By Own work - Adobe Photoshop (non-copyrightable portion used), CC0, https:\/\/commons.wikimedia.org\/w\/index.php?curid=134429322\" width=\"681\" height=\"319\" \/><figcaption class=\"wp-caption-text\">An error shown in Adobe Photoshop CC 2022 when attempting to print a protected image of a banknote (in this case, a US $20 bill). Adobe Photoshop (non-copyrightable portion used), CC0, &#8212; Wikimedia Commons<\/figcaption><\/figure>\n<p>The constellation appears on the Euro, Japanese yen, the Mexican peso, and many other currencies.<\/p>\n<ul>\n<li>Have you a bank note on you today on which you can find this formation?<\/li>\n<\/ul>\n<h3>Example 3: Nine Inch Nails and Aphex Twin<\/h3>\n<p><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/the-sensitivity-index-corrupting-y2k\/\" target=\"_blank\" rel=\"noopener\">Just recently<\/a> we were looking at spectograms; but none so cool as this.<\/p>\n<p>Nine Inch Nails encoded an image as an Easter Egg in the spectogram of <a href=\"https:\/\/www.nin.wiki\/My_Violent_Heart\" target=\"_blank\" rel=\"noopener\">My Violent Heart<\/a>, that is, the audio data itself has been manipulated to render an image for fans to discover when the data is looked at through this lens.<\/p>\n<figure style=\"width: 587px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/a\/a9\/Spectrogram_-_Nine_Inch_Nails_-_My_Violent_Heart.png\" alt=\"Spectrogram of a hidden image encoded as sound in a song. The track is the &quot;leaked&quot; version of My Violent Heart by Nine Inch Nails from the Year Zero album. The white line is 4:14 seconds into the song.\" width=\"587\" height=\"638\" \/><figcaption class=\"wp-caption-text\">Omegatron, CC BY-SA 3.0, via <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Spectrogram_-_Nine_Inch_Nails_-_My_Violent_Heart.png\" target=\"_blank\" rel=\"noopener\">Wikimedia Commons<\/a><\/figcaption><\/figure>\n<p>Aphex Twin similarly used <a href=\"https:\/\/uisoftware.com\/MetaSynth\/\" target=\"_blank\" rel=\"noopener\">Metasynth<\/a> to encode a steganographic Easter Egg in <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Windowlicker\" target=\"_blank\" rel=\"noopener\">Windowlicker<\/a>.<\/p>\n<figure style=\"width: 715px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/38\/Windowlickerspiral.png\" alt=\"The spiral at the end of the spectrogram for &quot;Windowlicker&quot;\" width=\"715\" height=\"559\" \/><figcaption class=\"wp-caption-text\">PyroGamer, Public domain, via <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Windowlickerspiral.png\" target=\"_blank\" rel=\"noopener\">Wikimedia Commons<\/a><\/figcaption><\/figure>\n<ul>\n<li>Mixmag Asia <a href=\"https:\/\/mixmag.asia\/feature\/spectrogram-art-music-aphex-twin\" target=\"_blank\" rel=\"noopener\">has a nice article<\/a> summarizing other spectogram art, and touching on other steganographic techniques used by artists.<\/li>\n<li>Mixmag also highlights <a href=\"https:\/\/www.abc.se\/~re\/Coagula\/Coagula.html\" target=\"_blank\" rel=\"noopener\">Coagula<\/a> as another tool able to produce these effects.<\/li>\n<li>Have you tried using steganography like this in your art? Can you think of any other examples in popular culture?<\/li>\n<\/ul>\n<h2>Steganographic Techniques that can be used in AI<\/h2>\n<p>Generative AI is used to generate text, images, audio, or video, and so we need techniques that can be applied to these mediums.<\/p>\n<p>It was plain-text output and images that inspired this blog. I touch on that, images, and audio below. I am confident similar techniques can be applied to video.<\/p>\n<h3>Generative, and plain-text<\/h3>\n<p>Generative text impacts those in academia raising questions about provenance and accuracy, it impacts the book publishing industry taking money away from authors, and time and energy away from publishers; and of course when data is incorrect or inaccurate, anywhere in our world, it affects us all.<\/p>\n<p>Plain-text, the output of generative text, was for me, a missing link, or gap in my knowledge. I know a lot of content is often copy and pasted from AI like services, but I wasn&#8217;t sure how data could be hidden in text to enable digital fingerprinting. Plain-text is not a complex format, it represents a series of bytes that can be interpreted as textual data, or it is a primitive that is used to build other file formats. Plain-text has no inherent capabilities for recording metadata beyond what is written in plain sight, or so I thought.<\/p>\n<p><em>Enter<\/em> the research done in the past decade or so to look at encoding data using zero-width characters.<\/p>\n<p dir=\"auto\">Zach Ayasan broaches this in the context of protecting whistle-blowers from fingerprinting techniques in their <a href=\"https:\/\/www.zachaysan.com\/writing\/2017-12-30-zero-width-characters\" target=\"_blank\" rel=\"noopener\">2017<\/a> blog, and follow-up in early <a href=\"https:\/\/www.zachaysan.com\/writing\/2018-01-01-fingerprinting-update\" target=\"_blank\" rel=\"noopener\">2018<\/a>.<\/p>\n<p dir=\"auto\">I will touch upon the subject at the end of this blog, needless to say, <em><strong>make sure to take all measures to protect yourself when sharing sensitive information<\/strong><\/em>.<\/p>\n<p dir=\"auto\">In the context of AI, the idea of steganography using zero-width characters offers a nice way to digitally fingerprint simple copy-an\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200c\u200c\u200b\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200cd-pasta AI data.<\/p>\n<p>Take this text:<\/p>\n<table class=\"tg\">\n<thead>\n<tr>\n<th class=\"tg-0pky\">text<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tg-0pky\">digital pr\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200b\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200b\u200c\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200beservation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Is was created using <a href=\"https:\/\/neatnik.net\/steganographr\/\" target=\"_blank\" rel=\"noopener\">steganographr<\/a> (live demo).<\/p>\n<p>We can get a clue that it contains more than meets the eye (screen-readers might be able to read) when we look at the text through the lens of a hex editor.<\/p>\n<p><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2305\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832.png\" alt=\"A screenshot of a plain-text encoded piece of information in a hex editor. The screenshot shows that there is much more text than the user might otherwise anticipate. While it should read &quot;digital preservation&quot; zero-width characters are used to encode information steganographically.\" width=\"1333\" height=\"884\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832.png 1333w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832-500x332.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832-1024x679.png 1024w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/digipres-records-e1740595571832-768x509.png 768w\" sizes=\"auto, (max-width: 1333px) 100vw, 1333px\" \/><\/a><\/p>\n<p>You can copy and paste the original into the steganographr utility, but for readers of this blog, the hidden text reads as follows:<\/p>\n<table class=\"tg\">\n<thead>\n<tr>\n<th class=\"tg-7btt\">hidden text<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tg-0pky\">is in service of long-term access to information<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/medium.com\/@SimpleDynamics\/plaintext-steganography-on-the-web-c0af4ece9f58\" target=\"_blank\" rel=\"noopener\">secret.js<\/a> performs a similar function, encoding messages in zero-width characters within regular text.<\/p>\n<p>If Generative AI tools could commit to fingerprinting content with a digital fingerprint that identifies their system we might have a better chance of spotting and flagging AI. While content like this is potentially vulnerable to being overwritten, e.g. if someone simply re-writes it, there should be a principle of <em>reducing the deluge <\/em>of unidentified AI content, with the hope that other generative AI will be flagged by good participants.<\/p>\n<table class=\"tg\">\n<thead>\n<tr>\n<th class=\"tg-amwm\">text<\/th>\n<th class=\"tg-7btt\">hidden text<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tg-0lax\">Something really \u200c\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u200c\u2060\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u2060\u200c\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u200c\u2060\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u2060\u200c\u200c\u200csmart and clever.<\/td>\n<td class=\"tg-0pky\">generated by a very clever LLM\u2122<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li>The source code for steganographr: <a href=\"https:\/\/github.com\/neatnik\/steganographr\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/neatnik\/steganographr<\/a>.<\/li>\n<li>secret.js live demo: <a href=\"https:\/\/www.seecret.net\/reveal.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.seecret.net\/reveal.html<\/a>.<\/li>\n<\/ul>\n<h3>Image<\/h3>\n<p>Images, of course, are some of the most dangerous outputs of generative AI. Yes, Meta&#8217;s AI assistant included in Whatsapp might be fun, but it helps that at the application layer of that AI is a human-generated logic protecting us like many other firewalls on the internet &#8212; codifying rules that serve an important function to protect us from generating or receiving something with different prohibited keywords and content.<\/p>\n<p>Other generative image outputs, however, harm individuals, e.g. when they are illegally pornographic, or create an overwhelming deluge for law-enforcement, when similarly, they are illegal and content must be poured through by the authorities.<\/p>\n<p>Images, fortunately, are some of the easiest to fingerprint using steganographic techniques and there are extensive utilities out there to do so.<\/p>\n<p>GitHub user Stylesuxx has an online demo of a <a href=\"https:\/\/stylesuxx.github.io\/steganography\/\" target=\"_blank\" rel=\"noopener\">steganography library<\/a>. It allowed me to create the following image with the message encoded: <em>&#8220;hidden in plain sight!&#8221;<\/em><\/p>\n<figure id=\"attachment_2307\" aria-describedby=\"caption-attachment-2307\" style=\"width: 2005px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2307 size-full\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin.png\" alt=\"Image from training material for the Ministry of State Security showing a Stasi employee dressed as a tourist, circa 1985. Taken in Berlin 27 May, 2018.\" width=\"2005\" height=\"2825\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin.png 2005w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin-355x500.png 355w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin-727x1024.png 727w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin-768x1082.png 768w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin-1090x1536.png 1090w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin-1454x2048.png 1454w\" sizes=\"auto, (max-width: 2005px) 100vw, 2005px\" \/><\/a><figcaption id=\"caption-attachment-2307\" class=\"wp-caption-text\">If the steganographic data cannot be found, the original containing it should be: <a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin.png\" target=\"_blank\" rel=\"noopener\">https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/2018-05-27-stasi-tourist-berlin.png<\/a><\/figcaption><\/figure>\n<p>The technique relies on manipulating the lowest significant bit (LSB) in pixel data. While the output here is portable network graphics (PNG) from JPEG, other image formats can be used.<\/p>\n<p>The technique has an important property that it shares with the plain-text encoding in that the appearance of the original image is not affected in any way. The image now has a hidden digital fingerprint, but it doesn&#8217;t damage the quality of the original as a watermark might.<\/p>\n<p>While the approach might be brittle and can probably be round-tripped to another image format and back pretty easily, if we follow the principle that perfection is the enemy of the good, and that fingerprinting helps us to flag more AI than we can now; then we&#8217;re doing okay.<\/p>\n<ul>\n<li>Steganography library by Stylesuxx: <a href=\"https:\/\/github.com\/stylesuxx\/steganography\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/stylesuxx\/steganography<\/a>.<\/li>\n<li>LSB steganography tutorial by <a href=\"https:\/\/ctf101.org\/forensics\/what-is-stegonagraphy\/\" target=\"_blank\" rel=\"noopener\">Capture the Flag 101<\/a>.<\/li>\n<li>LSB steganography by <a href=\"https:\/\/medium.com\/@renantkn\/lsb-steganography-hiding-a-message-in-the-pixels-of-an-image-4722a8567046\" target=\"_blank\" rel=\"noopener\">@renantkn on Medium<\/a>.<\/li>\n<li>For a bit of fun, it&#8217;s also possible to <em>encode audio<\/em> in images. There&#8217;s a <a href=\"https:\/\/www.youtube.com\/watch?v=p5-9wCbeqoQ\" target=\"_blank\" rel=\"noopener\">neat video<\/a>. looking at that here from YouTube creator ja-ke.<\/li>\n<\/ul>\n<h3>Audio<\/h3>\n<p>I wanted to touch briefly on audio, as the ability to fingerprint audio also lends itself to the audio channels in video, as does fingerprinting images to the video&#8217;s individual frames.<\/p>\n<p>I haven&#8217;t been able to find as many utilities to help hide information in audio, my research online showed <a href=\"https:\/\/steghide.sourceforge.net\/index.php\" target=\"_blank\" rel=\"noopener\">steghide<\/a> is quite common in Linux file systems. Steghide will work on PEG, BMP, WAV, and AU files.<\/p>\n<p>Imperceptible differences can be encoded in audio data.<\/p>\n<figure id=\"attachment_2314\" aria-describedby=\"caption-attachment-2314\" style=\"width: 1842px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2314 size-full\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro.png\" alt=\"Image shows a comparison of two spectographs of what is largely the same audio file with imperceptible differences between the two.\" width=\"1842\" height=\"1007\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro.png 1842w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro-500x273.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro-1024x560.png 1024w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro-768x420.png 768w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/spectro-1536x840.png 1536w\" sizes=\"auto, (max-width: 1842px) 100vw, 1842px\" \/><\/a><figcaption id=\"caption-attachment-2314\" class=\"wp-caption-text\">Example of two audio streams side-by-side, one contains steganographic information.<\/figcaption><\/figure>\n<figure id=\"attachment_2313\" aria-describedby=\"caption-attachment-2313\" style=\"width: 1393px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2313\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff.png\" alt=\"Diff showing the differences between two audio files. The audio files contain only a small amount of additional information hidden steganographically. The changes are dotted throughout and you can observe them in this image in the odd bitflip here and there.\" width=\"1393\" height=\"753\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff.png 1393w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff-500x270.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff-1024x554.png 1024w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/colordiff-768x415.png 768w\" sizes=\"auto, (max-width: 1393px) 100vw, 1393px\" \/><\/a><figcaption id=\"caption-attachment-2313\" class=\"wp-caption-text\">Colordiff comparison of two audio files, one contains steganographic information<\/figcaption><\/figure>\n<p>Yet, we can use tools like steghide to access the data. In this case a file called <code>data.bin<\/code> that contains the text <em>&#8220;you can&#8217;t see me!&#8221;<\/em><\/p>\n<pre>$ steghide extract --stegofile ddac-y2k-snippet.wav \r\nEnter passphrase: \r\nwrote extracted data to \"data.bin\".\r\n$ cat data.bin \r\nyou can't see me!\r\n\r\n<\/pre>\n<p>Listening to the audio generated by steghide we wouldn&#8217;t be able to perceive any difference between the original and the modified file. We can observe that property again: <em>the digital fingerprint is obfuscated and the user&#8217;s expectation, and perception of the output of the source medium will not have changed<\/em>.<\/p>\n<h3>Why not metadata<\/h3>\n<p>Why don&#8217;t we fingerprint AI generated files using metadata?<\/p>\n<p>Like the decision not to watermark, the property of obfuscation is important. It is also important to store information somewhere that isn&#8217;t designed to be regularly updated, and so storing the information somewhere in a signal, or the underlying binary is a potentially good approach.<\/p>\n<p>We also recognize that not all file formats are designed to support metadata, which is an important consideration. If a file is output in formats that do not accommodate this property, such as plain text, it becomes essential to find other mechanisms for storing fingerprint data.<\/p>\n<h3>Additional textual techniques<\/h3>\n<p>While researching this blog, I thought Columbia University&#8217;s Cheng, Zhang, Zheng&#8217;s (2018) technique, FontCode to be pretty cool. The research embeds data in known fonts by encoding imperceptible differences in the typeface.<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"E6yLqQly72\"><p><a href=\"https:\/\/www.cs.columbia.edu\/2018\/fontcode-hiding-information-in-plain-text-unobtrusively-and-across-file-types\/\">FontCode: Hiding information in plain text, unobtrusively and across file types<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;FontCode: Hiding information in plain text, unobtrusively and across file types&#8221; &#8212; Department of Computer Science, Columbia University\" src=\"https:\/\/www.cs.columbia.edu\/2018\/fontcode-hiding-information-in-plain-text-unobtrusively-and-across-file-types\/embed\/#?secret=ELSsueEw32#?secret=E6yLqQly72\" data-secret=\"E6yLqQly72\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>More information <a href=\"https:\/\/www.cs.columbia.edu\/cg\/fontcode\/index.html fontcode\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<ul>\n<li>How do we detect information like this in our archives in the future?<\/li>\n<li>What information might already be hidden in your collections? Especially Columbia University!<\/li>\n<\/ul>\n<h3>Just solve it Steganography<\/h3>\n<p>I also wanted to draw attention to this section in the Just Solve It File Formats Wiki. As I was working on it this week, long after I started drafting this article, I found that it has a whole section on steganography. It might be worth a gander! \ud83e\udebf<\/p>\n<ul>\n<li>Just Solve It File Formats: <a href=\"http:\/\/fileformats.archiveteam.org\/wiki\/Steganography\" target=\"_blank\" rel=\"noopener\">Steganography<\/a>.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Steganography in digital records serves as a reminder that the value of our records lies in the information they contain. Preservation encompasses not only the conservation of form and structure but also interpretation and understanding. We cannot rely on digital preservation essentialism to evaluate the effectiveness of our current strategies. We need to comprehend the information we have today in order to effectively analyze it in the future, and this understanding will likely always be guided by those whom digital preservation serves.<\/p>\n<p>From the perspective of Generative AI, and through steganographic digital fingerprints, I believe we can usefully hide information in records that can have a big impact on our interpretation of the world today, and tomorrow.<\/p>\n<p>In medicine, informed consent is:<\/p>\n<blockquote><p>A process in which patients are given important information, including possible risks and benefits, about a medical procedure or treatment, genetic testing, or a clinical trial.<\/p><\/blockquote>\n<p><span style=\"background-color: var(--color_content_background); color: var(--color_content_text); font-family: var(--typography_fonts_text);\" data-darkreader-inline-bgcolor=\"\" data-darkreader-inline-color=\"\">Folks are getting to grips with the risks and benefits of AI generated outputs. Literacy is increasing such that people have an opinion on its use, its ethics, where it is appropriate and so on. It&#8217;s knowing that it is being used is an increasing problem.<\/span><\/p>\n<p>Some of the outputs of generative AI have outsized impacts that are harmful and life-changing. Generative AI affects the way we view the world, the way laws are enforced, and challenges the basic structures of society. I fully believe its use without signposting is unethical. I also believe that it is paramount that the signposting of AI need not restrict its continuing development, but it is also true that the use of AI needs to regulated and monitored by governments at a legal, and policy level.<\/p>\n<p>Until such times as it is, or even then, we need to ask developers of generative AI models to act in good faith and do better highlighting when AI is at use in someone else&#8217;s output.<\/p>\n<p>With steganographic fingerprinting we can maintain the fundamental structure of the AI output while providing a mechanism that a system can check, and let users know when AI has been involved in a generative process.<\/p>\n<p><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-check.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2316\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-check.png\" alt=\"Image shows a potential content request workflow for generative AI whereby a user requests content and a component is invoked before delivery that determines whether a fingerprint exists or not. If it does, the user is warned.\" width=\"1005\" height=\"928\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-check.png 1005w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-check-500x462.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/ai-check-768x709.png 768w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/a><\/p>\n<p>In a weird twisting of circumstances, the way manufacturers agreed with law enforcement to use hidden dots in physical print-outs, it&#8217;d be cool if AI houses could form an <em>entente cordiale<\/em> for a positive use that could begin to reduce the damages of some of the content that will be out there.<\/p>\n<p>Watermarks have been suggested, but, as discussed, they tend to reduce the quality of something. Fingerprints are less obvious, and possibly, more detectable using technological methods. They also help us with the problem of honors systems (even though they are necessary approaches too).<\/p>\n<p>The EFF <a href=\"https:\/\/www.eff.org\/deeplinks\/2024\/01\/ai-watermarking-wont-curb-disinformation\" target=\"_blank\" rel=\"noopener\">recently wrote<\/a> that &#8220;watermarks&#8221; won&#8217;t help to curb disinformation, but I think that the definition of success for curbing disinformation needs to be clearer &#8211; I do have a hope that fingerprinting will provide tools that help reduce a lot of the noise. Bad-faith users will always find a way around, but good-faith, or lazy users will most likely not care if their information is fingerprinted.<\/p>\n<p>Even if it only makes the situation slightly more bearable then I feel we will be in a better place without ignoring the situation completely, or expecting generative AI outputs to be completely eradicated. We can do something about the not knowing without restricting its <em>use<\/em>.<\/p>\n<p><em>What do we have?<\/em> The technology, and the ability to work with multiple format types.<\/p>\n<p>What we don&#8217;t have is standards to follow for fingerprinting and identification, and an agreement by AI tools to take on-board any of these ideas, but I think that can be a conversation.<\/p>\n<hr \/>\n<h2 id=\"journalism\">Steganographic fingerprinting and journalism<\/h2>\n<p>The EFF went above and beyond to track printer dots because it knew the potentially harmful outcomes of being tracked. We also mentioned the case of Reality Winner; this highlights the dangers of steganography when it is used to track individuals.<\/p>\n<p>I want to separate AI fingerprinting from tracking in-general. Especially those who are working in service of others as whistle-blowers exposing illegal, immoral, indecent, inappropriate behavior, and so on, in organizations.<\/p>\n<p>Whistle-blowers, and those helping journalists are doing important work, but it has to be done carefully.<\/p>\n<p>I have seen two examples recently of editors of leading newspapers and magazines ask people for direct contact via email or Signal messenger:<\/p>\n<figure id=\"attachment_2297\" aria-describedby=\"caption-attachment-2297\" style=\"width: 887px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/wired.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2297\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/wired.png\" alt=\"Image shows the editor of Wired.com reaching out to people via Bluesky with information on how to contact them via Signal messenger\" width=\"887\" height=\"471\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/wired.png 887w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/wired-500x266.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/wired-768x408.png 768w\" sizes=\"auto, (max-width: 887px) 100vw, 887px\" \/><\/a><figcaption id=\"caption-attachment-2297\" class=\"wp-caption-text\"><a href=\"https:\/\/bsky.app\/profile\/timmarchman.bsky.social\/post\/3lggwshoor22t\" target=\"_blank\" rel=\"noopener\">https:\/\/bsky.app\/profile\/timmarchman.bsky.social\/post\/3lggwshoor22t<\/a><\/figcaption><\/figure>\n<figure id=\"attachment_2296\" aria-describedby=\"caption-attachment-2296\" style=\"width: 885px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/404media.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2296\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/404media.png\" alt=\"Image shows the editor of 404media.co reaching out to people via Bluesky with information on how to contact them via Signal messenger, or email\" width=\"885\" height=\"567\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/404media.png 885w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/404media-500x320.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/404media-768x492.png 768w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/a><figcaption id=\"caption-attachment-2296\" class=\"wp-caption-text\"><a href=\"https:\/\/bsky.app\/profile\/jasonkoebler.bsky.social\/post\/3lhjhqoa5ak25\" target=\"_blank\" rel=\"noopener\">https:\/\/bsky.app\/profile\/jasonkoebler.bsky.social\/post\/3lhjhqoa5ak25<\/a><\/figcaption><\/figure>\n<p>This is about crucial activism and journalism, and that is why there is all the more reason not to mess this up.<\/p>\n<p>Via <a href=\"https:\/\/bsky.app\/profile\/matthodges.bsky.social\/post\/3lhcpnbkovs27\" target=\"_blank\" rel=\"noopener\">Matt Hodges<\/a>:<\/p>\n<p lang=\"en\">A few notes:<br \/>\n\u2022 Signal cannot protect you from an betraying chat partner<br \/>\n\u2022 Signal cannot protect you from device management spyware<br \/>\n\u2022 Signal cannot protect you from your own device<br \/>\n\u2022 Signal cannot protect you from your chat partner&#8217;s device<br \/>\n\u2022 Signal offers PRIVACY not ANONYMITY<\/p>\n<p><a href=\"https:\/\/bsky.app\/profile\/did:plc:35vhrw4vfcilzxggzbhxukyy\/post\/3lhcpnbkovs27?ref_src=embed\">[image or embed]<\/a><\/p>\n<p>\u2014 Matt Hodges (<a href=\"https:\/\/bsky.app\/profile\/did:plc:35vhrw4vfcilzxggzbhxukyy?ref_src=embed\">@matthodges.bsky.social<\/a>) <a href=\"https:\/\/bsky.app\/profile\/did:plc:35vhrw4vfcilzxggzbhxukyy\/post\/3lhcpnbkovs27?ref_src=embed\">February 4, 2025 at 12:39 AM<\/a><\/p>\n<p><script async src=\"https:\/\/embed.bsky.app\/static\/embed.js\" charset=\"utf-8\"><\/script><\/p>\n<p>I asked both editors to consider an anonymous <a href=\"https:\/\/www.theguardian.com\/securedrop\" target=\"_blank\" rel=\"noopener\">Secure Drop<\/a> service such as that used by the Guardian.<\/p>\n<p>In lieu of that, there needs to be clear guidance. People need to know that only you can protect your identity by not revealing it in the first place. That Signal is only so secure as your device&#8217;s pass code, or theirs, and so you must take responsibility for deleting traces completely and thoroughly, and so must these editors. Law-enforcement can compel organisations to make information available.<\/p>\n<p>And if this article leaves you with any impression, steganography can be used to track you, and YOU must have the tools at your disposal to identify whether your information has steganographic markings, be they physical, or digital.<\/p>\n<p>There are examples of tracking being done by <a href=\"https:\/\/web.archive.org\/web\/20131020092330\/http:\/\/gawker.com\/5164035\/tesla-ceo-in-digital-witch-hunt\" target=\"_blank\" rel=\"noopener\">people like Mu\u200c\u200b\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200b\u200b\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u200c\u200b\u200c\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200b\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200c\u200b\u200c\u2060\u200c\u200c\u200c\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200c\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200b\u200b\u200c\u200b\u200b\u200c\u2060\u200c\u200b\u200b\u200b\u200b\u200b\u2060\u200c\u200c\u200b\u200b\u200b\u200c\u200c\u2060\u200c\u200c\u200b\u200b\u200b\u200b\u200c\u2060\u200c\u200c\u200b\u200c\u200c\u200c\u200b$k and their organizations<\/a>.<\/p>\n<p dir=\"auto\">Going back to <a href=\"https:\/\/www.zachaysan.com\/writing\/2018-01-01-fingerprinting-update\" target=\"_blank\" rel=\"noopener\">Zach Aysan&#8217;s<\/a> blog, they offer their advice (and their verdict) on tracking countermeasures.<\/p>\n<blockquote><p>&nbsp;<\/p>\n<ol>\n<li>Avoid releasing excerpts and raw documents. <strong>Works perfectly.<\/strong><\/li>\n<li>Get the same documents from multiple leakers to ensure they have the exact same content on a byte-by-byte level.\u00a0<strong>Works perfectly.<\/strong><\/li>\n<li>Manually retype excerpts to avoid invisible characters and homoglyphs.\u00a0<strong>Works unless careless.<\/strong><\/li>\n<li>Keep excerpts short to limit the amount of information shared.\u00a0<strong>Works unless unlucky.<\/strong><\/li>\n<li>Use a tool that strips non-whitelisted characters from text before sharing it with others.\u00a0<strong>Doesn\u2019t work.<\/strong><\/li>\n<\/ol>\n<\/blockquote>\n<p dir=\"auto\">David Jacobsen&#8217;s <a href=\"https:\/\/github.com\/DavidJacobson\/SafeText\" target=\"_blank\" rel=\"noopener\">SafeText<\/a> is a Python tool that identifies the frequency of steganographic markers in plain-text, identifying:<\/p>\n<ul>\n<li dir=\"auto\">Zero-width characters used for encoding messages.<\/li>\n<li dir=\"auto\">Non-standard space-characters used for fingerprinting.<\/li>\n<li dir=\"auto\">Homoglyphs used to replace one Unicode character with a similar Unicode alternative, again, for fingerprinting.<\/li>\n<\/ul>\n<p>Jacobsen&#8217;s tool also warns about text that can identify country of origin.<\/p>\n<p>While Aysan doesn&#8217;t rate stripping these characters as an alternative for maintaining your own privacy, I do see utility in identifying them for characterization purposes, e.g. in archives, and from a privacy perspective, to get some sort of idea someone might be &#8220;monitoring&#8221; you &#8212; especially if you&#8217;re out there sharing sensitive documents to journalists.<\/p>\n<p>For the journalists, this can help you protect your sources as well!<\/p>\n<h3>safetext-go<\/h3>\n<p>Jacobsen&#8217;s utility is very cool. I have translated most of its functionality to a, hopefully, complementary, <a href=\"https:\/\/github.com\/ross-spencer\/safetext\" target=\"_blank\" rel=\"noopener\">Golang module and app<\/a>, primarily to provide easier use as a library in tools, but which can serve as a multi-platform alternative on the command line.<\/p>\n<h3>safetext-json<\/h3>\n<p>I have also exported Jacobsen&#8217;s characters list (zero-width, non-standard-spaces, homoglyphs) to <a href=\"https:\/\/github.com\/ross-spencer\/safetext-json\/\" target=\"_blank\" rel=\"noopener\">JSON as a reference<\/a> for other implementors of SafeText utilities. The JSON is designed to be a resource that can be added to in the spirit of the <a href=\"https:\/\/github.com\/minimaxir\/big-list-of-naughty-strings\" target=\"_blank\" rel=\"noopener\">Big List of Naughty Strings<\/a> (BLNS) which is also often fed into <a href=\"https:\/\/github.com\/ross-spencer\/big-list-of-naughty-files\" target=\"_blank\" rel=\"noopener\">other tooling<\/a> out there.<\/p>\n<p>I will come back to this tooling in a future post, but for those interested now, I have looked at text analysis workflows using <a href=\"https:\/\/tika.apache.org\/\" target=\"_blank\" rel=\"noopener\">Apache Tika<\/a> previously (<a href=\"https:\/\/openpreservation.org\/blogs\/hyperlinks-in-your-files-how-to-get-them-out-using-tikalinkextract\/\" target=\"_blank\" rel=\"noopener\">tikalinkextract<\/a>, <a href=\"https:\/\/github.com\/ross-spencer\/nerlinks\" target=\"_blank\" rel=\"noopener\">named-entity-recognition (ner-links)<\/a>). Bertrand Caron also covers some text extraction tools <a href=\"https:\/\/digipres.fr\/archives\/136\" target=\"_blank\" rel=\"noopener\">in his blog<\/a>. Using Apache Tika in your workflow to extract plain-text from other document formats opens up the opportunity to identify steganographic techniques in more than just your plain-text sources.<\/p>\n<p><em><strong>NB.\u00a0<\/strong>perhaps counter-intuitively when thinking about steganography providing more information, all of the techniques mentioned, zero-width, non-standard spaces, and homoglyphs, as well as use of other characters such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Dash\" target=\"_blank\" rel=\"noopener\">dash alternatives<\/a> to hyphens, can also obfuscate information and prevent it from being discovered using simple string-matching techniques, zero-width characters creating new word boundaries, for example. Look at characterizing the encoding used in your datasets and please keep this in mind when thinking about protecting sensitive data.<\/em><\/p>\n<p>Links to safetext tooling can be found below:<\/p>\n<ul>\n<li>SafeText (original in Python): <a href=\"https:\/\/github.com\/DavidJacobson\/SafeText\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/DavidJacobson\/SafeText<\/a>.<\/li>\n<li>Safetext JSON: <a href=\"https:\/\/github.com\/ross-spencer\/safetext-json\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/ross-spencer\/safetext-json\u00a0<\/a>.<\/li>\n<li>Safetext (golang): <a href=\"https:\/\/github.com\/ross-spencer\/safetext\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/ross-spencer\/safetext\u00a0<\/a>.<\/li>\n<\/ul>\n<div dir=\"auto\">\n<hr \/>\n<h2>On C2PA<\/h2>\n<p>Despite my comments in the introduction, I will continue to follow the development of the C2PA standard and have cited its importance to colleagues and friends. Is it the right solution? I don&#8217;t know, but I think it is an important conversation and useful techniques may come out of this effort. Even if C2PA better supports the creation workflow in bonafide media outlets, or even official records in government, it can be a boon to archives in the future.<\/p>\n<hr \/>\n<h2>Usborne books<\/h2>\n<p>The header image for this blog comes from the Usborne learn to code series. It is from the book Battlegames which I took a snapshot of while back in Glasgow a few years ago.<\/p>\n<p>Usborne&#8217;s 80s computer books have been made <a href=\"https:\/\/usborne.com\/au\/books\/computer-and-coding-books\" target=\"_blank\" rel=\"noopener\">freely available as PDFs<\/a> on their website. Dig in for a visit down memory lane.<\/p>\n<hr \/>\n<h2>Updates<\/h2>\n<h3>May 2025<\/h3>\n<p>An article just crossed my path from IMATAG describing Watermarking changes to EU legislation from 2024:<a href=\"https:\/\/www.imatag.com\/blog\/eu-ai-act-update-new-watermarking-requirements-for-ai-generated-content\" target=\"_blank\" rel=\"noopener\"> https:\/\/www.imatag.com\/blog\/eu-ai-act-update-new-watermarking-requirements-for-ai-generated-content<\/a><\/p>\n<p>It is interesting to read that it was written in July 2024 yet change does not <em>feel<\/em> measurable. That being said, broader changes are marked for August 2026 and perhaps it will make all the difference by then, if it is not too late.<\/p>\n<p>Additionally, IMATAG are using steganographic techniques as described above to provide services for those looking to watermark. Of course they&#8217;ve &#8220;patented&#8221; it and put it behind an opaque paywall so it is difficult to learn more from the outside but it looks like an interesting solution.<\/p>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2268\" class=\"pvc_stats total_only  \" data-element-id=\"2268\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Artificial intelligence (AI) is a polarizing topic. For every reasoned assessment of the technology and its potential to make some of our smaller, onerous, or more repetitive tasks easier, there are probably 100 reactive pieces predicting some radical overhaul of societal norms, from the service industry receiving new intakes of out of work software developers to laypeople taking on roles traditionally occupied by those of a college education, if they just start <em>&#8220;<a href=\"https:\/\/bsky.app\/profile\/sonjadrimmer.bsky.social\/post\/3lik3yjljo22n\" target=\"_blank\" rel=\"noopener\">asking their AI the right questions<\/a>&#8220;<\/em> \u00af\\_(\u30c4)_\/\u00af<\/p>\n<p>The amount of AI-propaganda is draining, and the reaction is often spread across the board too, some cheer leading, some decrying, plenty taking their time to offer skilled and nuanced rebuttals, or suggestions for improvements.<\/p>\n<p>I find myself largely trying to stay out of the conversations. A lot like blockchain conversations 8 years ago, it will take another half decade for the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gartner_hype_cycle\" target=\"_blank\" rel=\"noopener\">hype-cycle<\/a> to plateau for us to see where it can truly complement our work.<\/p>\n<p>One part of the conversation that is increasingly harder to ignore, is being informed about when AI has been used in the generation of text or images. It is the property of knowing, or having the tools to\u00a0<em>know<\/em> is what I feel is the most important.<\/p>\n<p>How can we be better informed about when AI is used, so that we are better prepared as consumers, to receive and understand content?<\/p>\n<p>In this blog I want to explore the potential for steganography techniques to be used in the output of AI to fingerprint content and provide a way for front-end mechanisms to identify it, as we might file formats using <a href=\"https:\/\/blog.nationalarchives.gov.uk\/cafed00ds-and-cafebabes\/\" target=\"_blank\" rel=\"noopener\">magic numbers<\/a>, so that users can be given the chance of informed consent: the opportunity to opt-in or out of whether we engage with AI content or not.<\/p>\n<div class=\"link-more\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &ldquo;Informed consent: considering steganographic techniques to fingerprint Generative AI output&rdquo;<\/span>&hellip;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2268\" class=\"pvc_stats total_only  \" data-element-id=\"2268\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":2288,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[315,114,75],"tags":[316,333,324,330,331,327,328,364,325,326,362,321,318,319,329,332,317,320,323],"class_list":["post-2268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence","category-digital-literacy","category-golang","tag-ai","tag-ai-ethics","tag-artificial-intelligence","tag-c2pa","tag-cyber-security","tag-digital-fingerrprint","tag-digital-obfuscation","tag-eu-regulation-2024-1689","tag-genai","tag-generativeai","tag-imatag","tag-journalism","tag-llm","tag-machine-learning","tag-misinformation","tag-online-safety","tag-steganography","tag-watermark","tag-whistleblower","entry"],"a3_pvc":{"activated":true,"total_views":192,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog<\/title>\n<meta name=\"description\" content=\"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog\" \/>\n<meta property=\"og:description\" content=\"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/\" \/>\n<meta property=\"og:site_name\" content=\"ross spencer :: exponentialdecay.digipres :: blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-03T21:15:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T16:59:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs-1024x731.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"731\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ross Spencer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:site\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ross Spencer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/\"},\"author\":{\"name\":\"Ross Spencer\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"headline\":\"Informed consent: considering steganographic techniques to fingerprint Generative AI output\",\"datePublished\":\"2025-03-03T21:15:56+00:00\",\"dateModified\":\"2025-12-01T16:59:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/\"},\"wordCount\":4353,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/usborne-basic-cyborgs.jpg\",\"keywords\":[\"AI\",\"AI Ethics\",\"artificial intelligence\",\"C2PA\",\"Cyber Security\",\"Digital Fingerrprint\",\"Digital Obfuscation\",\"EU Regulation 2024\\\/1689\",\"GenAI\",\"GenerativeAI\",\"IMATAG\",\"Journalism\",\"LLM\",\"Machine Learning\",\"Misinformation\",\"Online Safety\",\"steganography\",\"Watermark\",\"Whistleblower\"],\"articleSection\":[\"Artificial Intelligence\",\"Digital Literacy\",\"Golang\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/\",\"name\":\"Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/usborne-basic-cyborgs.jpg\",\"datePublished\":\"2025-03-03T21:15:56+00:00\",\"dateModified\":\"2025-12-01T16:59:43+00:00\",\"description\":\"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#primaryimage\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/usborne-basic-cyborgs.jpg\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/usborne-basic-cyborgs.jpg\",\"width\":1536,\"height\":1096,\"caption\":\"Image of a children's learn to code textbook by Usborne Books. The page shows a snippet from a computer game in BASIC called \\\"Escape\\\". The illustration is of three menacing looking Cyborgs.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Informed consent: considering steganographic techniques to fingerprint Generative AI output\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\",\"name\":\"ross spencer :: exponentialdecay.digipres :: blog\",\"description\":\"Digital preservation analyst, researcher, and software developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\",\"name\":\"Ross Spencer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"width\":2560,\"height\":2560,\"caption\":\"Ross Spencer\"},\"logo\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\"},\"description\":\"Digital preservation domain expert and full-stack software developer.\",\"sameAs\":[\"http:\\\/\\\/www.exponentialdecay.co.uk\\\/blog\",\"https:\\\/\\\/www.instagram.com\\\/b33tk33p3r\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ross-spencer-b6b9b758\\\/\",\"https:\\\/\\\/x.com\\\/beet_keeper\"],\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/author\\\/exponentialdecay\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog","description":"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/","og_locale":"en_US","og_type":"article","og_title":"Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog","og_description":"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.","og_url":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/","og_site_name":"ross spencer :: exponentialdecay.digipres :: blog","article_published_time":"2025-03-03T21:15:56+00:00","article_modified_time":"2025-12-01T16:59:43+00:00","og_image":[{"width":1024,"height":731,"url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs-1024x731.jpg","type":"image\/png"}],"author":"Ross Spencer","twitter_card":"summary_large_image","twitter_creator":"@beet_keeper","twitter_site":"@beet_keeper","twitter_misc":{"Written by":"Ross Spencer","Est. reading time":"22 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#article","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/"},"author":{"name":"Ross Spencer","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"headline":"Informed consent: considering steganographic techniques to fingerprint Generative AI output","datePublished":"2025-03-03T21:15:56+00:00","dateModified":"2025-12-01T16:59:43+00:00","mainEntityOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/"},"wordCount":4353,"commentCount":0,"publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs.jpg","keywords":["AI","AI Ethics","artificial intelligence","C2PA","Cyber Security","Digital Fingerrprint","Digital Obfuscation","EU Regulation 2024\/1689","GenAI","GenerativeAI","IMATAG","Journalism","LLM","Machine Learning","Misinformation","Online Safety","steganography","Watermark","Whistleblower"],"articleSection":["Artificial Intelligence","Digital Literacy","Golang"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/","url":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/","name":"Informed consent: considering steganographic techniques to fingerprint Generative AI output - ross spencer :: exponentialdecay.digipres :: blog","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#primaryimage"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs.jpg","datePublished":"2025-03-03T21:15:56+00:00","dateModified":"2025-12-01T16:59:43+00:00","description":"A look at the dangers of Generative AI outputs and how we might fingerprint them for automatic identification using steganographic techniques.","breadcrumb":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#primaryimage","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs.jpg","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/02\/usborne-basic-cyborgs.jpg","width":1536,"height":1096,"caption":"Image of a children's learn to code textbook by Usborne Books. The page shows a snippet from a computer game in BASIC called \"Escape\". The illustration is of three menacing looking Cyborgs."},{"@type":"BreadcrumbList","@id":"https:\/\/exponentialdecay.co.uk\/blog\/informed-consent-considering-steganographic-techniques-to-fingerprint-generative-ai-output\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/exponentialdecay.co.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Informed consent: considering steganographic techniques to fingerprint Generative AI output"}]},{"@type":"WebSite","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website","url":"https:\/\/exponentialdecay.co.uk\/blog\/","name":"ross spencer :: exponentialdecay.digipres :: blog","description":"Digital preservation analyst, researcher, and software developer","publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exponentialdecay.co.uk\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716","name":"Ross Spencer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","width":2560,"height":2560,"caption":"Ross Spencer"},"logo":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png"},"description":"Digital preservation domain expert and full-stack software developer.","sameAs":["http:\/\/www.exponentialdecay.co.uk\/blog","https:\/\/www.instagram.com\/b33tk33p3r\/","https:\/\/www.linkedin.com\/in\/ross-spencer-b6b9b758\/","https:\/\/x.com\/beet_keeper"],"url":"https:\/\/exponentialdecay.co.uk\/blog\/author\/exponentialdecay\/"}]}},"views":1732,"_links":{"self":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=2268"}],"version-history":[{"count":59,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2268\/revisions"}],"predecessor-version":[{"id":2579,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2268\/revisions\/2579"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media\/2288"}],"wp:attachment":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=2268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=2268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=2268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}