データセット内のハッシュステガノグラフィ。 今回はクイック

すべて金曜日に! ハッシュステガノグラフィに関する前回の投稿で、ステガノグラフィへの別のアプローチを提案しました。コンテナ内の情報を散在させるのではなく、コンテナを正しい順序に並べ、隠された情報を送信するだけです。 2日前、 romabibi はVKのソーシャルネットワークでハッシュステガノグラフィの概念実証を公開しました。







ただし、コンテナとして写真を使用することには重要な欠陥があります。 コメント alekseev_apを引用します。







これらはすべて非常に興味深いものですが、そのようなシステムの効率は非常に低くなっています。 いくつかの単語の文字列を送信するには、何十(または何百)キロバイトを送信する必要がありますか?!

実際、画像の重量が任意に0.5-2 MBで、各画像を1から3ニブルに転送する場合、結果の速度は非常に低くなります:0.5から6 B / MB







したがって、実際に使用するには、次のプロパティを持つコンテナを見つける必要があります。







  1. 非常に小さいでしょう。
  2. 多数のコンテナが隣同士に立っている; 「疑い」を引き起こすことはありません。
  3. コンテナの順序を変更しても、「疑い」は生じません。


そのため、キャプテンは明らかな決定です。ハッシュステガノグラフィを大規模なデータセットに実装する必要があります。 1行-1ニブル(ニブル)









データセット内のハッシュステガノグラフィの本質を示すGifアニメーション。 もちろん、実際には、ステガノグラフィーの前に圧縮および暗号化する必要があります









アイデア



アイデアはシンプルで明白です:







  1. データを含む非常に大きなデータセットを使用します。
  2. 各行をハッシュし、データの最初のnビットを取得します-これは、ハッシュステガノグラフィ用のコンテナのセットです
  3. メッセージは圧縮、暗号化され、 nビットのブロックに分割されます
  4. 送信されたメッセージに従って手配します。


CSVドナーの例



例として、CSVにworld-cities.csvの都市の座標を取ります。







各行には以下が含まれます。









平均して、1つのレコードの長さは33バイトです。

これは私のデータセットにあります。 あなたは「ドナー」として別のものを取ることができます。 ただし、番号の順序は同じです。

ニブルを1つ(4ビット)送信すると、最終的なステガノグラフィの速度は最大16000 B / MBになり 、これは3桁(原文のまま)です。







Chs



例はCHS(Csv Hash Steganography)と呼ばれます。







メッセージを含むCSVファイルを生成します。







$ python3 chs.py -m ", !" -i data/world-cities.csv -o stego.csv
      
      





メッセージの抽出:







 $ python3 chs.py -i stego.csv
      
      





もちろん、生成と取得の際には、同じパスワードを指定する必要があります。







世代







 ~$ python3 chs.py -m ", !" -i data/world-cities.csv -o stego.csv Run chs 2018-03-23 09:33:03.242100  : 12345 header:: 'name,country,subcountry,geonameid' 65 --> 'Soignies,Belgium,Wallonia,2786420' 129 --> 'Lagoa do Itaenga,Brazil,Pernambuco,3396769' 196 --> 'Dubai,United Arab Emirates,Dubai,292223' 138 --> 'Qarqīn,Afghanistan,Jowzjān,1129516' 94 --> 'Arroyo Seco,Argentina,Santa Fe,3865385' 44 --> 'Shahrak,Afghanistan,Ghowr,1125896' 48 --> 'Palpalá,Argentina,Jujuy,3842190' 235 --> 'Lashkar Gāh,Afghanistan,Helmand,1134720' 39 --> 'Karukh,Afghanistan,Herat,1137807' 23 --> 'Uíge,Angola,Uíge,2236568' 166 --> 'La Paz,Argentina,Entre Rios,3432079' 240 --> 'Monte Caseros,Argentina,Corrientes,3430598' 121 --> 'Berat,Albania,Berat,3186084' 48 --> 'Amstetten,Austria,Lower Austria,2782555' 206 --> 'Ansfelden,Austria,Salzburg,3323063' 101 --> 'Kuçovë,Albania,Berat,3185060' 43 --> 'Morayfield,Australia,Queensland,2156934' 198 --> 'Río Ceballos,Argentina,Cordoba,3838902' 9 --> 'Esperanza,Argentina,Santa Fe,3856022' 168 --> 'Goris,Armenia,Syunik Province,174895' 119 --> 'Posadas,Argentina,Misiones,3429886' 187 --> 'San Miguel de Tucumán,Argentina,Tucumán,3836873' 89 --> 'San Pedro,Argentina,Jujuy,3836772' 61 --> 'Mādārīpur,Bangladesh,Dhaka,1337245' 1 --> 'Caxito,Angola,Bengo,2242001' 13 --> 'Tres Isletas,Argentina,Chaco,3833794' 192 --> 'Nivelles,Belgium,Wallonia,2790101' 25 --> 'Fier,Albania,Fier,3185672' 5 --> 'Botevgrad,Bulgaria,Sofiya,733014' 239 --> 'Ārt Khwājah,Afghanistan,Takhār,1148106' 41 --> 'Masis,Armenia,Ararat Province,616435' 178 --> 'Schwechat,Austria,Lower Austria,2765388'
      
      





抽出







 ~$ python3 chs.py -i stego.csv Run chs 2018-03-23 11:34:12.443084  : 12345  :', !'
      
      





ニュアンス



ステガノグラフィを検出できますか? 最も薄い点は「ドナーcsv」です。 理想的なケースでは、自分で生成し、使用するたびに破棄します。 したがって、データ転送ごとに、ステガノグラフィを使用する前に一意で信頼性の高い暗号システムを使用する場合、ハッシュステガノグラフィシステムは信頼できると見なすことができます。







また、望ましいCSVは、できれば「秩序」を意味するものではありません。 たとえば、マウストラックのあるデータは、時間順に合理的に並べられます。 world-cities.csvファイルについては、国または都市のいずれかをアルファベット順に論理的に並べることができます。 (ところで、ファイルは都市でソートされています;))







ソースコード



githubに投稿: https : //github.com/PavelMSTU/CHS







これは概念実証です。 愚か者と非常に美しいギジンからの保護はありません。

ご清聴ありがとうございました。







スペルは私の得意ではありません。 エラーが表示された場合は、怠け者にならないで、個人的に書いてください。








All Articles