Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Nuair a bhios sinn a 'bruidhinn mu dheidhinn steganography, bidh daoine a' smaoineachadh air luchd-ceannairc, pedophiles, luchd-brathaidh, no, aig a 'char as fheàrr, cryptoanarchists agus luchd-saidheans eile. Agus dha-rìribh, cò eile a dh’ fhaodadh a bhith feumach seiche rudeigin bhon taobh a-muigh de shùilean? Dè a’ bhuannachd a dh’ fhaodadh a bhith aig seo do dhuine àbhaisteach?

Tha e a 'tionndadh a-mach gu bheil aon. Sin as coireach an-diugh bidh sinn a’ teannachadh dàta a ’cleachdadh dòighean steganography. Agus aig a ’cheann thall, bidh e comasach don leughadair eadhon na tasglannan dhealbhan luachmhor aige a chleachdadh ann an JPEGs gus an àireamh de gigabytes an-asgaidh air an t-siostam faidhle àrdachadh.

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Dè?

Ma chuimhnicheas an leughadair, tha steganography na algoirmean neònach a tha ga dhèanamh comasach falach a dhèanamh air làthaireachd aon fhiosrachadh taobh a-staigh fear eile. Ann an cànan eadhon nas sìmplidh: dealbh + faidhle == timcheall air an aon dealbh, ach chan eil buileach (an àite dealbhan faodaidh rud sam bith a bhith ann, ach mar as trice tha a h-uile dad nas soilleire annta). Cha bu chòir dòigh fhurasta a bhith ann gus faighinn a-mach a bheil rudeigin a-staigh no nach eil.

Ach mura h-urrainnear aon a dhealachadh ris an fhear eile, a bheil eadar-dhealachadh sam bith ann? Bho shealladh an neach-cleachdaidh, chan eil dragh aig an neach-cleachdaidh air mionaideachd matamataigeach (air a nochdadh le seata sònraichte de phìosan), dìreach na tha e air fhaicinn.

Mar eisimpleir, leig dhuinn sùil a thoirt air trì ìomhaighean de chù grinn:

Thoir an aire, JPEG!

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

A dh'aindeoin an eadar-dhealachadh mòr ann am meud, glè bheag de dhaoine a roghnaicheas an treas dreach. Air an làimh eile, chan eil an eadar-dhealachadh eadar a 'chiad dà dhealbh cho follaiseach, agus faodaidh an uiread fiosrachaidh a th' annta (bho mo shealladh) a bhith co-ionnan.

Tha am prionnsapal seo fhèin sean mar-thà agus chaidh a chleachdadh gu gnìomhach le dòighean teannachaidh fiosrachaidh cally airson grunn bhliadhnaichean. Ach chan eil briseadh a’ togail; tha ùidh againn anns an taobh adhartach den chùis. A bheil e comasach fiosrachadh meud a bharrachd a chuir a-steach N chun an fhaidhle gus am bi a mheud ag àrdachadh M < N, ach cha robh na h-atharrachaidhean follaiseach don neach-cleachdaidh?

Gu dearbh faodaidh tu. Ach is fhiach beagan àite a ghlèidheadh ​​​​sa bhad:

  • An toiseach, feumaidh an dòigh a bhith uile-choitcheann agus toradh adhartach a thoirt air a’ mhòr-chuid de dhàta cuir a-steach. Is e sin, gu cuibheasach, airson cuir a-steach air thuaiream, bu chòir gum biodh fìor lùghdachadh anns an uiread fiosrachaidh a tha air a stòradh. Tha “gu cuibheasach” a’ ciallachadh gum faodadh a chaochladh tachairt, ach nach bu chòir a bhith làmh an uachdair.
  • San dàrna h-àite, feumaidh meud an t-soithich teann mus tèid fiosrachadh a chuir a-steach a bhith nas motha na an atharrachadh aige air a dhlùthadh san aon dòigh. Chan e dìreach teannachadh steganographic a th’ ann a bhith a’ fighe dòrlach de phìosan ann an ìomhaighean BMP a’ cleachdadh an dòigh LSB, oir, an dèidh a bhith air a ruith tro sheòrsa air choreigin de DEFLATE, tha e coltach gum bi an ìomhaigh thùsail gu math nas lugha.
  • San treas àite, feumar an toradh a dhèanamh agus a choimeas a thaobh dàta a chaidh a dhlùthadh le dòighean clasaigeach mar-thà. Bheir seo air falbh buaidh coltachd nan eadar-dhealachaidhean anns an dìth obrach aca agus bheir e teannachadh nas èifeachdaiche anns a’ chùis choitcheann.

Càite

Tha cleachdadh steganography a’ ciallachadh, a bharrachd air an fhiosrachadh teannachaidh, gum feum sinn soithichean anns am bi e freumhaichte. Tha an ìre as motha de dh'fhiosrachadh freumhaichte gu mòr an urra ri feartan fa leth, ach tha e mòran nas fhasa sgèile a dhèanamh leis an àireamh aca. Mar sin, feumaidh cruth an t-soithich a bhith cumanta gus am bi gu leòr dhiubh aig an neach-cleachdaidh gus buannachd sam bith fhaighinn bhon phròiseas “dùmhlachadh”.

Anns a’ cho-theacsa seo, tha grafaigean, faidhlichean claisneachd is bhidio nan tagraichean math. Ach, air sgàth na diofar chruthan, codecs, msaa, ann an cleachdadh tha sinn air fhàgail le roghainn bho nach eil uiread de roghainnean.

Leis a h-uile càil seo, thuit mo roghainn air JPEG Tha e aig cha mhòr a h-uile duine, tha e air a chleachdadh gu farsaing airson adhbharan pearsanta agus gnìomhachais, leis gu bheil e cha mhòr mar an cruth de facto airson a’ mhòr-chuid de dhealbhan.

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Tha e an urra?

An ath rud tha diagraman agus tuairisgeulan faisg agus teignigeach gun mòran mìneachaidh, agus mar sin faodaidh an fheadhainn le ùidh an leum le bhith a’ gluasad chun roinn “Teicneòlasan Àrd”.

Feartan cumanta

Gus dàta fhighe a-steach an àiteigin, feumaidh tu an toiseach dearbhadh càite. Faodaidh àireamh sam bith de dhealbhan eadar-dhealaichte a bhith air an t-siostam faidhle, agus is dòcha nach bi an neach-cleachdaidh airson ach beagan dhiubh a chleachdadh. Canaidh sinn an leithid de sheata de shoithichean mar leabharlann.

Tha e air a chruthachadh ann an dà chùis: mus teannachadh agus mus decompression. Anns a ’chiad chùis, faodaidh tu dìreach seata de dh’ ainmean faidhle (no nas fheàrr fhathast, abairt àbhaisteach dhaibh) de fhaidhlichean a chleachdadh, ach anns an dàrna fear, tha feum air rudeigin nas earbsaiche: faodaidh an neach-cleachdaidh an lethbhreac agus an gluasad taobh a-staigh an t-siostam faidhle , mar sin gan casg bho bhith air an comharrachadh gu ceart. Mar sin, feumar na hashes aca a stòradh (tha md5 gu leòr) às deidh a h-uile atharrachadh a dhèanamh.

Anns a 'chùis seo, chan eil feum sam bith ann a bhith a' dèanamh a 'chiad rannsachadh a' cleachdadh abairt cunbhalach air feadh an t-siostam faidhle gu lèir; tha e gu leòr airson eòlaire bunaiteach sònraichte a shònrachadh. Thèid faidhle tasglann sònraichte a shàbhaladh ann, anns am bi na hashes sin, còmhla ri meata-fhiosrachadh eile a tha riatanach airson fiosrachadh teann fhaighinn air ais às deidh sin.

Tha seo uile a’ buntainn gu co-ionann ri buileachadh algorithm teannachaidh dàta steganographic sam bith. Canar pacadh agus dì-phapadh ris na pròiseasan teannachaidh dàta agus faighinn air ais iad fhèin.

F5

A-nis gu bheil e air fàs soilleir dè a tha sinn a’ dèanamh agus carson, tha e fhathast ri cunntas a thoirt air an algairim airson an amas a choileanadh. Cuimhnicheamaid air a’ phròiseas airson faidhle JPEG a chòdachadh (taing dha wiki Leabharlann Nàiseanta Bauman):

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

A 'coimhead air, tha e nas fheàrr beagan bheachdan a thoirt seachad sa bhad:

  • Faodar beachdachadh air meud faidhle JPEG mar an ìre as fheàrr gun eadhon feuchainn ri teannachadh le seòrsa de Winrar;
  • Is e dìreach am fiosrachadh a tha air a stòradh (sin a tha mar thoradh air cruth-atharrachadh cosine air leth, DCT) a ghabhas atharrachadh gus coileanadh iomchaidh co-dhiù a thoirt seachad.
  • Gus nach caill thu dàta air sgèile gnìomhachais a tha follaiseach don neach-cleachdaidh, feumar co-dhiù atharrachaidhean a dhèanamh air gach ìomhaigh fa leth;

Bidh teaghlach slàn de algorithms a ’freagairt air na cumhaichean sin, air am faod thu eòlas fhaighinn anns an taisbeanadh math seo. Is e am fear as adhartaiche dhiubh an algairim F5 le Andreas Westfeld, ag obair le co-èifeachdan DCT den phàirt soilleireachd (tha sùil an duine cho mothachail air na h-atharrachaidhean aige). Tha an cruth coitcheann aige nuair a bhios e ag obair le faidhle JPEG a th’ ann mar-thà air a thaisbeanadh mar a leanas:

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Bidh am bloc F5 a’ cleachdadh innleachd in-ghabhail adhartach stèidhichte air còdachadh matrix. Faodaidh an leughadair barrachd ionnsachadh mu dheidhinn agus an algairim fhèin aig a’ cheangal gu h-àrd, ach tha ùidh againn sa mhòr-chuid anns an fhìrinn gun urrainn dhut le a chuideachadh nas lugha de dh’ atharrachaidhean a dhèanamh nuair a chuireas tu an aon uiread fiosrachaidh an sàs, mar as motha a bhios meud an t-soithich a thèid a chleachdadh. , agus airson an algairim a choileanadh chan fheum an algairim ach obair còdaidh sìmplidh Huffman agus RLE (de).

Tha na h-atharrachaidhean iad fhèin air an dèanamh gu co-èifeachdan iomlan agus thig iad sìos gu bhith a’ lughdachadh an luach iomlan le aon, a leigeas, san fharsaingeachd, F5 a chleachdadh airson teannachadh dàta. Is e a’ phuing gum bi an co-èifeachd lùghdaichte ann an luach iomlan dualtach a bhith nas lugha de phìosan às deidh còdachadh Huffman mar thoradh air cuairteachadh staitistigeil luachan ann an JPEG.

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Ann an cùis cruthachadh neoni (an lùghdachadh ris an canar), thèid an àireamh de dh'fhiosrachadh a tha air a stòradh a lùghdachadh a rèir a mheud, oir bidh an co-èifeachd neo-eisimeileach a bh 'ann roimhe na phàirt den t-sreath de neamhan còdaichte RLE:

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Atharrachaidhean

Tha dìon dàta agus teannachadh nan duilgheadasan orthogonal, agus mar sin faodar dearmad a dhèanamh air permutation facal-faire dìomhair bhon algairim thùsail. A bharrachd air an sin, feumaidh fios a bhith againn ciamar a tharraingeas tu an dàta, agus mar sin bu chòir a h-uile fiosrachadh a tha riatanach airson seo (dè na soithichean a chaidh a chleachdadh, dè an òrdugh, msaa) a chlàradh ann am faidhle air leth agus a bhith fosgailte airson leughadh an-asgaidh leis an tasglann.

Tha an algairim tùsail air a dhealbhadh gus teachdaireachdan dìomhair a chuir a-mach, agus mar sin bidh e ag obair le dìreach aon inneal aig an aon àm, a’ gabhail ris gum bi an neach-cleachdaidh fhèin ga bhriseadh ann am pàirtean ma tha sin riatanach, ma tha sin ann. A bharrachd air an sin, nuair a thèid a stèidheachadh gu neo-eisimeileach anns gach soitheach, feumaidh fios a bhith agad ro-làimh cia mheud pìos dàta a chuireas tu a-steach gach fear. Mar sin, bu chòir co-èifeachdan gach eileamaid den leabharlann a bhith air an cur còmhla ann an aon eas-chruthach mòr agus obrachadh leis a rèir an algairim thùsail.

Leis gu bheil an F5 tùsail a’ ceadachadh suas ri 12% de mheud an t-soithich, àrdaichidh am mion-atharrachadh seo an comas as àirde: tha “suas ri 12%” de mheud an leabharlainn gu lèir nas motha na no co-ionann ris an t-suim de “suas ri 12% " bho gach aon de na h-eileamaidean aige.

Tha an sgeama coitcheann còdaichte mar a leanas:

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

An algairim fhèin

A-nis tha an t-àm ann cunntas a thoirt air an algairim fhèin bho thoiseach gu deireadh, gus nach cùm an leughadair anns an dorchadas:

  • Bidh an neach-cleachdaidh a’ mìneachadh an dàta binary compressible M agus an leabharlann L a’ cleachdadh abairt àbhaisteach agus eòlaire freumh sgrùdaidh;
  • Anns an òrdugh a tha iad a 'nochdadh air an FS, tha na h-eileamaidean leabharlainn a' cruthachadh an MC:
    • Tha sreath de cho-èifeachdan C air an dì-chòdachadh bhon dàta faidhle;
    • MC <- MC | C;
  • Tha am paramadair k air a dhearbhadh stèidhichte air an neo-ionannachd uamhasach: |M| * 8 / (count_full(MC) + count_ones(MC) * k_rate(k)) < k / ((1 << k) - 1);
  • Air a ghabhail an ath rud n = (1 << k) - 1 pìosan as lugha de eileamaidean neo-neoni bho MC agus sgrìobhte gu a:
    • Thathas a’ beachdachadh air gnìomh draoidheachd hash f, a’ riochdachadh facal n-bit a gu k-bit s;
    • ma s == 0, an uairsin chan eil feum air dad atharrachadh agus gluaisidh an algairim air adhart chun na h-ath cho-èifeachdan;
    • Lùghdaich luach iomlan an coefficient cunntachail airson s- hey bit anns an fhacal a;
    • Ma tha lùghdachadh a 'tachairt mar thoradh air an lùghdachadh (bidh an co-èifeachd 0), an uairsin ath-aithris a dhèanamh air a' cheum bhon toiseach;
  • Tha na co-èifeachdan uile air an còdachadh le RLE agus Huffman, air an sgrìobhadh gu na faidhlichean tùsail;
  • Tha am paramadair k air a sgrìobhadh chun fhaidhle tasglainn;
  • Tha hash MD5 air a thomhas bho gach faidhle L ann an òrdugh an àite tùsail agus air a sgrìobhadh chun fhaidhle tasglainn.

Teicnigeach

Bheireadh cruth naive an algairim agus buileachadh ann an cànanan àrd-ìre eile (gu sònraichte le cruinneachadh sgudail) coileanadh uamhasach, agus mar sin chuir mi an gnìomh na iom-fhillteachd sin gu lèir ann an C fìor-ghlan agus rinn mi grunn optimizations an dà chuid a thaobh astar cur gu bàs agus cuimhne (chan eil fios agad dè an cuideam a th’ anns na dealbhan sin gun teannachadh eadhon ro DCT). Ach a dh'aindeoin sin, an toiseach dh'fhàg astar cur gu bàs mòran ri bhith ag iarraidh, agus mar sin cha toir mi cunntas air a 'phròiseas gu lèir agus na dòighean a chaidh a chleachdadh.

Tha tar-àrd-ùrlar air a choileanadh le bhith a’ cleachdadh measgachadh de leabharlannan libjpeg, pcre agus tinydir, airson a bheil sinn a’ toirt taing dhaibh. Gu gnàthach, thèid a h-uile càil a chuir ri chèile tro àbhaisteach make, mar sin tha luchd-cleachdaidh Windows airson cuid de Cygwin a chuir a-steach dhaibh fhèin, no dèiligeadh ri Visual Studio agus leabharlannan leotha fhèin.

Tha am buileachadh ri fhaighinn ann an cruth goireas tòcan agus leabharlann. Gheibh an fheadhainn aig a bheil ùidh barrachd a-mach mu bhith a’ cleachdadh an tè mu dheireadh anns an readme anns an stòr air Github, an ceangal ris am bi mi a’ ceangal aig deireadh na dreuchd. Agus an seo gluaisidh sinn air adhart gu tuairisgeul agus taisbeanadh den obair.

Ciamar a chleachdas tu?

Gu cùramach. Faodar ìomhaighean cleachdte a ghluasad, ath-ainmeachadh agus lethbhreac a dhèanamh mar a thogras tu. Ach, bu chòir dhut a bhith air leth faiceallach agus gun a bhith ag atharrachadh an susbaint ann an dòigh sam bith. Bidh atharrachadh aon phìos a’ cur dragh air an hash agus ga dhèanamh do-dhèanta am fiosrachadh fhaighinn air ais.

Seach gum faigh sinn am faidhle so-ghnìomhaichte f5ar an dèidh a bhith air a chur ri chèile. Faodaidh tu meud an leabharlainn a mhion-sgrùdadh gus obrachadh a-mach na cothroman a th’ ann a chleachdadh a’ cleachdadh a’ bhratach -a: ./f5ar -a [папка поиска] [Perl-совместимое регулярное выражение]. Tha pacadh air a dhèanamh leis an sgioba ./f5ar -p [папка поиска] [Perl-совместимое регулярное выражение] [упаковываемый файл] [имя архива], agus dì-phapadh cleachdadh ./f5ar -u [файл архива] [имя восстановленного файла].

Taisbeanadh air obair

Gus èifeachdas an dòigh seo a nochdadh, chuir mi suas cruinneachadh de 225 dealbhan coin gu tur an-asgaidh bhon t-seirbheis Unsplash. Tha càileachd beagan nas àirde aig gach fear dhiubh na dealbhan cleachdaiche àbhaisteach, ach fhathast. Chaidh gach fear dhiubh ath-chòdachadh le bhith a’ cleachdadh libjpeg gus buaidh feartan còdaidh an leabharlainn air a’ mheud iomlan a neodachadh. Gus an eisimpleir as miosa de dhàta teannachaidh a chomharrachadh, chaidh faidhle air thuaiream 36-meatair (beagan a bharrachd air 5% den mheud iomlan) a sgaoileadh gu co-ionnan a’ cleachdadh dd.

Tha am pròiseas deuchainn gu math sìmplidh:

$ ls
binary_data dogs f5ar
$ du -sh dogs/
633M dogs/
$ du -h binary_data
36M binary_data

$ ./f5ar -p dogs/ .*jpg binary_data dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 16.8s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 32.6s
Saving the archive... ok

$ ./f5ar -u dogs/dogs.f5ar unpacked
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.2s
Decompressing... done in 17.5s
Writing extracted data... ok

$ sha1sum binary_data unpacked
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 binary_data
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 unpacked
$ du -sh dogs/
563M dogs/

No dealbh-sgrìn airson luchd-leantainn

Sàbhail àite cruaidh-chruaidh a 'cleachdadh steganography

Mar a chì thu, bhon 633 + 36 == 669 megabytes de dhàta tùsail air a’ chlàr chruaidh, chrìochnaich sinn le 563 nas fheàrr, a’ toirt dhuinn co-mheas teannachaidh de ~1,188. Tha an eadar-dhealachadh radaigeach seo air a mhìneachadh le call fìor bheag, coltach ris an fheadhainn a gheibhear nuair a thathar a’ dèanamh an fheum as fheàrr de fhaidhlichean JPEG a’ cleachdadh dhòighean clasaigeach (leithid tinyjpg). Gu nàdarra, nuair a bhios tu a’ cleachdadh teannachadh steganographic, chan e dìreach “call” a th’ air fiosrachadh, ach tha e air a chleachdadh gus dàta eile a chòdachadh.

Ge bith dè na h-atharrachaidhean a tha ann, tha iad gu tur neo-fhaicsinneach don t-sùil. Fon spoiler gu h-ìosal, faodaidh an leughadair an eadar-dhealachadh a mheasadh an dà chuid le sùil agus le bhith a’ toirt air falbh luachan na pàirt atharraichte bhon fhear thùsail (mar as socraiche an dath, is ann as lugha a bhios an diofar):

Ceanglaichean gu ìomhaighean nach eil a’ freagairt air habrastorage

tùsail - https://i.ibb.co/wNDLNcZ/1.jpg
Atharraichte - https://i.ibb.co/qWvpfFM/1.jpg
Eadar-dhealachadh - https://i.ibb.co/2ZzhHfD/diff.jpg

An àite a bhith co-dhùnadh

Tha mi an dòchas gun robh e comasach dhomh toirt a chreidsinn air an leughadair gu bheil dòighean mar seo comasach agus gu bheil còir aca air beatha. Ach, dh’ fhaodadh gur e roghainn tòrr nas sìmplidh a th’ ann a bhith a’ ceannach dràibh cruaidh no seanail a bharrachd (airson sgaoileadh lìonra) na bhith a’ feuchainn ri airgead a shàbhaladh san dòigh seo. Air an aon làimh, tha seo fìor; tha leasachadh farsaing gu tric nas sìmplidh agus nas earbsaiche. Ach air an làimh eile, cha bu chòir dhuinn dìochuimhneachadh mun dian. Às deidh na h-uile, chan eil geallaidhean sam bith ann gum bi e comasach dhut a thighinn chun bhùth a-màireach agus ceannach dhut fhèin mìle terabyte cruaidh cruaidh, ach faodaidh tu an-còmhnaidh an fheadhainn a tha agad mu thràth a chleachdadh aig an taigh.

-> GitHub

Tobar: www.habr.com

Cuir beachd ann