From: couchot Date: Fri, 8 Jun 2012 09:29:54 +0000 (+0200) Subject: ajout de fichiers X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/canny.git/commitdiff_plain/8290657e61738a93b7b6eb60966c49efbc4f0af8?ds=inline ajout de fichiers --- diff --git a/emb.pdf b/emb.pdf new file mode 100644 index 0000000..749bd81 Binary files /dev/null and b/emb.pdf differ diff --git a/emb.ps b/emb.ps new file mode 100644 index 0000000..bc1e4ce --- /dev/null +++ b/emb.ps @@ -0,0 +1,993 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: start_up +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 429 616 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 393 580 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% IC +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 131 498 moveto +79 498 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 79 498 moveto +73 498 67 492 67 486 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 67 486 moveto +67 466 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 67 466 moveto +67 460 73 454 79 454 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 79 454 moveto +131 454 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 131 454 moveto +137 454 143 460 143 466 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 143 466 moveto +143 486 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 143 486 moveto +143 492 137 498 131 498 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +83.5 481.4 moveto 43 (Image) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +74.5 463.4 moveto 61 (Cover X ) alignedtext +grestore +% ED +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 158 416 moveto +54 416 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 54 416 moveto +48 416 42 410 42 404 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 42 404 moveto +42 384 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 42 384 moveto +42 378 48 372 54 372 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 54 372 moveto +158 372 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 158 372 moveto +164 372 170 378 170 384 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 170 384 moveto +170 404 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 170 404 moveto +170 410 164 416 158 416 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +50 381.4 moveto 112 (Edge Detection\)) alignedtext +grestore +% IC->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 105.27 453.59 moveto +105.38 445.12 105.5 435.3 105.61 426.1 curveto +stroke +0 0 0 edgecolor +newpath 109.11 426.14 moveto +105.73 416.1 lineto +102.11 426.05 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 109.11 426.14 moveto +105.73 416.1 lineto +102.11 426.05 lineto +closepath stroke +grestore +% message +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 225 494 moveto +173 494 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 173 494 moveto +167 494 161 488 161 482 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 161 482 moveto +161 470 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 161 470 moveto +161 464 167 458 173 458 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 173 458 moveto +225 458 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 225 458 moveto +231 458 237 464 237 470 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 237 470 moveto +237 482 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 237 482 moveto +237 488 231 494 225 494 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +169 472.4 moveto 60 (message) alignedtext +grestore +% encrypt +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 360 412 moveto +200 412 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 200 412 moveto +194 412 188 406 188 400 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 188 400 moveto +188 388 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 188 388 moveto +188 382 194 376 200 376 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 200 376 moveto +360 376 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 360 376 moveto +366 376 372 382 372 388 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 372 388 moveto +372 400 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 372 400 moveto +372 406 366 412 360 412 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext +grestore +% message->encrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 216.98 457.8 moveto +228.09 446.55 242.53 431.93 254.78 419.53 curveto +stroke +0 0 0 edgecolor +newpath 257.54 421.72 moveto +262.07 412.15 lineto +252.56 416.8 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 257.54 421.72 moveto +262.07 412.15 lineto +252.56 416.8 lineto +closepath stroke +grestore +% key +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 297 494 moveto +267 494 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 267 494 moveto +261 494 255 488 255 482 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 255 482 moveto +255 470 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 255 470 moveto +255 464 261 458 267 458 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 267 458 moveto +297 458 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 297 458 moveto +303 458 309 464 309 470 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 309 470 moveto +309 482 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 309 482 moveto +309 488 303 494 297 494 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +269.5 472.4 moveto 25 (key) alignedtext +grestore +% key->encrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 281.56 457.8 moveto +281.3 447.4 280.98 434.12 280.69 422.38 curveto +stroke +0 0 0 edgecolor +newpath 284.19 422.06 moveto +280.44 412.15 lineto +277.19 422.23 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 284.19 422.06 moveto +280.44 412.15 lineto +277.19 422.23 lineto +closepath stroke +grestore +% PI +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 92 192 moveto +12 192 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 192 moveto +6 192 0 186 0 180 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 180 moveto +0 160 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 160 moveto +0 154 6 148 12 148 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 148 moveto +92 148 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 92 148 moveto +98 148 104 154 104 160 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 160 moveto +104 180 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 180 moveto +104 186 98 192 92 192 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +15.5 175.4 moveto 73 (Parameter) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +7.5 157.4 moveto 89 (Instantiation) alignedtext +grestore +% PI->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 51.72 192.11 moveto +51.94 224.2 54.73 285.19 71 334 curveto +74.35 344.04 79.51 354.25 84.85 363.33 curveto +stroke +0 0 0 edgecolor +newpath 81.97 365.31 moveto +90.2 371.98 lineto +87.92 361.63 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 81.97 365.31 moveto +90.2 371.98 lineto +87.92 361.63 lineto +closepath stroke +grestore +% STC +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 338 188 moveto +258 188 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 258 188 moveto +252 188 246 182 246 176 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 246 176 moveto +246 164 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 246 164 moveto +246 158 252 152 258 152 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 258 152 moveto +338 152 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 338 152 moveto +344 152 350 158 350 164 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 350 164 moveto +350 176 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 350 176 moveto +350 182 344 188 338 188 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext +grestore +% encrypt->STC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 293.94 375.96 moveto +301.81 364.6 310.88 349.25 315 334 curveto +327.61 287.37 316.21 230.96 306.97 197.92 curveto +stroke +0 0 0 edgecolor +newpath 310.25 196.67 moveto +304.08 188.06 lineto +303.54 198.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 310.25 196.67 moveto +304.08 188.06 lineto +303.54 198.64 lineto +closepath stroke +grestore +% cond +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 193 334 moveto +80 290 lineto +193 246 lineto +306 290 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +163 295.4 moveto 60 (Size of x) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +144.5 277.4 moveto 97 ( enough for m) alignedtext +grestore +% encrypt->cond +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 264.85 375.88 moveto +254.56 363.59 240.54 346.83 227.61 331.38 curveto +stroke +0 0 0 edgecolor +newpath 230.08 328.87 moveto +220.98 323.44 lineto +224.71 333.36 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 230.08 328.87 moveto +220.98 323.44 lineto +224.71 333.36 lineto +closepath stroke +grestore +% emb +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 373 110 moveto +223 110 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 110 moveto +217 110 211 104 211 98 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 98 moveto +211 86 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 86 moveto +211 80 217 74 223 74 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 74 moveto +373 74 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 373 74 moveto +379 74 385 80 385 86 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 385 86 moveto +385 98 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 385 98 moveto +385 104 379 110 373 110 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext +grestore +% STC->emb +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 298 151.91 moveto +298 142.53 298 130.85 298 120.3 curveto +stroke +0 0 0 edgecolor +newpath 301.5 120.26 moveto +298 110.26 lineto +294.5 120.26 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 301.5 120.26 moveto +298 110.26 lineto +294.5 120.26 lineto +closepath stroke +grestore +% end +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 313 36 moveto +283 36 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 283 36 moveto +277 36 271 30 271 24 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 271 24 moveto +271 12 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 271 12 moveto +271 6 277 0 283 0 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 283 0 moveto +313 0 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 313 0 moveto +319 0 325 6 325 12 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 325 12 moveto +325 24 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 325 24 moveto +325 30 319 36 313 36 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +285 14.4 moveto 26 (end) alignedtext +grestore +% emb->end +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 298 73.71 moveto +298 65.46 298 55.54 298 46.36 curveto +stroke +0 0 0 edgecolor +newpath 301.5 46.08 moveto +298 36.08 lineto +294.5 46.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 301.5 46.08 moveto +298 36.08 lineto +294.5 46.08 lineto +closepath stroke +grestore +% start +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 164 572 moveto +134 572 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 572 moveto +128 572 122 566 122 560 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 560 moveto +122 548 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 548 moveto +122 542 128 536 134 536 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 536 moveto +164 536 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 164 536 moveto +170 536 176 542 176 548 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 176 548 moveto +176 560 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 176 560 moveto +176 566 170 572 164 572 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +132 550.4 moveto 34 (start) alignedtext +grestore +% start->IC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 138.79 535.91 moveto +133.94 527.3 127.99 516.75 122.44 506.92 curveto +stroke +0 0 0 edgecolor +newpath 125.47 505.16 moveto +117.51 498.17 lineto +119.37 508.6 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 125.47 505.16 moveto +117.51 498.17 lineto +119.37 508.6 lineto +closepath stroke +grestore +% start->message +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 160.6 535.91 moveto +166.86 526.13 174.72 513.87 181.7 502.99 curveto +stroke +0 0 0 edgecolor +newpath 184.84 504.57 moveto +187.29 494.26 lineto +178.95 500.79 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 184.84 504.57 moveto +187.29 494.26 lineto +178.95 500.79 lineto +closepath stroke +grestore +% start->key +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 176.28 538.49 moveto +195.78 527.35 222.6 511.9 246 498 curveto +246.09 497.95 246.18 497.89 246.27 497.84 curveto +stroke +0 0 0 edgecolor +newpath 248.14 500.8 moveto +254.92 492.65 lineto +244.54 494.79 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 248.14 500.8 moveto +254.92 492.65 lineto +244.54 494.79 lineto +closepath stroke +grestore +% start->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 121.68 550.56 moveto +82.23 543.9 14 525.26 14 476 curveto +14 476 14 476 14 290 curveto +14 258.89 25.75 225.26 36.19 201.54 curveto +stroke +0 0 0 edgecolor +newpath 39.42 202.89 moveto +40.39 192.34 lineto +33.06 199.98 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 39.42 202.89 moveto +40.39 192.34 lineto +33.06 199.98 lineto +closepath stroke +grestore +% ED->cond +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 124.45 371.94 moveto +134.29 360.18 146.73 345.32 158.29 331.49 curveto +stroke +0 0 0 edgecolor +newpath 161.25 333.41 moveto +164.98 323.5 lineto +155.88 328.92 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 161.25 333.41 moveto +164.98 323.5 lineto +155.88 328.92 lineto +closepath stroke +grestore +% cond->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 157.42 259.72 moveto +135.48 241.04 107.5 217.23 85.88 198.83 curveto +stroke +0 0 0 edgecolor +newpath 88.11 196.13 moveto +78.22 192.32 lineto +83.57 201.46 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 88.11 196.13 moveto +78.22 192.32 lineto +83.57 201.46 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +119 215.4 moveto 19 (No) alignedtext +grestore +% cond->STC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 221.97 256.89 moveto +238.81 237.64 259.73 213.73 275.36 195.87 curveto +stroke +0 0 0 edgecolor +newpath 278.19 197.96 moveto +282.14 188.13 lineto +272.92 193.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 278.19 197.96 moveto +282.14 188.13 lineto +272.92 193.35 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +262 215.4 moveto 23 (Yes) alignedtext +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 429 616 +end +restore +%%EOF diff --git a/ourapproach.tex b/ourapproach.tex new file mode 100644 index 0000000..5fc4f7e --- /dev/null +++ b/ourapproach.tex @@ -0,0 +1,87 @@ +The flowcharts given in Fig.~\ref{fig:sch} summarize our steganography scheme denoted as +STABYLO for STeganography with cAnny, Bbs, binarY embedding at LOw cost. +What follows successively details all the inner steps and flow inside +the embedding stage (Fig.\ref{fig:sch:emb}) +and inside the extraction one(Fig.~\ref{fig:sch:ext}). + + +\begin{figure*}[t] + \begin{center} + \subfloat[Data Embedding.]{ + \begin{minipage}{0.49\textwidth} + \begin{center} + \includegraphics[width=5cm]{emb.pdf} + \end{center} + \end{minipage} + \label{fig:sch:emb} + }%\hfill + \subfloat[Data Extraction.]{ + \begin{minipage}{0.49\textwidth} + \begin{center} + \includegraphics[width=5cm]{rec.pdf} + \end{center} + \end{minipage} + \label{fig:sch:ext} + }%\hfill + \end{center} + \caption{The STABYLO Scheme.} + \label{fig:sch} +\end{figure*} + + +\subsection{Steganalysis} + +LSB : +"Adaptive steganalysis of Least Significant Bit replacement in grayscale natural images" + +Structural LSB Detectors: +\verb+http://dde.binghamton.edu/download/structural_lsb_detectors/+ + +Vainqueur du BOSS challenge + + +ensemble: + + +G. Gül and F. Kurugollu. A new methodology in steganalysis : Breaking highly +undetactable steganograpy (HUGO). In Information Hiding, 13th International +Workshop, volume 6958 of LNCS, pages 71–84, Prague, Czech Republic, May 18– +20, 2011. + + +\subsection{Data Embedding} + + + + +\subsubsection{Edge Based Image Steganography} +Image Quality: Edge Image Steganography +\JFC{Raphael, les fuzzy edge detection sont souvent utilisés. + il faudrait comparer les approches en terme de nombre de bits retournés, + en terme de complexité. } + + +Presentation des algos de detection de contour +Caractéristiques + +Comparaison théoriques, références + +Algo de stegano basé juste sur cela : (pas de bbs, pas de stc, même message). + +Quels paramètres sont optimaux ? Combinaison ? + + + + + +\subsubsection{Security Considerations} + +Security aspect: +BBS-based cryptographic version of the message + +\subsubsection{Minimizing Distortion with Syndrome-Treillis Codes} + +\input{stc} + + +\subsection{Data Extraction} \ No newline at end of file diff --git a/rec.pdf b/rec.pdf new file mode 100644 index 0000000..aa13df9 Binary files /dev/null and b/rec.pdf differ diff --git a/rec.ps b/rec.ps new file mode 100644 index 0000000..4906435 --- /dev/null +++ b/rec.ps @@ -0,0 +1,819 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: start_up +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 374 642 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 338 606 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% SI +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 178 524 moveto +100 524 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 100 524 moveto +94 524 88 518 88 512 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 88 512 moveto +88 500 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 88 500 moveto +88 494 94 488 100 488 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 100 488 moveto +178 488 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 178 488 moveto +184 488 190 494 190 500 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 190 500 moveto +190 512 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 190 512 moveto +190 518 184 524 178 524 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +95.5 502.4 moveto 87 (Stego Image) alignedtext +grestore +% ED +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 195 416 moveto +83 416 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 83 416 moveto +77 416 71 410 71 404 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 71 404 moveto +71 384 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 71 384 moveto +71 378 77 372 83 372 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 83 372 moveto +195 372 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 195 372 moveto +201 372 207 378 207 384 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 207 384 moveto +207 404 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 207 404 moveto +207 410 201 416 195 416 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +78.5 399.4 moveto 121 (\(y,H\)= LSB\(7 bits) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +83 381.4 moveto 112 (Edge Detection\)) alignedtext +grestore +% SI->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 139 487.51 moveto +139 470.97 139 446.36 139 426.53 curveto +stroke +0 0 0 edgecolor +newpath 142.5 426.38 moveto +139 416.38 lineto +135.5 426.38 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 142.5 426.38 moveto +139 416.38 lineto +135.5 426.38 lineto +closepath stroke +grestore +% cond +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 162 334 moveto +86 290 lineto +162 246 lineto +238 290 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +132 295.4 moveto 60 (Size of y) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +133.5 277.4 moveto 57 ( enough) alignedtext +grestore +% PI +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 92 192 moveto +12 192 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 192 moveto +6 192 0 186 0 180 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 180 moveto +0 160 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 160 moveto +0 154 6 148 12 148 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 148 moveto +92 148 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 92 148 moveto +98 148 104 154 104 160 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 160 moveto +104 180 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 180 moveto +104 186 98 192 92 192 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +15.5 175.4 moveto 73 (Parameter) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +7.5 157.4 moveto 89 (Instantiation) alignedtext +grestore +% cond->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 135.37 260.95 moveto +118.35 242.38 96.33 218.36 79.19 199.67 curveto +stroke +0 0 0 edgecolor +newpath 81.52 197.02 moveto +72.18 192.01 lineto +76.36 201.75 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 81.52 197.02 moveto +72.18 192.01 lineto +76.36 201.75 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +104 215.4 moveto 19 (No) alignedtext +grestore +% STC +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 226 188 moveto +134 188 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 188 moveto +128 188 122 182 122 176 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 176 moveto +122 164 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 164 moveto +122 158 128 152 134 152 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 152 moveto +226 152 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 226 152 moveto +232 152 238 158 238 164 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 238 164 moveto +238 176 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 238 176 moveto +238 182 232 188 226 188 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +129.5 166.4 moveto 101 (m = STCr\(y,H\)) alignedtext +grestore +% cond->STC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 168.09 249.37 moveto +170.61 232.63 173.45 213.63 175.74 198.42 curveto +stroke +0 0 0 edgecolor +newpath 179.26 198.51 moveto +177.28 188.1 lineto +172.34 197.47 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 179.26 198.51 moveto +177.28 188.1 lineto +172.34 197.47 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +174 215.4 moveto 23 (Yes) alignedtext +grestore +% key +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 269 470 moveto +239 470 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 239 470 moveto +233 470 227 464 227 458 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 227 458 moveto +227 446 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 227 446 moveto +227 440 233 434 239 434 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 239 434 moveto +269 434 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 269 434 moveto +275 434 281 440 281 446 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 281 446 moveto +281 458 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 281 458 moveto +281 464 275 470 269 470 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +241.5 448.4 moveto 25 (key) alignedtext +grestore +% decrypt +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 318 110 moveto +158 110 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 158 110 moveto +152 110 146 104 146 98 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 146 98 moveto +146 86 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 146 86 moveto +146 80 152 74 158 74 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 158 74 moveto +318 74 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 318 74 moveto +324 74 330 80 330 86 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 330 86 moveto +330 98 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 330 98 moveto +330 104 324 110 318 110 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +154 88.4 moveto 168 (message=decryption\(m\)) alignedtext +grestore +% key->decrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 257.54 433.83 moveto +261.08 414.04 266 381.39 266 353 curveto +266 353 266 353 266 170 curveto +266 152.58 259.74 134.19 253.14 119.65 curveto +stroke +0 0 0 edgecolor +newpath 256.09 117.73 moveto +248.59 110.25 lineto +249.8 120.78 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 256.09 117.73 moveto +248.59 110.25 lineto +249.8 120.78 lineto +closepath stroke +grestore +% start +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 154 598 moveto +124 598 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 124 598 moveto +118 598 112 592 112 586 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 112 586 moveto +112 574 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 112 574 moveto +112 568 118 562 124 562 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 124 562 moveto +154 562 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 154 562 moveto +160 562 166 568 166 574 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 166 574 moveto +166 586 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 166 586 moveto +166 592 160 598 154 598 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +122 576.4 moveto 34 (start) alignedtext +grestore +% start->SI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 139 561.71 moveto +139 553.46 139 543.54 139 534.36 curveto +stroke +0 0 0 edgecolor +newpath 142.5 534.08 moveto +139 524.08 lineto +135.5 534.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 142.5 534.08 moveto +139 524.08 lineto +135.5 534.08 lineto +closepath stroke +grestore +% start->key +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 160.1 561.89 moveto +171.99 551.3 186.85 537.41 199 524 curveto +212.03 509.62 225.28 492.37 235.51 478.36 curveto +stroke +0 0 0 edgecolor +newpath 238.44 480.27 moveto +241.45 470.12 lineto +232.77 476.18 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 238.44 480.27 moveto +241.45 470.12 lineto +232.77 476.18 lineto +closepath stroke +grestore +% start->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 112 575.51 moveto +76.89 567.95 20 549.06 20 506 curveto +20 506 20 506 20 290 curveto +20 259.25 29.93 225.51 38.73 201.67 curveto +stroke +0 0 0 edgecolor +newpath 42.09 202.68 moveto +42.4 192.09 lineto +35.55 200.18 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 42.09 202.68 moveto +42.4 192.09 lineto +35.55 200.18 lineto +closepath stroke +grestore +% end +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 253 36 moveto +223 36 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 36 moveto +217 36 211 30 211 24 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 24 moveto +211 12 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 12 moveto +211 6 217 0 223 0 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 0 moveto +253 0 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 253 0 moveto +259 0 265 6 265 12 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 265 12 moveto +265 24 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 265 24 moveto +265 30 259 36 253 36 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +225 14.4 moveto 26 (end) alignedtext +grestore +% PI->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 51.02 192.05 moveto +50.49 224.88 53.09 287.68 77 334 curveto +82.96 345.55 92.01 356.17 101.36 365.16 curveto +stroke +0 0 0 edgecolor +newpath 99.13 367.85 moveto +108.88 372 lineto +103.84 362.68 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 99.13 367.85 moveto +108.88 372 lineto +103.84 362.68 lineto +closepath stroke +grestore +% STC->decrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 193.45 151.91 moveto +200.87 141.94 210.2 129.38 218.41 118.34 curveto +stroke +0 0 0 edgecolor +newpath 221.26 120.38 moveto +224.42 110.26 lineto +215.64 116.2 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 221.26 120.38 moveto +224.42 110.26 lineto +215.64 116.2 lineto +closepath stroke +grestore +% ED->cond +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 143.88 371.94 moveto +146 362.35 148.58 350.7 151.11 339.22 curveto +stroke +0 0 0 edgecolor +newpath 154.58 339.76 moveto +153.32 329.24 lineto +147.74 338.25 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 154.58 339.76 moveto +153.32 329.24 lineto +147.74 338.25 lineto +closepath stroke +grestore +% decrypt->end +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 238 73.71 moveto +238 65.46 238 55.54 238 46.36 curveto +stroke +0 0 0 edgecolor +newpath 241.5 46.08 moveto +238 36.08 lineto +234.5 46.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 241.5 46.08 moveto +238 36.08 lineto +234.5 46.08 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 374 642 +end +restore +%%EOF diff --git a/schema.dot b/schema.dot new file mode 100644 index 0000000..165432b --- /dev/null +++ b/schema.dot @@ -0,0 +1,36 @@ +digraph start_up { + node [style = rounded, shape = rect] IC [label="Image\nCover X "] + node [style = rounded, shape = rect] message [label="message"] + node [style = rounded, shape = rect] key + + node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"] + node [style = rounded, shape = rect] encrypt [label="m=encryption(message)"] + node [style = rounded, shape = rect] STC [label="y= STC(x,m)"] + node [style = rounded, shape = rect] emb [label="stego=embedding(y,X)"] + + node [style = rounded, shape = rect] start end; + node [style = rounded, shape = rect] ED [label="x= LSB(7 bits\nEdge Detection)"] + + node [style = "", shape = diamond] cond [label="Size of x\n enough for m"]; + + start -> PI + start -> IC + start -> message + start -> key + + key -> encrypt + + + message -> encrypt + IC -> ED + ED -> cond + encrypt -> cond + encrypt -> STC + cond -> STC [label="Yes"] + cond -> PI [label="No"] + + PI -> ED + STC -> emb + emb -> end + + } \ No newline at end of file diff --git a/schema2.dot b/schema2.dot new file mode 100644 index 0000000..4f47d83 --- /dev/null +++ b/schema2.dot @@ -0,0 +1,29 @@ +digraph start_up { + node [style = rounded, shape = rect] SI [label="Stego Image"] + node [style = "", shape = diamond] cond [label="Size of y\n enough"]; + node [style = rounded, shape = rect] key + node [style = rounded, shape = rect] start end; + node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"] + node [style = rounded, shape = rect] STC [label="m = STCr(y,H)"] + node [style = rounded, shape = rect] ED [label="(y,H)= LSB(7 bits\nEdge Detection)"] + node [style = rounded, shape = rect] decrypt [label="message=decryption(m)"] + + + + start -> SI + start -> PI + PI -> ED + start -> key + + SI -> ED + ED -> cond + cond -> STC [label="Yes"] + cond -> PI [label="No"] + + STC -> decrypt + key -> decrypt + decrypt -> end + + + + } \ No newline at end of file diff --git a/stc.tex b/stc.tex new file mode 100644 index 0000000..6570c73 --- /dev/null +++ b/stc.tex @@ -0,0 +1,85 @@ +Let +$x=(x_1,\ldots,x_n)$ be the $n$-bits cover vector of the image $X$, +$m$ be the message to embed and +$y=(y_1,\ldots,y_n)$ be the $n$-bits stego vector. +The usual additive embbeding impact of replacing $x$ by $y$ in $X$ +is given by a distortion function +$D_X(x,y)= \Sigma_{i=1}^n \rho_X(i,x,y)$ where the function $\rho_X$ +expressed the cost of replacing $x_i$ by $y_i$ in $X$. +Let us consider that $x$ is fixed: +this is for instance the LSBs of the image edge bits. +The objective is thus to find $y$ that minimizes $D_X(x,y)$. + +Hamming embedding proposes a solution to this problem. +Some steganographic +schemes~\cite{DBLP:conf/ih/Westfeld01,DBLP:conf/ih/KimDR06,DBLP:conf/mmsec/FridrichPK07} are based on this binary embedding. +Furthermore this code provides a vector $y$ s.t. $Hy$ is equal to +$m$ for a given binary matrix $H$. + +Let us explain this embedding on a small illustrative example where +$\rho_X(i,x,y)$ is identically equal to 1, +$m$ and $x$ are respectively a 3 bits column +vector and a 7 bits column vector. +Let then $H$ be the binary Hamming matrix +$$ +H = \left( +\begin{array}{lllllll} + 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ + 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ + 1 & 0 & 1 & 0 & 1 & 0 & 1 +\end{array} +\right). +$$ +The objective is to modify $x$ to get $y$ s.t. $m = Hy$. +In this algebra, the sum and the product respectively correspond to +the exclusive \emph{or} and to the \emph{and} Boolean operators. +If $Hx$ is already equal to $m$, nothing has to be changed and $x$ can be sent. +Otherwise we consider the difference $\delta = d(m,Hx)$ which is expressed +as a vector : +$$ +\delta = \left( \begin{array}{l} +\delta_1 \\ +\delta_2 \\ +\delta_3 +\end{array} +\right) +\textrm{ where $\delta_i$ is 0 if $m_i = Hx_i$ and 1 otherwise.} +$$ +Let us thus consider the $j$th column of $H$ which is equal to $\delta$. +We denote by $\overline{x}^j$ the vector we obtain by +switching the $j$th component of $x$, +that is, $\overline{x}^j = (x_1 , \ldots, \overline{x_j},\ldots, x_n )$. +It is not hard to see that if $y$ is $\overline{x}^j$, then +$m = Hy$. +It is then possible to embed 3 bits in only 7 LSB of pixels by modifying +1 bit at most. +In the general case, when comunicating $n$ message bits in +$2^n-1$ pixels needs $1-1/2^n$ average changes. + + + +Unfortunately, + + +for any given $H$, finding $y$ that solves $Hy=m$ and that +that minimizes $D_X(x,y)$ has exponential complexity with respect to $n$. +The Syndrome-Trellis Codes (STC) +presented by Filler et al. in~\cite{DBLP:conf/mediaforensics/FillerJF10} +is a practical solution to this complexity. Thanks to this contribution, +the solving algorithm has a linear complexity with resspect to $n$. + +First of all, Filler et al. compute the matrix $H$ +by placing a small sub-matrix $\hat{H}$ of size $h × w$ next +to each other and shifted down by one row. +Thanks to this special form of $H$, one can represent +every solution of $m=Hy$ as a path through a trellis. + +Next, the process of finding $y$ consists of a forward and a backward part: +\begin{enumerate} +\item Forward construction of the trellis that depends on $\hat{H}$, on $x$, on $m$, and on $\rho$; +\item Backward determinization of $y$ which minimizes $D$ starting with +the complete path with minimal weight +\end{enumerate} +Let us now give some details about these two parts. + + diff --git a/stc/exp/python/stc_r.py b/stc/exp/python/stc_r.py new file mode 100644 index 0000000..854c780 --- /dev/null +++ b/stc/exp/python/stc_r.py @@ -0,0 +1,241 @@ +from random import * +import numpy as np +from math import * +import gc + +infinity = 100000000000 + + + +# forward part + + +def dec(ch,n): + l = len(ch) + acc = 0 + for i in xrange(l): + if ch[i]==1: + acc = acc + 2**(n-i-1) + return acc + + +def bin(elem,n): + """Convertit un nombre en binaire""" + q = -1 + res = [0 for i in xrange(n)] + i = 1 + while q != 0: + q = elem // 2 + r = elem % 2 + res[n-i] = r + elem = q + i+=1 + return res + + + +def xorb(a,b): + return 1 if a != b else 0 + +def xor(e1,e2,h): + e1b,e2b = bin(e1,h),bin(e2,h) + d = dec([xorb(e1b[j],e2b[j]) for j in xrange(h)],h) + return d + +def lit(d,(indx,indy)): + if (indx,indy) in d : + return d[(indx,indy)] + else : + return 0 + + + + +def forward(H_hat,x,message,lnm,rho): + (h,w) = int(log(max(H_hat),2))+1, len(H_hat) + path = dict() + nbblock = lnm + wght = [infinity for _ in xrange(int(2**h))] + wght[0]=0 + newwght = [0 for _ in xrange(int(2**h))] +# rho = 1 +# rho= [1 for _ in xrange(len(x))] + indx,indm = 0,0 + i=0 + while i < nbblock: # pour chaque bit du message + for j in xrange(w): # pour chaque colonne de H_hat + #print indx, "en entrant",wght + k = 0 + while k < int(2**h): # pour chaque ligne de H + w0 = wght[k] + x[indx]*rho[indx] + w1 = wght[xor(k,H_hat[j],h)] + (1-x[indx])*rho[indx] + if w1 < w0 : + path[(indx,k)] = 1 + else : + if (indx,k) in path: + del path[(indx,k)] + newwght[k] = min(w0,w1) + k +=1 + indx +=1 + wght = [t for t in newwght] + #print " apres calcul",wght + + for j in xrange(int(2**(h-1))): # pour chaque colonne de H + wght[j] = wght[2*j + message[indm]] + wght = wght[:int(pow(2,h-1))] + [infinity for _ in xrange(int(pow(2,h)-pow(2,h-1)))] + indm +=1 + i +=1 + start = np.argmin(wght) + return (start,path) + + +def backward(start,H_hat,x,message,lnm,path): + (h,w) = int(log(max(H_hat),2))+1, len(H_hat) + indx,indm = len(x)-1,lnm-1 + state = 2*start + message[indm] + indm -=1 + # l'initialisation de state n'est pas optimale... + nbblock = lnm + y=np.zeros(len(x)) + i=0 + while i < nbblock: + l = range(w) + l.reverse() + for j in l: # pour chaque colonne de H_hat + y[indx] = lit(path,(indx,state)) + state = xor(state,y[indx]*H_hat[j],h) + indx -=1 + state = 2*state + message[indm] + indm -=1 + i +=1 + return [int(t) for t in y] + + + + + + +def trouve_H_hat(n,m,h): + assert h ==7 + alpha = float(n)/m + assert alpha >= 2 + index = min(int(alpha),9) + mat = { + 2 : [71,109], + 3 : [95, 101, 121], + 4 : [81, 95, 107, 121], + 5 : [75, 95, 97, 105, 117], + 6 : [73, 83, 95, 103, 109, 123], + 7 : [69, 77, 93, 107, 111, 115, 121], + 8 : [69, 79, 81, 89, 93, 99, 107, 119], + 9 : [69, 79, 81, 89, 93, 99, 107, 119, 125] + }[index] + return(mat, index*m) + + +def stc(x,rho,message): + lnm = len(message) + (mat,taille_suff) = trouve_H_hat(len(x),len(message),7) + x_b = x[:taille_suff] + (start,path) = forward(mat,x_b,message,lnm,rho) + return (x_b,backward(start,mat,x_b,message,lnm,path),mat) + + + + + +def nbdif(x,y): + r,it = 0,0 + l = len(y) + while it < l : + if x[it] != y[it] : + r +=1 + it += 1 + return float(r)/l + + + + + + +def prod(H_hat,lnm,y): + (h,w) = int(log(max(H_hat),2))+1, len(H_hat) + i=0 + H =[] + V=[0 for _ in range(len(y))] + sol=[] + while i < lnm: # pour chaque ligne + V=[0 for _ in range(len(y))] + k = max([(i-h+1)*w,0]) + dec = max([i-h+1,0]) + for j in xrange(min([i+1,h])): #nbre de blocks presents sur la ligne i + for l in xrange(w): # pour chaque collone de H_hat + V[k] = bin(H_hat[l],h)[h-i-1+j+dec] + k+=1 + + sol.append(np.dot(np.array(V),np.array(y))) + i+=1 + #H += [V] + #H = np.array(H) + #y = np.array(y) + #print "dot",np.dot(H,y),H.shape + #print "sol",sol + return sol#list(np.dot(H,y)) + +def equiv(x,y): + lx = len(x) + assert lx == len(y) + i=0 + while i < lx : + if x[i] % 2 != y[i]%2 : + return False + i += 1 + return True + +""" +################ + +x = [randint(0,1) for _ in xrange(65000)] +rho = [randint(1,9) for _ in xrange(65000)] +message = [randint(0,1) for _ in xrange(26000)] + + + +#(x_b,y,H_hat) = stc(x,rho,message) +# x_b est la sous partie de x qui va etre modifiee +# y est le vecteur des bits modifies +# H_hat est la sous-matrice retenue qui est embarquee dans H + +#print nbdif(x_b,y) + +#print message +#print x +#print rho +#print y +#message2 = [x%2 for x in prod(H_hat,len(message),y)] +#print message2 +print max([message[l]-message2[l] for l in xrange(len(message))]) +print equiv(message,message2) + +""" +count = 0 + +while count < 100 and eval : + lx = randint(500,1000) + x = [randint(0,1) for _ in xrange(lx)] + rho = [randint(1,9) for _ in xrange(lx)] + + lm = randint(lx/10,lx/2) + message = [randint(0,1) for _ in xrange(lm)] + (x_b,y,H_hat) = stc(x,rho,message) + eval = equiv(message, prod(H_hat,len(message),y)) + if not (eval): + print x + print message + + count +=1 + if count % 10 == 0 : + print count + +print count + diff --git a/test.ps b/test.ps new file mode 100644 index 0000000..bc1e4ce --- /dev/null +++ b/test.ps @@ -0,0 +1,993 @@ +%!PS-Adobe-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: start_up +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 429 616 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 393 580 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% IC +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 131 498 moveto +79 498 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 79 498 moveto +73 498 67 492 67 486 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 67 486 moveto +67 466 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 67 466 moveto +67 460 73 454 79 454 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 79 454 moveto +131 454 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 131 454 moveto +137 454 143 460 143 466 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 143 466 moveto +143 486 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 143 486 moveto +143 492 137 498 131 498 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +83.5 481.4 moveto 43 (Image) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +74.5 463.4 moveto 61 (Cover X ) alignedtext +grestore +% ED +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 158 416 moveto +54 416 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 54 416 moveto +48 416 42 410 42 404 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 42 404 moveto +42 384 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 42 384 moveto +42 378 48 372 54 372 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 54 372 moveto +158 372 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 158 372 moveto +164 372 170 378 170 384 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 170 384 moveto +170 404 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 170 404 moveto +170 410 164 416 158 416 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +50 381.4 moveto 112 (Edge Detection\)) alignedtext +grestore +% IC->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 105.27 453.59 moveto +105.38 445.12 105.5 435.3 105.61 426.1 curveto +stroke +0 0 0 edgecolor +newpath 109.11 426.14 moveto +105.73 416.1 lineto +102.11 426.05 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 109.11 426.14 moveto +105.73 416.1 lineto +102.11 426.05 lineto +closepath stroke +grestore +% message +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 225 494 moveto +173 494 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 173 494 moveto +167 494 161 488 161 482 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 161 482 moveto +161 470 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 161 470 moveto +161 464 167 458 173 458 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 173 458 moveto +225 458 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 225 458 moveto +231 458 237 464 237 470 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 237 470 moveto +237 482 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 237 482 moveto +237 488 231 494 225 494 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +169 472.4 moveto 60 (message) alignedtext +grestore +% encrypt +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 360 412 moveto +200 412 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 200 412 moveto +194 412 188 406 188 400 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 188 400 moveto +188 388 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 188 388 moveto +188 382 194 376 200 376 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 200 376 moveto +360 376 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 360 376 moveto +366 376 372 382 372 388 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 372 388 moveto +372 400 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 372 400 moveto +372 406 366 412 360 412 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext +grestore +% message->encrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 216.98 457.8 moveto +228.09 446.55 242.53 431.93 254.78 419.53 curveto +stroke +0 0 0 edgecolor +newpath 257.54 421.72 moveto +262.07 412.15 lineto +252.56 416.8 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 257.54 421.72 moveto +262.07 412.15 lineto +252.56 416.8 lineto +closepath stroke +grestore +% key +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 297 494 moveto +267 494 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 267 494 moveto +261 494 255 488 255 482 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 255 482 moveto +255 470 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 255 470 moveto +255 464 261 458 267 458 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 267 458 moveto +297 458 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 297 458 moveto +303 458 309 464 309 470 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 309 470 moveto +309 482 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 309 482 moveto +309 488 303 494 297 494 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +269.5 472.4 moveto 25 (key) alignedtext +grestore +% key->encrypt +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 281.56 457.8 moveto +281.3 447.4 280.98 434.12 280.69 422.38 curveto +stroke +0 0 0 edgecolor +newpath 284.19 422.06 moveto +280.44 412.15 lineto +277.19 422.23 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 284.19 422.06 moveto +280.44 412.15 lineto +277.19 422.23 lineto +closepath stroke +grestore +% PI +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 92 192 moveto +12 192 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 192 moveto +6 192 0 186 0 180 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 180 moveto +0 160 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 0 160 moveto +0 154 6 148 12 148 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 12 148 moveto +92 148 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 92 148 moveto +98 148 104 154 104 160 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 160 moveto +104 180 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 104 180 moveto +104 186 98 192 92 192 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +15.5 175.4 moveto 73 (Parameter) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +7.5 157.4 moveto 89 (Instantiation) alignedtext +grestore +% PI->ED +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 51.72 192.11 moveto +51.94 224.2 54.73 285.19 71 334 curveto +74.35 344.04 79.51 354.25 84.85 363.33 curveto +stroke +0 0 0 edgecolor +newpath 81.97 365.31 moveto +90.2 371.98 lineto +87.92 361.63 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 81.97 365.31 moveto +90.2 371.98 lineto +87.92 361.63 lineto +closepath stroke +grestore +% STC +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 338 188 moveto +258 188 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 258 188 moveto +252 188 246 182 246 176 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 246 176 moveto +246 164 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 246 164 moveto +246 158 252 152 258 152 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 258 152 moveto +338 152 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 338 152 moveto +344 152 350 158 350 164 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 350 164 moveto +350 176 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 350 176 moveto +350 182 344 188 338 188 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext +grestore +% encrypt->STC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 293.94 375.96 moveto +301.81 364.6 310.88 349.25 315 334 curveto +327.61 287.37 316.21 230.96 306.97 197.92 curveto +stroke +0 0 0 edgecolor +newpath 310.25 196.67 moveto +304.08 188.06 lineto +303.54 198.64 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 310.25 196.67 moveto +304.08 188.06 lineto +303.54 198.64 lineto +closepath stroke +grestore +% cond +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 193 334 moveto +80 290 lineto +193 246 lineto +306 290 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +163 295.4 moveto 60 (Size of x) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +144.5 277.4 moveto 97 ( enough for m) alignedtext +grestore +% encrypt->cond +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 264.85 375.88 moveto +254.56 363.59 240.54 346.83 227.61 331.38 curveto +stroke +0 0 0 edgecolor +newpath 230.08 328.87 moveto +220.98 323.44 lineto +224.71 333.36 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 230.08 328.87 moveto +220.98 323.44 lineto +224.71 333.36 lineto +closepath stroke +grestore +% emb +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 373 110 moveto +223 110 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 110 moveto +217 110 211 104 211 98 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 98 moveto +211 86 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 211 86 moveto +211 80 217 74 223 74 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 223 74 moveto +373 74 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 373 74 moveto +379 74 385 80 385 86 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 385 86 moveto +385 98 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 385 98 moveto +385 104 379 110 373 110 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext +grestore +% STC->emb +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 298 151.91 moveto +298 142.53 298 130.85 298 120.3 curveto +stroke +0 0 0 edgecolor +newpath 301.5 120.26 moveto +298 110.26 lineto +294.5 120.26 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 301.5 120.26 moveto +298 110.26 lineto +294.5 120.26 lineto +closepath stroke +grestore +% end +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 313 36 moveto +283 36 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 283 36 moveto +277 36 271 30 271 24 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 271 24 moveto +271 12 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 271 12 moveto +271 6 277 0 283 0 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 283 0 moveto +313 0 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 313 0 moveto +319 0 325 6 325 12 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 325 12 moveto +325 24 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 325 24 moveto +325 30 319 36 313 36 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +285 14.4 moveto 26 (end) alignedtext +grestore +% emb->end +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 298 73.71 moveto +298 65.46 298 55.54 298 46.36 curveto +stroke +0 0 0 edgecolor +newpath 301.5 46.08 moveto +298 36.08 lineto +294.5 46.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 301.5 46.08 moveto +298 36.08 lineto +294.5 46.08 lineto +closepath stroke +grestore +% start +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 164 572 moveto +134 572 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 572 moveto +128 572 122 566 122 560 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 560 moveto +122 548 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 122 548 moveto +122 542 128 536 134 536 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 134 536 moveto +164 536 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 164 536 moveto +170 536 176 542 176 548 curveto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 176 548 moveto +176 560 lineto +stroke +1 setlinewidth +0 0 0 nodecolor +newpath 176 560 moveto +176 566 170 572 164 572 curveto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +132 550.4 moveto 34 (start) alignedtext +grestore +% start->IC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 138.79 535.91 moveto +133.94 527.3 127.99 516.75 122.44 506.92 curveto +stroke +0 0 0 edgecolor +newpath 125.47 505.16 moveto +117.51 498.17 lineto +119.37 508.6 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 125.47 505.16 moveto +117.51 498.17 lineto +119.37 508.6 lineto +closepath stroke +grestore +% start->message +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 160.6 535.91 moveto +166.86 526.13 174.72 513.87 181.7 502.99 curveto +stroke +0 0 0 edgecolor +newpath 184.84 504.57 moveto +187.29 494.26 lineto +178.95 500.79 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 184.84 504.57 moveto +187.29 494.26 lineto +178.95 500.79 lineto +closepath stroke +grestore +% start->key +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 176.28 538.49 moveto +195.78 527.35 222.6 511.9 246 498 curveto +246.09 497.95 246.18 497.89 246.27 497.84 curveto +stroke +0 0 0 edgecolor +newpath 248.14 500.8 moveto +254.92 492.65 lineto +244.54 494.79 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 248.14 500.8 moveto +254.92 492.65 lineto +244.54 494.79 lineto +closepath stroke +grestore +% start->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 121.68 550.56 moveto +82.23 543.9 14 525.26 14 476 curveto +14 476 14 476 14 290 curveto +14 258.89 25.75 225.26 36.19 201.54 curveto +stroke +0 0 0 edgecolor +newpath 39.42 202.89 moveto +40.39 192.34 lineto +33.06 199.98 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 39.42 202.89 moveto +40.39 192.34 lineto +33.06 199.98 lineto +closepath stroke +grestore +% ED->cond +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 124.45 371.94 moveto +134.29 360.18 146.73 345.32 158.29 331.49 curveto +stroke +0 0 0 edgecolor +newpath 161.25 333.41 moveto +164.98 323.5 lineto +155.88 328.92 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 161.25 333.41 moveto +164.98 323.5 lineto +155.88 328.92 lineto +closepath stroke +grestore +% cond->PI +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 157.42 259.72 moveto +135.48 241.04 107.5 217.23 85.88 198.83 curveto +stroke +0 0 0 edgecolor +newpath 88.11 196.13 moveto +78.22 192.32 lineto +83.57 201.46 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 88.11 196.13 moveto +78.22 192.32 lineto +83.57 201.46 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +119 215.4 moveto 19 (No) alignedtext +grestore +% cond->STC +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 221.97 256.89 moveto +238.81 237.64 259.73 213.73 275.36 195.87 curveto +stroke +0 0 0 edgecolor +newpath 278.19 197.96 moveto +282.14 188.13 lineto +272.92 193.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 278.19 197.96 moveto +282.14 188.13 lineto +272.92 193.35 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +262 215.4 moveto 23 (Yes) alignedtext +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 429 616 +end +restore +%%EOF