Categories
Misc Steganography

7DC

Mon premier commit pour 2012, Stéganô 0.4.

J’espère pour vous que cette nouvelle année sera un bon cru. De bonnes nouvelles et un maximum d’épanouissement. Pour ma part 2012 et 2013 vont être je pense assez importantes dans ma vie.

Categories
Python Security Steganography

Séquence d’entiers A000217

Un test avec la séquence d’entiers A000217.

$ slsb-set --hide -i examples/pictures/Montenach.png -o ~/enc-OEIS_A000217.png --generator OEIS_A000217 -m 'Happy new year!'
$ slsb-set --reveal -i ~/enc-OEIS_A000217.png --generator OEIS_A000217
Happy new year!

$ slsb-set --reveal -i ~/enc-OEIS_A000217.png --generator fermat
Impossible to detect message.

Rien de bien compliqué ici. Il s’agit juste de montrer comme il est simple d’ajouter des générateurs.
J’ai aussi ajouté de nouveaux exemples plutôt intéressants, comme celui-ci.

Merci aussi à Vincent qui a répondu à l’appel à l’aide du billet précédent.

Ce post n’est pas assez important pour mériter une photo de Sarah. Mais ne vous inquiétez pas, elle va y passer.

Categories
Security Steganography

Stéganographie avec ensembles en utilisant la fonction identité (avec Jessica Alba)

Jessica Alba

Pourquoi ne pas ajouter la fonction identité ( avec son implémentation en générateur) à la liste des générateurs permettant d’engendrer les ensembles?
On pourrait ensuite vérifier si on peut retrouver le message avec l’outil slsb classique. Faisons le test:

# On cache avec l'outil slsb-set (LSB + fonction identité)
$ slsb-set --hide -i ~/Jessica_Alba.png -o ~/Jessica_Alba-enc-gen.png --generator identity -m 'Je préfère Cédric à Michael Weatherly.'

# On tente de retrouver le message avec l'outils slsb (juste LSB)
$ slsb --reveal  -i ~/Jessica_Alba-enc-gen.png
Je préfère Cédric à Michael Weatherly.

Et ça fonctionne! Ça peut sembler logique, mais pour moi c’était un peu la surprise. La surprise qui veut dire que ce n’est quand même pas codé n’importe comment 😉

Heureusement d’autres générateurs d’ensembles sont disponibles. Voici la liste des générateurs déjà implémenté.

Appel à l’aide. Si vous avez une implémentation un peu voir beaucoup plus performante que la mienne pour Syracuse, elle serait la bienvenue! Mais j’en doute… Syracuse:

Post lié: Stéganalyse de la méthode LSB (avec un ensemble de nombres décrit par crible d’Eratosthenes) avec Jennifer Morrison

Categories
Security Steganography

Stéganalyse de la méthode LSB (avec un ensemble de nombres décrit par crible d’Eratosthenes) avec Jennifer Morrison

Tout d’abord afin se rafraîchir l’esprit, on pourra lire l’ancien billet Stéganalyse de la méthode LSB. Il s’agissait d’usiter la méthode dite Least Significant Beat puis de comparer la stéganalyse du fichier original et du fichier avec un message caché. La conclusion était que grâce à la stéganalyse par parité il était aisé de détecter une image altérée par la méthode LSB classique.

Aujourd’hui nous allons en plus caché le message avec la nouvelle technique. Qui consiste à utiliser un ensemble de nombres pour sélectionner les pixels où seront cachés les données. Pour cette exemple nous allons utiliser le crible d’Eratosthenes.

J’avais promis qu’après Elisha Cuthbert nous passerions à Jennifer Morrison.

Ensuite il suffit d’exécuter les commandes:

# Cache le contenu de secret.txt dans Jennifer_Morrison-original.png en utilisant l'ensemble des nombres décrit par le crible d'Eratosthenes
$ slsb-set --hide -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-enc-gen.png --generator eratosthenes -f ./secret.txt
# Stéganalyse du fichier résultant 
$ steganalysis-parity -i ./Jennifer_Morrison-enc-gen.png -o ./Jennifer_Morrison-en-gen-steg.png

# Cache le contenu de secret.txt dans Jennifer_Morrison-original.png via la méthode LSB classique
$ slsb --hide -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-enc.png  -f ./secret.txt 
# Stéganalyse du fichier résultant
$ steganalysis-parity -i ./Jennifer_Morrison-enc.png -o ./Jennifer_Morrison-en-steg.png 

# Stéganalyse du fichier original
$ steganalysis-parity -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-steg.png

Vous obtiendrez en résultat ces fichiers (survollez avec la souris les images afin de comprendre de quoi il s’agit):

Fichier original Stéganalyse du fichier original

Texte caché (LSB)

Texte caché (LSB + Eratosthenes) Stéganalyse de l'image avec un texte caché (LSB + Eratosthenes)

Les 3 sublimes images de la première colonne paraissent identiques.
On peut observer une étrange régularité au début du fichier résultant de la stéganlyse de l’image dans laquelle un texte a été caché via la méthode LSB classique.
Par contre il est plus difficile de détecter une anomalie similaire sur le fichier résultant de la stéganalyse de l’image dans laquelle un texte a été caché via la méthode LSB tout en utilisant un ensemble de points (ici obtenu avec le crible d’Eratosthenes).

Si vous ne me faites pas confiance:

$ wget http://blog.cedricbonhomme.org/wp-content/uploads/2011/12/Jennifer_Morrison-enc.png
$ wget http://blog.cedricbonhomme.org/wp-content/uploads/2011/12/Jennifer_Morrison-enc-gen.png

$ slsb-set --reveal --generator eratosthenes -i ./Jennifer_Morrison-enc-gen.png  -b text-dec-gen.txt
$ slsb --reveal  -i ./Jennifer_Morrison-enc.png  -b text-dec.txt
$ cmp text-dec.txt text-dec-gen.txt 
$ cat text-dec.txt 
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.

$ slsb-set --reveal --generator fermat -i ./Jennifer_Morrison-enc-gen.png  -b text-dec-gen.txt
Impossible to detect message.

La conclusion évidente est donc qu’il est préférable de ne pas utiliser des pixels se suivants mais un ensemble de pixels bien réparti que l’on pourra retrouver afin de récupérer le message caché. Ici l’idée était donc de générer des ensembles via des générateurs de nombres entiers. La qualité de la répartition va donc dépendre de la suite choisie. On aurait très bien pu utiliser la suite de Fibonacci par exemple.

Vous trouverez plus de détails ainsi qu’un meilleur exemple à cette page.

La prochaine fois on se fait Jessica Alba ou Sarah Michelle Gellar.

Categories
Security Steganography

Stéganographie avec ensembles

Comme promis voici une première implémenation du module de Stéganô permettant de cacher des informations (textes ou binaires) en utilisant des ensembles d’entiers. Il s’agit d’un premier jet codé entre deux parties de Nexuiz (franchement génial, on peut se faire une partie en réseau si ça vous tente).

Vous pouvez tester le nouveau module de Stéganô en recopiant le script ci-dessous dans un fichier test-slsb-gen.sh puis en l’excécutant.

hg clone https://bitbucket.org/cedricbonhomme/stegano/
cd stegano/
sudo python setup.py install
echo "We're going to test a little Stéganô..."

echo "Hide the message with the Sieve of Eratosthenes..."
slsb-set --hide -i ./examples/pictures/Montenach.png -o ./surprise.png --generator eratosthenes -m 'Joyeux Noël!'
echo ""

echo "Try to reveal with Mersenne numbers..."
slsb-set --reveal --generator mersenne -i ./surprise.png
echo ""

echo "Try to reveal with fermat numbers..."
slsb-set --reveal --generator fermat -i ./surprise.png
echo ""

echo "Try to reveal with carmichael numbers..."
slsb-set --reveal --generator carmichael -i ./surprise.png
echo ""

echo "Try to reveal with Sieve of Eratosthenes..."
slsb-set --reveal --generator eratosthenes -i ./surprise.png

Vous obtiendrez le résultat suivant:

cedric@montenach:~$ ./test-slsb-gen.sh 
destination directory: stegano
requesting all changes
adding changesets
adding manifests
adding file changes
added 53 changesets with 115 changes to 43 files
updating to branch default
23 files updated, 0 files merged, 0 files removed, 0 files unresolved
...
We're going to test a little Stéganô...

Hide the message with the Sieve of Eratosthenes...

Try to reveal with Mersenne numbers...
Impossible to detect message.

Try to reveal with fermat numbers...
Impossible to detect message.

Try to reveal with carmichael numbers...
Impossible to detect message.

Try to reveal with Sieve of Eratosthenes...
Joyeux Noël!

Et voilà le message est bien découvert avec le crible d’Eratosthenes. Il s’agit d’une première version et il y a des améliorations à effectuer. Cependant il est possible de déjà faire quelques tests. Pour le moment il est possible de générer des ensembles avec la suite de Fibonacci, le crible d’Eratosthenes, les nombres de Fermat et Carmichael. Il y a quelques problèmes avec Carmichael et Ackermann. Je ne comprends pas, j’ai pourtant un i7 ;-). Je précise que dans cette implémentation la suite de fermat commence par 1,2,3,… En commençant par les premières valeurs on a des problèmes…