HAL Id: hal-02165880
https://hal.archives-ouvertes.fr/hal-02165880
Submitted on 26 Jun 2019
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of
sci-entific research documents, whether they are
pub-lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d’enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.
Stéganographie naturelle pour images JPEG
Théo Taburet, Patrick Bas, Wadih Sawaya, Jessica Fridrich
To cite this version:
Théo Taburet, Patrick Bas, Wadih Sawaya, Jessica Fridrich. Stéganographie naturelle pour images
JPEG. GRETSI, Aug 2019, Lille, France. �hal-02165880�
Stéganographie naturelle pour images JPEG
Théo T
ABURET
×
, Patrick B
AS
×
, Wadih S
AWAYA
]
, Jessica F
RIDRICH
+
×
CNRS, Ecole Centrale de Lille
CRIStAL Lab, 59651 Villeneuve d’Ascq Cedex, France
]
IMT Lille-Douai, Univ. Lille, CNRS, Centrale Lille, UMR 9189, France
+
Department of ECE
SUNY Binghamton, NY, USA
{theo.taburet, patrick.bas}@centralelille.fr, wadih.sawaya@imt-lille-douai.fr
fridrich@binghamton.edu
Résumé –
Ce papier traite du développement d’un algorithme permettant d’étendre la "Stéganographie naturelle" (NS) aux images JPEG. Cette
méthode permet l’insertion un message de taille importante avec une sécurité empirique élevée. Elle utilise le principe de changement de source
: partant d’une image cover capturée à ISO
1
le signal stéganographique est généré de sorte à imiter une image capturée à ISO
2
> ISO
1
.
Au niveau du capteur, ce changement de sensibilité peut être modélisé par l’ajout d’un bruit photonique indépendant suivant une loi Normale.
La problématique de cette méthode réside ici dans la modélisation de ce signal après développement dans le domaine DCT. Partant d’une
image RAW nous prenons en compte les étapes du développement (le dématriçage, la transformation luminance et la quantification JPEG)
afin de modéliser les dépendances entre les coefficients DCT voisins via le calcul d’une matrice de covariance. La simplicité de ce schéma de
développement permet de justifier son intérêt qui offre des taux d’insertions supérieurs à l’état de l’art (> 1 bpnzAC) tout en préservant la sécurité
pratique (P
E
' 40%).
Abstract –
This paper discusses the development of an algorithm to extend "Natural Steganography" (NS) to JPEG images, this method could
allow an insertion of a large size message with high empirical security. This schema uses the principle of cover source switching: starting from
a cover image captured at ISO
1
the steganographic signal is generated to imitate an image captured at ISO
2
> ISO
1
. At the sensor level, this
change in sensitivity can be modelled by adding an independent photonic noise according to a Normal distribution. The problem of this method
lies here in the modeling of this signal in the DCT domain. Starting from a RAW image, the processing steps considered are demosaicking
(bi-linear), luminance averaging and quantification related to JPEG compression. They are modeled using a covariance matrix. The simplicity
of this development scheme justifies the interest of this scheme which offers superior embedding rates compared to the state of the art (> 1 bit
per non-zero coefficient) while preserving high practical security (P
E
' 40%).
1
Stéganographie naturelle
La stéganographie se présente comme l’art de dissimuler de
l’information dans un média anodin appelé "cover", permettant
la transmission de messages secrets entre des pairs. Le produit
de cette opération de dissimulation s’appelle "stégo".
L’inser-tion d’un message induit une distorsion du modèle initial qui va
potentiellement permettre au stéganalyste de distinguer la stégo
d’une cover. Le but de la stéganographie naturelle (NS) est de
tâcher de faire passer l’insertion pour un processus naturel afin
d’imiter le modèle d’une source cover.
1.1
Principes de base
On cherche ici à modéliser le signal stégo comme étant un
signal additif permettant de produire une stégo (S
2
) ayant les
même propriétés qu’une cover capturée à
ISO
2
> ISO
1
et
ce à partir d’une image cover (S
1
) capturée à
ISO
1
: il s’agit
du principe du "changement de source cover" permettant de
passer d’un modèle de source
S
1
à une source
S
2
[
1
]. Cette
variation des propriétés statistiques est due au changement
de sensibilité (la scène capturée étant identique). En effet,
lors de l’acquisition d’une image les erreurs de comptage des
photons sur les photosites induisent la génération d’un bruit
qui s’exprime indépendamment sur chaque photosite. Pour une
sensibilité
ISO
1
donnée, le bruit photonique sur le photosite
(i, j) peut être modélisé par une loi de Poisson et approximé
par une loi Normale de moyenne nulle et dont la variance est
en relation affine avec la valeur non bruitée du photosite (µ
i,j
) :
N
i,j
(1)
∼ N (0, a
1
µ
i,j
+ b
1
)
La somme de variables normales indépendantes restant une
variable normale, et en supposant que
µ
i,j
' x
i,j
, le signal
stéganographique
S sera alors distribué selon :
S
i,j
∼ N (0, (a
2
− a
1
)x
(1)
i,j
+ (b
2
− b
1
) )
Les propriétés statistiques d’une stégo étant ainsi les mêmes
que celles d’une cover capturée à
ISO
2
nous nous proposons
de déterminer le niveau de sécurité empirique, a priori élevé de
cette approche.
1.2
Insertion dans le domaine JPEG
DCT
Coeff.
Insertion par
Échantillonage
DGM sur 4 trellis
Pre-Cover
(Raw)
Stego
(JPEG)
DCT
Coeff.
Quantification
Dématriçage
/ Luminance /
DCT
Matrice de
Covariance
⌃
<latexit sha1_base64="+aiMpQfRrIhkzj0Lh2h/7JFwhXQ=">AAACxXicjVHLSsNAFD2Nr1pf9bFzE2wEVyWtC10WXOiyoq2CLWUSp3UwyYRkUqil+Ctu9V/8AP9A/8I7Ywo+EJ1A5sy55x7uw4sDkSrXfSlYM7Nz8wvFxdLS8srqWnl9o53KLPF5y5eBTC49lvJARLylhAr4ZZxwFnoBv/Buj3T8YsiTVMjoXI1i3g3ZIBJ94TNFVK+85TidkKkbrz/unIlByCaOU+qVK27VNcf+CWo5qCA/TVl+RgfXkPCRIQRHBEU4AENK3xVqcBET18WYuISQMHGOCUqUm5GKk4IRe0v/Ab3GhCVpJOknsLFLcUnKhLB2tk08My6a/d2HUU26jhHdXu4VEqtwQ+xfeVPlf/OuiFXo49B0K2gWsWH0VPzcJTMT0JXbn7pS5BATp/E1xRPCvsmcztQ2OanpXc+RmfirUWpWv/1cm+FNV0nLrH1f3U/Qrldr+1X3tF5puPlai9jGDvZodwdo4ARNtMj7Dg94xJN1bIWWsoYfUquQ52ziy7Hu3wEUk5II</latexit>F
IGURE
1 – Processus d’insertion présenté dans ce document.
Echantillons des photo-sites
de l’image RAW
Canaux couleurs interpolés:
(d
<latexit sha1_base64="+rSynKDsi+8MKwXW0qNLMayTuKE=">AAACKXicbVDLSsNAFJ3UV62vqEs3g0VoUUrSCnZZcONKqtgHNLVMppN26GQSZiZCCfkdN/6KGwVF3fojTpouavXADIdz7uXee9yQUaks69PIrayurW/kNwtb2zu7e+b+QVsGkcCkhQMWiK6LJGGUk5aiipFuKAjyXUY67uQy9TsPREga8Ds1DUnfRyNOPYqR0tLAbJQcH6mx68XDQXybnC38ZYfyJHPd+Dq5j0sTR1GfyPpptZyxWlIYmEWrYs0A/xJ7TopgjubAfHWGAY58whVmSMqebYWqHyOhKGYkKTiRJCHCEzQiPU050nP68ezSBJ5oZQi9QOjHFZypix0x8qWc+q6uTBeXy14q/uf1IuXV+zHlYaQIx9kgL2JQBTCNDQ6pIFixqSYIC6p3hXiMBMJKh5uGYC+f/Je0qxW7VrFuzosNax5HHhyBY1ACNrgADXAFmqAFMHgEz+ANvBtPxovxYXxlpTlj3nMIfsH4/gHBSabU</latexit>R
, d
R
, d
R
)
2N
(k
⇥8+2)⇥3
(d
<latexit sha1_base64="+rSynKDsi+8MKwXW0qNLMayTuKE=">AAACKXicbVDLSsNAFJ3UV62vqEs3g0VoUUrSCnZZcONKqtgHNLVMppN26GQSZiZCCfkdN/6KGwVF3fojTpouavXADIdz7uXee9yQUaks69PIrayurW/kNwtb2zu7e+b+QVsGkcCkhQMWiK6LJGGUk5aiipFuKAjyXUY67uQy9TsPREga8Ds1DUnfRyNOPYqR0tLAbJQcH6mx68XDQXybnC38ZYfyJHPd+Dq5j0sTR1GfyPpptZyxWlIYmEWrYs0A/xJ7TopgjubAfHWGAY58whVmSMqebYWqHyOhKGYkKTiRJCHCEzQiPU050nP68ezSBJ5oZQi9QOjHFZypix0x8qWc+q6uTBeXy14q/uf1IuXV+zHlYaQIx9kgL2JQBTCNDQ6pIFixqSYIC6p3hXiMBMJKh5uGYC+f/Je0qxW7VrFuzosNax5HHhyBY1ACNrgADXAFmqAFMHgEz+ANvBtPxovxYXxlpTlj3nMIfsH4/gHBSabU</latexit>R
, d
R
, d
R
)
2N
(k
⇥8+2)⇥3
R, G, B
<latexit sha1_base64="/qclm4hnjgt5/AYfwjIo5BuH2Wc=">AAAB7nicbVA9SwNBEJ2LX0n8ilraLAbBIoQ7LbQMWmgZxXxAcoS9vb1kyd7esbsnhCONjbWNhSK2Nv4ZO3+Nbi4pNPHBwOO9GWbmeTFnStv2l5VbWl5ZXcsXiusbm1vbpZ3dpooSSWiDRDySbQ8rypmgDc00p+1YUhx6nLa84cXEb91RqVgkbvUopm6I+4IFjGBtpNZNBV1W0HmvVLardga0SJwZKdcKD/7H932l3it9dv2IJCEVmnCsVMexY+2mWGpGOB0Xu4miMSZD3KcdQwUOqXLT7NwxOjSKj4JImhIaZerviRSHSo1Cz3SGWA/UvDcR//M6iQ7O3JSJONFUkOmiIOFIR2jyO/KZpETzkSGYSGZuRWSAJSbaJFQ0ITjzLy+S5nHVOana1yYNG6bIwz4cwBE4cAo1uII6NIDAEB7hGV6s2HqyXq23aWvOms3swR9Y7z8F/pGt</latexit>R, G, B
<latexit sha1_base64="/qclm4hnjgt5/AYfwjIo5BuH2Wc=">AAAB7nicbVA9SwNBEJ2LX0n8ilraLAbBIoQ7LbQMWmgZxXxAcoS9vb1kyd7esbsnhCONjbWNhSK2Nv4ZO3+Nbi4pNPHBwOO9GWbmeTFnStv2l5VbWl5ZXcsXiusbm1vbpZ3dpooSSWiDRDySbQ8rypmgDc00p+1YUhx6nLa84cXEb91RqVgkbvUopm6I+4IFjGBtpNZNBV1W0HmvVLardga0SJwZKdcKD/7H932l3it9dv2IJCEVmnCsVMexY+2mWGpGOB0Xu4miMSZD3KcdQwUOqXLT7NwxOjSKj4JImhIaZerviRSHSo1Cz3SGWA/UvDcR//M6iQ7O3JSJONFUkOmiIOFIR2jyO/KZpETzkSGYSGZuRWSAJSbaJFQ0ITjzLy+S5nHVOana1yYNG6bIwz4cwBE4cAo1uII6NIDAEB7hGV6s2HqyXq23aWvOms3swR9Y7z8F/pGt</latexit>Calcul du signal
de luminance
D
D
<latexit sha1_base64="O0pZUMaUGwVPpKdPbKezmUZT8nA=">AAAB9XicbVDLSgMxFL3js9ZX1aWbYBFclRkVdFmwC5cV7APasWTSTBuaZIYko5Rh/sONC0Xc+i/u/Bsz7Sy09UDgcM693JMTxJxp47rfzsrq2vrGZmmrvL2zu7dfOThs6yhRhLZIxCPVDbCmnEnaMsxw2o0VxSLgtBNMbnK/80iVZpG8N9OY+gKPJAsZwcZKD32BzTgI08YgbWTZoFJ1a+4MaJl4BalCgeag8tUfRiQRVBrCsdY9z42Nn2JlGOE0K/cTTWNMJnhEe5ZKLKj201nqDJ1aZYjCSNknDZqpvzdSLLSeisBO5in1opeL/3m9xITXfspknBgqyfxQmHBkIpRXgIZMUWL41BJMFLNZERljhYmxRZVtCd7il5dJ+7zmXdTcu8tq3S3qKMExnMAZeHAFdbiFJrSAgIJneIU358l5cd6dj/noilPsHMEfOJ8/vpiSmw==</latexit>D
D
<latexit sha1_base64="O0pZUMaUGwVPpKdPbKezmUZT8nA=">AAAB9XicbVDLSgMxFL3js9ZX1aWbYBFclRkVdFmwC5cV7APasWTSTBuaZIYko5Rh/sONC0Xc+i/u/Bsz7Sy09UDgcM693JMTxJxp47rfzsrq2vrGZmmrvL2zu7dfOThs6yhRhLZIxCPVDbCmnEnaMsxw2o0VxSLgtBNMbnK/80iVZpG8N9OY+gKPJAsZwcZKD32BzTgI08YgbWTZoFJ1a+4MaJl4BalCgeag8tUfRiQRVBrCsdY9z42Nn2JlGOE0K/cTTWNMJnhEe5ZKLKj201nqDJ1aZYjCSNknDZqpvzdSLLSeisBO5in1opeL/3m9xITXfspknBgqyfxQmHBkIpRXgIZMUWL41BJMFLNZERljhYmxRZVtCd7il5dJ+7zmXdTcu8tq3S3qKMExnMAZeHAFdbiFJrSAgIJneIU358l5cd6dj/noilPsHMEfOJ8/vpiSmw==</latexit>Sélection des
pixels
Permutation pour le
scan bloc par bloc
S
<latexit sha1_base64="7rq2AfEqKy9hYn8lZB4X/b3juaU=">AAAB8XicbVC7SgNBFL3rM8ZXfHQ2g0GwCrNaaGfAQsuI5oHJEmYns8mQ2dllZlaIS/7CxkIRW8HKL7Gz9E+cTVJo4oELh3Pu5Z57/VhwbTD+cubmFxaXlnMr+dW19Y3NwtZ2TUeJoqxKIxGphk80E1yyquFGsEasGAl9wep+/zzz63dMaR7JGzOImReSruQBp8RY6bYVEtPzg/R62C4UcQmPgGaJOyHFs4/774v33bTSLny2OhFNQiYNFUTrpotj46VEGU4FG+ZbiWYxoX3SZU1LJQmZ9tJR4iE6sEoHBZGyJQ0aqb8nUhJqPQh925kl1NNeJv7nNRMTnHopl3FimKTjRUEikIlQdj7qcMWoEQNLCFXcZkW0RxShxj4pb5/gTp88S2pHJfe4hK9wsYxhjBzswT4cggsnUIZLqEAVKEh4gCd4drTz6Lw4r+PWOWcyswN/4Lz9AOQhlLU=</latexit>P
<latexit sha1_base64="pxkiGLtCEsDe9kXt4cnCYtzEvwc=">AAAB8XicbVC7SgNBFL0bXzG+4qOzGQyCVZjVQjsDFlpGMA9MljA7mU2GzM4uM7NCXPIXNhaK2ApWfomdpX/ibJJCEw9cOJxzL/fc68eCa4Pxl5NbWFxaXsmvFtbWNza3its7dR0lirIajUSkmj7RTHDJaoYbwZqxYiT0BWv4g4vMb9wxpXkkb8wwZl5IepIHnBJjpdt2SEzfD9LqqFMs4TIeA80Td0pK5x/335fve2m1U/xsdyOahEwaKojWLRfHxkuJMpwKNiq0E81iQgekx1qWShIy7aXjxCN0aJUuCiJlSxo0Vn9PpCTUehj6tjNLqGe9TPzPayUmOPNSLuPEMEkni4JEIBOh7HzU5YpRI4aWEKq4zYponyhCjX1SwT7BnT15ntSPy+5JGV/jUgXDBHnYhwM4AhdOoQJXUIUaUJDwAE/w7Gjn0XlxXietOWc6swt/4Lz9AN+SlLI=</latexit>Transformée DCT
l
P
= P
· l
S
<latexit sha1_base64="pWLFZrbEWlbBue8mUmW8Gcnd7zM=">AAACFnicbVDLSsNAFJ3UV62vqEs3g0VwY0lU0I1QcOMyon1AE8JkOmmHTjJhZiKUkK9w46+4caGIW3Hn3zhpI9TWAwNnzrmXe+8JEkalsqxvo7K0vLK6Vl2vbWxube+Yu3ttyVOBSQtzxkU3QJIwGpOWooqRbiIIigJGOsHouvA7D0RIyuN7NU6IF6FBTEOKkdKSb564EVLDIMyYnzl5fvX7dXIX97mace/yvOabdathTQAXiV2SOijh+OaX2+c4jUisMENS9mwrUV6GhKKYkbzmppIkCI/QgPQ0jVFEpJdNzsrhkVb6MORCv1jBiTrbkaFIynEU6MpiTTnvFeJ/Xi9V4aWX0ThJFYnxdFCYMqg4LDKCfSoIVmysCcKC6l0hHiKBsNJJFiHY8ycvkvZpwz5rWLfn9aZVxlEFB+AQHAMbXIAmuAEOaAEMHsEzeAVvxpPxYrwbH9PSilH27IM/MD5/AAZGoHU=</latexit>⌃ =
E[t
I
· t
t
I
]
<latexit sha1_base64="l5o60pJUNzsDSeO3RtdhJ4l4Uqw=">AAACL3icbVDLSsNAFJ34tr6iLt0Ei+CqJCroRhBE0V1FawtJLJPJpA6dZMLMjVCG/JEbf6UbEUXc+hdO2i58HRjmcM693HtPlHOmwHVfrKnpmdm5+YXF2tLyyuqavb5xq0QhCW0RwYXsRFhRzjLaAgacdnJJcRpx2o76p5XffqBSMZHdwCCnYYp7GUsYwWCkrn0eRILHapCaTwfXrJfi8jhIMdxHkT4r/TFNNHT1ZVkGJBbwQ7rTUJZhrWvX3YY7gvOXeBNSRxM0u/YwiAUpUpoB4Vgp33NzCDWWwAinZS0oFM0x6eMe9Q3NcEpVqEf3ls6OUWInEdK8DJyR+r1D41RVJ5nKalf126vE/zy/gOQo1CzLC6AZGQ9KCu6AcKrwnJhJSoAPDMFEMrOrQ+6xxARMxFUI3u+T/5LbvYa333CvDuon7iSOBbSFttEu8tAhOkEXqIlaiKBHNESv6M16sp6td+tjXDplTXo20Q9Yn1+K66u5</latexit>l
<latexit sha1_base64="+hWCyvoddyjixDhdrwMA9gMrRtU=">AAACGHicbVDLSsNAFJ34rPUVdelmsAiuaqKCboSCXbisYB/QhDCZTNqhk0mYmQgl5DPc+CtuXCjitjv/xkkbUVsPDJw5517uvcdPGJXKsj6NpeWV1bX1ykZ1c2t7Z9fc2+/IOBWYtHHMYtHzkSSMctJWVDHSSwRBkc9I1x/dFH73gQhJY36vxglxIzTgNKQYKS155qkTITX0w4x5zfz6+9P0smaeOziI1Y+fJXle9cyaVbemgIvELkkNlGh55sQJYpxGhCvMkJR920qUmyGhKGYkrzqpJAnCIzQgfU05ioh0s+lhOTzWSgDDWOjHFZyqvzsyFEk5jnxdWawp571C/M/rpyq8cjPKk1QRjmeDwpRBFcMiJRhQQbBiY00QFlTvCvEQCYSVzrIIwZ4/eZF0zur2ed26u6g1rDKOCjgER+AE2OASNMAtaIE2wOARPINX8GY8GS/Gu/ExK10yyp4D8AfG5AtrpKEx</latexit>D
= D
D
· l
p
T
<latexit sha1_base64="EwqXb61d9qJXvgceE4jHgyFQJyU=">AAAB9XicbVDLSgMxFL3js9ZX1aWbYBFclYwKuiy40V2FvqAdSybNtKGZzJBklDLMf7hxoYhb/8Wdf2OmnYW2HggczrmXe3L8WHBtMP52VlbX1jc2S1vl7Z3dvf3KwWFbR4mirEUjEamuTzQTXLKW4UawbqwYCX3BOv7kJvc7j0xpHsmmmcbMC8lI8oBTYqz00A+JGftB2hykd1k2qFRxDc+AlolbkCoUaAwqX/1hRJOQSUMF0brn4th4KVGGU8Gycj/RLCZ0QkasZ6kkIdNeOkudoVOrDFEQKfukQTP190ZKQq2noW8n85R60cvF/7xeYoJrL+UyTgyTdH4oSAQyEcorQEOuGDViagmhitusiI6JItTYosq2BHfxy8ukfV5zL2r4/rJax0UdJTiGEzgDF66gDrfQgBZQUPAMr/DmPDkvzrvzMR9dcYqdI/gD5/MH3saSsA==</latexit>I
T
<latexit sha1_base64="EwqXb61d9qJXvgceE4jHgyFQJyU=">AAAB9XicbVDLSgMxFL3js9ZX1aWbYBFclYwKuiy40V2FvqAdSybNtKGZzJBklDLMf7hxoYhb/8Wdf2OmnYW2HggczrmXe3L8WHBtMP52VlbX1jc2S1vl7Z3dvf3KwWFbR4mirEUjEamuTzQTXLKW4UawbqwYCX3BOv7kJvc7j0xpHsmmmcbMC8lI8oBTYqz00A+JGftB2hykd1k2qFRxDc+AlolbkCoUaAwqX/1hRJOQSUMF0brn4th4KVGGU8Gycj/RLCZ0QkasZ6kkIdNeOkudoVOrDFEQKfukQTP190ZKQq2noW8n85R60cvF/7xeYoJrL+UyTgyTdH4oSAQyEcorQEOuGDViagmhitusiI6JItTYosq2BHfxy8ukfV5zL2r4/rJax0UdJTiGEzgDF66gDrfQgBZQUPAMr/DmPDkvzrvzMR9dcYqdI/gD5/MH3saSsA==</latexit>I
Vecteur : y
2 N
(8k+2)
2
<latexit sha1_base64="mDAofE+sRQFzTtr07SGmfFeck0o=">AAACInicbVDLSsNAFJ3UV62vqks3wSJUhJJUwdpVwY0rqWAf0LRlMp20QyeTMDMRwpBvceOvuHGhqCvBj3HSZqGtBwbOnHMv997jhpQIaVlfRm5ldW19I79Z2Nre2d0r7h+0RRBxhFsooAHvulBgShhuSSIp7oYcQ9+luONOr1O/84C5IAG7l3GI+z4cM+IRBKWWhsUrx4dywn3VxkjiiDv1ulNPZqLrqThxCJt/XHWbDFS5Nj2rng5UNUmGxZJVsWYwl4mdkRLI0BwWP5xRgCIfM4koFKJnW6HsK8glQRQnBScSOIRoCse4pymDPhZ9NTsxMU+0MjK9gOvHpDlTf3co6AsR+66uTNcVi14q/uf1IunV+oqwMJKYofkgL6KmDMw0L3NEuE6GxppAxIne1UQTyKFOi4uCDsFePHmZtKsV+7xi3V2UGlYWRx4cgWNQBja4BA1wA5qgBRB4BM/gFbwZT8aL8W58zktzRtZzCP7A+P4BUEakpw==</latexit>d
R
= M
R
·y
d
G
= M
G
·y
d
B
= M
B
·y
<latexit sha1_base64="cCjIntSEL9DH+slwG3occc0Q9Ms=">AAACWXichVFdS8MwFE2r01m/qnv0pTgEn0Y7BX0RxnyYL8IU9wFrGWmabmHpB0kqlNI/6YMg/hUfTLsKcxO8kHA451zuzYkbU8KFaX4o6tZ2bWe3vqftHxweHesnp0MeJQzhAYpoxMYu5JiSEA8EERSPY4Zh4FI8chf3hT56xYyTKHwRaYydAM5C4hMEhaSmemwHUMxdP/Om2XN+91jcNvIikf8IaW7b2oqrV7p6/7i6pau74dKmetNsmWUZm8CqQBNU1Z/qb7YXoSTAoUAUcj6xzFg4GWSCIIpzzU44jiFawBmeSBjCAHMnK5PJjQvJeIYfMXlCYZTsakcGA87TwJXOYkW+rhXkX9okEf6tk5EwTgQO0XKQn1BDREYRs+ERhpGgqQQQMSJ3NdAcMoiE/IwiBGv9yZtg2G5ZV63203WzY1Zx1MEZOAeXwAI3oAMeQB8MAALv4EupKTvKp6qodVVbWlWl6mmAX6U2vgHNF7c8</latexit>l = D
<latexit sha1_base64="jTLFAzo77A3t8ozHoSNIRXxquns=">AAACEnicbZDLSsNAFIYn9VbrLerSzWARdFOSKuhGKNiFywr2Ak0Ik8mkHTrJhJmJEEKewY2v4saFIm5dufNtTNoUtPWHgY//nMOc87sRo1IZxrdWWVldW9+obta2tnd29/T9g57kscCkiznjYuAiSRgNSVdRxcggEgQFLiN9d3JT1PsPREjKw3uVRMQO0CikPsVI5Zajn1kBUmPXT1l2Pce2k7YzC3tcZXMryWqOXjcaxlRwGcwS6qBUx9G/LI/jOCChwgxJOTSNSNkpEopiRrKaFUsSITxBIzLMMUQBkXY6PSmDJ7njQZ+L/IUKTt3fEykKpEwCN+8sVpSLtcL8rzaMlX9lpzSMYkVCPPvIjxlUHBb5QI8KghVLckBY0HxXiMdIIKzyFIsQzMWTl6HXbJjnjebdRb1llHFUwRE4BqfABJegBW5BB3QBBo/gGbyCN+1Je9HetY9Za0UrZw7BH2mfP5Kmnpo=</latexit>D
·y
l
S
= S
· l, l
S
2 R
(k⇥8)
2
<latexit sha1_base64="miGsdwbtdPKB846xkk0p2Nu+j5I=">AAACQXicbVBNSwMxEM36bf2qevSyWAQFKbtVsAiC4MVjtVYL3VqyaVZDs9klmRVKyF/z4j/w5t2LB0W8ejHbVvHrQeDNezPM5IUpZwo878EZG5+YnJqemS3MzS8sLhWXV85VkklCGyThiWyGWFHOBG0AA06bqaQ4Djm9CHtHuX9xQ6ViiTiDfkrbMb4SLGIEg5U6xWYQY7gOI807um7MwWdZNwHpJvDlmu1g/2drwMRQCPWpudSbvQBYTFV161JXjCl0iiWv7A3g/iX+iJTQCLVO8T7oJiSLqQDCsVIt30uhrbEERjg1hSBTNMWkh69oy1KB7bK2HiRg3A2rdN0okfYJcAfq9wmNY6X6cWg785vVby8X//NaGUTVtmYizYAKMlwUZdyFxM3jdLtMUgK8bwkmktlbXXKNJSZgQ89D8H9/+S85r5T9nXLlZLd06I3imEFraB1tIh/toUN0jGqogQi6RY/oGb04d86T8+q8DVvHnNHMKvoB5/0D5Mqytg==</latexit>t
I
= (D
T
· P · S · D
D
)
|
{z
}
M
·(y
˜
y)
<latexit sha1_base64="nM5y5d6AICWyf0QT4uXne8HYE4s=">AAACd3icbVHBThsxEPUupQ2Btml7g0NXBFA4EO1SpHJBilQO5VApFQSQstHK650FC693Zc8iRZZ/gY/rrf/RS291wqZqoCNZevNmnj1+k1aCawzDn56/8mL15avWWnt94/Wbt5137y91WSsGI1aKUl2nVIPgEkbIUcB1pYAWqYCr9O7LrH51D0rzUl7gtIJJQW8kzzmj6Kik8xAXFG/T3GBizqw9iWuZgUoVZWB6i9ppYi6sjVlW4oIaLqfny6kTnFq7bxOzYL41+r93Tu3BAsbIRQaOsftJpxv2w3kEz0HUgC5pYph0fsRZyeoCJDJBtR5HYYUTQxVyJsC241pDRdkdvYGxg5IWoCdm7psNdh2TBXmp3JEYzNl/FYYWWk+L1HXORtVPazPyf7VxjfnxxHBZ1QiSPT6U1yLAMpgtIci4AoZi6gBlirtZA3ZLnenoVtV2JkRPv/wcXB72o0/9w+9H3UHY2NEiW2Sb9EhEPpMB+UqGZEQY+eVtel1vx/vtf/T3/N5jq+81mg9kKfzoD/0DxHQ=</latexit>F
IGURE
2 – Les différentes étapes permettant le calcul de la
matrice de covariance
Σ.
Dans cet article, nous étudions la NS lorsque la pré-cover
est acquise à l’aide d’un capteur de couleur, développée par
dématriçage linéaire, convertie en niveaux de gris, et
com-pressée en JPEG. L’insertion est réalisée directement dans le
domaine JPEG sur les coefficients DCT. La différence entre
les capteurs monochrome et couleur a été étudiée avec la
conclusion qu’une insertion sur les coefficients DCT offre
une sécurité empirique élevée pour les capteurs monochromes,
mais pas pour les capteurs couleurs [
2
]. Ceci est dû au fait que
le dématriçage introduit des dépendances entre les coefficients
DCT voisins. Lorsque ces dépendances ne sont pas prises en
compte, l’insertion devient hautement détectable. Pour
préser-ver les dépendances, le schéma d’insertion présenté dans cette
étude utilise les matrices de covariance calculées à partir des
observations de la pré-cover et de son développement, afin de
générer les modifications sur l’image stégo.
Le schéma d’insertion est résumé dans la Figure 1 et peut
être décomposé en différentes étapes décrites ci-contre :
1. Calcul de la matrice de covariance entre les coefficients
DCT de
k
× k blocs voisins de 8 × 8 coefficients chacun.
Cette partie est détaillée dans la section suivante.
2. Développement (dématriçage, luminance, et DCT).
L’image pré-cover RAW est développée pour générer
une image JPEG en niveaux de gris.
3. Échantillonnage suivant quatre treillis. Les auteurs ont
montrés dans [
8
] que les dépendances intra et inter blocs
sont dues au dématriçage et que les blocs DCT ne se
tou-chant pas sont indépendants. Par conséquent les auteurs
ont développé un schéma d’insertion permettant
d’uti-liser quatre treillis
{Λ
1
, Λ
2
, Λ
3
, Λ
4
}. Les coefficients
appartenant à
Λ
1
sont échantillonnés indépendamment,
les autres sont échantillonnés conditionnellement à leur
voisinage (voir Figure
3a
). Il est possible de montrer que
pour un développement linéaire, la distribution du signal
stégo pour chaque treillis
Λ
j
(j
∈ {1, .., 4}) suit une
distribution gaussienne multivariée (DGM) :
N (m
i,j
, Σ
i,j
),
où pour
j
∈ {2, 3, 4} le vecteur d’espérance m
i,j
et la
matrice de covariance
Σ de la distribution conditionnelle
sont calculés en utilisant le complément de Schur de la
matrice de covariance calculée.
4. Quantification JPEG. Le signal stégo simulé est quantifié
à l’aide de la matrice de quantification JPEG pour un
facteur de qualité (QF) donné.
1
3
1
3
1
4
1
2
1
2
1
3
3
4
4
4
1
2
3
: ⇤
1
: ⇤
2
: ⇤
3
4
: ⇤
4
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
1
2
1
2
1
3
3
4
4
8
8
(a)
(b)
F
IGURE
3 – (a) Les quatre treillis utilisés pour l’insertion.
(b) Emplacements des photosites (couleurs foncées) utilisés
pour prédire les valeurs des pixels dans un bloc (dématriçage
bi-linéaire). Les blocs diagonaux sont impliqués dans le calcul
sur deux pixels pour le canal bleu (en haut à droite) et le canal
rouge (en bas à gauche).
2
Calcul de la matrice de covariance
Nous considérons ici le dématriçage le plus simple (par
soucis calculatoire) : l’interpolation bi-linéaire. Pour calculer
la matrice de covariance
Σ du signal stégo dans le domaine
DCT, nous devons décomposer le processus de développement
en une séquence d’étapes linéaires résumées ci-dessous :
1. Sélection de
k
× k blocs de photosites, en incluant la
bordure externe permettant d’avoir les photosites
néces-saires à l’interpolation de ceux de la bordure interne
(Figure
3b
).
2. Dématriçage.
3. Calcul du signal de luminance.
4. Recadrage sur
k
× k blocs, avec k ∈ {1, 3}.
5. Permutation pour passer d’un balayage ligne par ligne à
bloc par bloc.
6. Transformation DCT-2D.
7. Calcul de
Σ.
Ces opérations (Figure
2
) peuvent ainsi s’écrire (voir [
3
])
comme une multiplication matricielle
t
I
= M
· (y − ˜
y) où
y
∈N
(8k+2)
2
est un vecteur d’observations obtenu à partir de
k
×k blocs de photosites et t
I
∈N
(8k)
2
le vecteur correspondant
aux blocs DCT avant quantification JPEG.
Enfin
Σ =
E[t
I
· t
t
I
].
3
Analyse de la matrice de covariance
La matrice de covariance, calculée sur
2
× 2 blocs adjacents,
est illustrée pour le cas d’un capteur couleur (Figure
4
). On
peut noter que pour un capteur monochrome
Σ
mono
aurait
été diagonale contrairement à
Σ qui affiche de nombreuses
corrélations (intra et inter-blocs). On peut subdiviser cette
matrice en quatre types de matrices
∈ R
64
×64
(voir Figures
4
et
5
).
Situées sur la diagonale, les
Σ
I
capturent les corrélations
entre les coefficients DCT du même bloc (intra-correlations).
Les corrélations inter-blocs sont capturées par (Σ
→
, Σ
←
)
pour les blocs horizontaux, (Σ
↑
, Σ
↓
) pour les blocs verticaux,
et (Σ
%
, Σ
.
, Σ
&
, Σ
-
) pour les blocs diagonaux.
0
50
100
150
200
250
0
50
100
150
200
250
6000
4000
2000
0
2000
4000
6000
F
IGURE
4 – Matrice de covariance
2
× 2 × 8 × 8 des
coefficients DCT pour un capteur couleur. Ici, la dynamique
des corrélations a été seuillée à
[
−6000, 6000] pour des raisons
d’affichage.
Les origines de ces corrélations résident dans l’opération de
dématriçage qui induit inévitablement des corrélations avec les
coefficients voisins. A partir de l’analyse de cette matrice de
covariance et de son calcul analytique, nous pouvons tirer les
conclusions suivantes :
∗ Les corrélations les plus importantes correspondent aux
blocs connectés horizontalement et verticalement car
pour prédire les pixels de la bordure interne d’un bloc
de nombreux photosites des blocs voisins horizontaux et
verticaux sont nécessaires.
∗ Les corrélations avec les blocs voisins diagonaux sont
plus faibles car la prédiction des pixels situés aux coins
ne fait ainsi intervenir qu’un unique photosite (voir
Figure
3b
).
⌃
I
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>!
⌃
#
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
&
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
I
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>I
⌃
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>!
⌃
.
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
#
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>I
⌃
t
!
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
t
!
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
t
.
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
t
#
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
t
#
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>
⌃
t
&
<latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit><latexit sha1_base64="(null)">(null)</latexit>