Update inspiration FAQ to reference waxwing's Primal post and the Meteor paper
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"VERSION": "v0.7.61",
|
||||
"VERSION_NUMBER": "0.7.61",
|
||||
"BUILD_DATE": "2026-06-29T00:27:13.001Z"
|
||||
"VERSION": "v0.7.62",
|
||||
"VERSION_NUMBER": "0.7.62",
|
||||
"BUILD_DATE": "2026-06-29T00:30:26.801Z"
|
||||
}
|
||||
|
||||
@@ -744,35 +744,38 @@
|
||||
</button>
|
||||
<div class="stegoCollapsibleContent stegoHidden">
|
||||
<p>
|
||||
This project is inspired by research into <strong>linguistic
|
||||
steganography</strong> — the art of hiding information within natural
|
||||
language. Traditional steganography hides data in images, audio, or
|
||||
file metadata, but text-based steganography is harder because text is
|
||||
compact and every character is visible.
|
||||
The direct inspiration for this project is a
|
||||
<a href="https://primal.net/e/nevent1qqstxmgsd0egtq57gj8mghckthsv79dhegh7xh97hwtwve6l56g4s9sqtjd7k" target="_blank" rel="noopener">post by waxwing on Primal</a>
|
||||
that walks through the core idea of using a language model's
|
||||
next-token probability distribution as a steganographic carrier
|
||||
channel. The post explains how secret bits can steer token selection
|
||||
while preserving the model's output distribution, making the
|
||||
resulting cover text statistically indistinguishable from normal
|
||||
model output.
|
||||
</p>
|
||||
<p>
|
||||
The breakthrough idea is to use a <strong>language model's own
|
||||
probability distribution</strong> as the carrier channel. Instead of
|
||||
tweaking pixels or LSBs, you steer which token the model emits next,
|
||||
encoding one secret bit per token. Key inspirations include:
|
||||
That post references the academic paper that formalized this
|
||||
approach:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Entropy coding approaches</strong> (e.g. Cachin's
|
||||
information-theoretic steganography) that treat the cover as a
|
||||
probability distribution and map secret bits onto it.</li>
|
||||
<li><strong>"Dissociated Press" / Markov-chain steganography</strong>
|
||||
— early experiments that used statistical text generation to hide
|
||||
messages, limited by the poor quality of pre-LLM language models.</li>
|
||||
<li><strong>Modern LLM steganography research</strong> — papers that
|
||||
use GPT-style models to achieve near-perfect cover text quality
|
||||
while encoding multiple bits per token via arithmetic or
|
||||
half-splitting codes.</li>
|
||||
<li>
|
||||
<strong><a href="https://eprint.iacr.org/2021/686" target="_blank" rel="noopener">Meteor: A Simple and Practical Steganographic Protocol for LLMs</a></strong>
|
||||
— this paper introduces the entropy-coding mechanism that makes
|
||||
the output distribution-preserving. Instead of a naive 2-way
|
||||
split, the full scheme uses arithmetic coding over the model's
|
||||
probability distribution, achieving roughly 2–4 bits per token
|
||||
while remaining information-theoretically undetectable to a censor
|
||||
who only observes the channel.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
The half-splitting scheme used here is one of the simplest robust
|
||||
approaches: it guarantees exactly one bit per token, is symmetric
|
||||
(encoder and decoder run the same logic), and produces text that's
|
||||
indistinguishable from normal model output to a casual reader.
|
||||
The half-splitting scheme implemented in this demo is a simplified
|
||||
version of Meteor's approach: it guarantees exactly one bit per
|
||||
token, is symmetric (encoder and decoder run the same logic), and
|
||||
produces text that's indistinguishable from normal model output to
|
||||
a casual reader. The full arithmetic-coding version from the paper
|
||||
is more efficient but the core principle is identical — secret bits
|
||||
steer selection within the model's probability distribution.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user