Polysteg
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A multi-file multimedia-based steganographic system that integrates with FUSE.
Polysteg is a steganographic file system that uses multiple multimedia files
for storage.

Requirements:
  Tcl 8.5 or later (http://tcl.tk/)
  Itcl 3.4 or later
  Tcl FUSE bindings (http://sourceforge.net/projects/tcl-fuse/)
  Tcllib (http://tcllib.sourceforge.net/)
  FUSE kernel interface

INTRODUCTION
Steganography is the art of concealing data such that discovery of its
existence is made extremely difficult or impossible. Most digital
steganographic systems take one of two forms:
o hide one file in another (eg, steghide)
o use a randomised area of raw disk (StegFS)
The former has limited use, while the latter is error prone and suspicious
in and of itself, since most people do not have large, "unused" portions
of disk space outside of partitions (or rather, partitions with no file-
system).

Polysteg is different in that it allows hiding a proper filesystem in
multiple multimedia files.

In order to open a Polysteg system, the following must be provided:
o the files the system is hidden within, with their original filenames
o the name of the first file in the system
o the master password of the system
o any options that affect the order, distribution, or number of bits

If any of these are lost, or any files modified close enough to the
beginning or in such a way as to affect the system's bits, the entire system
is irrecoverably lost. This is by design: Steganography is generally used in
cases where discovery of data is worse than that data's destruction.

CREATING a POLYSTEG SYSTEM
First, you will need some multimedia files. See SUPPORTED FILE TYPES for a list
of what Polysteg supports, and the data density you will get out of it. You
will want to pick and name files such that the collection will not be
suspicious; what exactly this means depends on the nature of the files and
what would be considered "normal" for someone like you.

You must also make sure that the originals of the files cannot be obtained; if
they can be, a binary comparison will easily expose the presense of
steganography.

Place all the files under one directory (or subdirectories thereof), and choose
one of them as the "root" file. Remember the name of the root file, relative to
the root directory. For example, if the root directory is /the/path, and your
root file is /the/path/to/file.mp3, then you provide the root file name as
"to/file.mp3".

It is highly recommended to place the Polysteg system on a physical filesystem
that always writes file data back to the same location --- good examples are
FAT16/FAT32. A horrible example is NilFS. If writes do not go back to the same
disk location every time, forensics may be able to tell that the file has been
written to many times, increasing suspicion.

If this is a serious use of steganography, make sure you are not using a shell
that saves your history; on Debian/Ubuntu, try "dash".

Note that system size is severely limited by how much RAM you have available;
the basic rule of thumb is that each 1GB of RAM will allow you to use 250kB
of storage space (of course, on a 32-bit system, you are limited to effectively
4GB of RAM for the Tcl process). You may want to tinker with the stride options
to reduce data density as necessary.

To initialise your polysteg system, run
  ./polysteg.tcl -d  -r  -format 
For example,
  ./polysteg.tcl -d /the/path -r to/file.mp3 -format -mp3stride 13

Make sure the password you enter is secure. If you make a mistake, copy the old
files over the new system so that effective bit usage is not raised by a second
initialisation.

At this point, you may freely add more files to the collection --- they will be
silently ignored by Polysteg. Adding files reduces detection probability, since
fewer of the files will be modified.

MOUNTING YOUR POLYSTEG SYSTEM
To mount your Polysteg system, run the same command you used to initialise it,
except with the -mount option instead of -format:
  ./polysteg.tcl -d  -r  -m  
For example:
  ./polysteg.tcl -d /the/path -r to/file.mp3 -mnt /mnt -mp3stride 13

If successful, you will get a filesystem in the given mount point with a single
file named "data". This file (which cannot be renamed, deleted, or resized)
represents the whole of data available in the Polysteg system.

The simplest way to use Polysteg is to tar up some files and write them:
  tar -c top_secret | gzip -c9f | dd of=/mnt/data conv=notrunc
dd with notrunc is necessary since most commands will try to truncate the file
on opening, which is not a supported operation.

You can get this data back as you would expect:
  th frame. This evenly reduces the data density in the file,
    reducing casual detectability of audio and/or side information
    modification.

Wave
  Type: Microsoft RIFF Waveform Format
  Extensions: .wav
  Limitations:
  o Only supports uncompressed formats
  o Only supports the single-DATA format
  o Does not support k-bit files, where k = 2^(3*i)+1 (i is an integer), if
    -wavehd is used
  o Does not support 4-bit or lower files
  Density: Commonly 1/16 to 1/4
  Speed: medium to high
  Casual detection: low to very low
  Formal detection: low
  Deniability: very high
  Notes:
  o Having .wav files in a collection is suspicious for most people. However,
    compressing them with FLAC for long-term storage mostly eliminates this
    suspicion while preserving the data.
  o The -wavhd causes Polysteg to use two bits per sample point instead of one;
    it doubles the data density, in exchange for slightly increasing sound
    distortion.
  o The -wavstride takes one argument and causes Polysteg to only use every
    th bit. This reduces data density and evenly reduces sound distortion.

Bitmap
  Type: Microsoft Device-Independent-Bitmap
  Extensions: .bmp, .dib
  Limitations:
  o Only supports 16-, 24-, and 32-bit formats
  o Only supports uncompressed bitmaps
  o Only supports Windows 3.1 bitmaps and later; OS/2 formats not supported
  Density: 3/32 to 6/16
  Speed: medium to high
  Casual detection: low
  Formal detection: low; possibly high with -bmpalpha
  Deniability: very high; medium to low with -bmpalpha in most cases
  Notes:
  o The bitmap engine modifies the least significant bit(s) of colour
    components of pixels.
  o Normally, one bit per colour component is used; if -bmphd is specified,
    it uses two instead.
  o Colours that have fewer bits than twice the bit density are ignored.
  o By default, the alpha channel is not modified, as it is non-noisy in
    the vast majority of images; this can be changed by using -bmpalpha.
  o Data density (and therefore colour distortion, evenly) can be reduced by
    using -bmprstride and -bmpcstride; the former makes Polysteg only use every
    th row; the latter makes it use only every th column within a
    row. It is recommended to use both of these in conjunction.
  o Having uncompressed bitmaps is often in and of itself suspicious. This
    suspicion can be reduced or eliminated by compressing the images with
    PNG for long-term storage, which is a more common format which will
    preserve Polysteg's data. (DON'T USE JPEG!)
    
HOW IT WORKS
Usable bits within each file are enumerated, then shuffled by encrypting the
data not used by Polysteg with a key; the first key comes from the master
password, the rest from the previous file in the chain. The first 640 bits
are used to identify the next file in the chain and its scrambling key; they
are encrypted with another key based on the master password.

At the whole system level, all bits not in the first 640 are enumerated and
shuffled using encryption on a stream of zero bytes and a key also derived from
the master password. The data in the bits are then encrypted with another
password-derived key.

All encryption uses AES-CBC, except for the highest level of encryption
(system-wide data encryption), which uses AES-ECB.

PROGRAM USAGE REFERENCE
Usage: ./polysteg.tcl options...
-h, -help, --help    Display this help message and exit.
-v, -verbose         Show extra messages.
-debug               Show debugging messages.
-d, -dir arg         Specify system root directory, defaults to .
-r, -root arg        Indicate the first media file to use.
-m, -mount arg       Specify mount directory.
-nourandom           Use /dev/random instead of /dev/urandom.
-format              Create a new system in the root directory.
-password arg        Specify password on the command line.
-noshuffledevbits    Don't shuffle bits within devices.
-noshuffleallbits    Don't shuffle global bits.
-o arg               Pass options to FUSE.
-bmphd               Use more bits in Microsoft Device Independent Bitmap files.
-bmpalpha            Modify alpha in Microsoft Bitmap files (generally a bad idea).
-bmprstride arg      Only use every th row in Microsoft Bitmap files.
-bmpcstride arg      Only use every th column in Microsoft Bitmap files.
-mp3apadding         Enable modification of MP3 padding bytes (only relevent with -mp3audio).
-mp3framestride arg  Only use every th MP3 frame (defaults to 1).
-mp3checkcrcs        Verify CRCs of protected MP3 frames.
-mp3audio            Enable modification of MP3 audio data (default if none specified).
-mp3sideinfo         Enable modification of MP3 side information.
-mp3bits             Enable modification of MP3 unused bits.
-wavhd               Use more bits in Microloft Waveform Audio Files.
-wavstride arg       Only use every th bit within Microsoft Waveform Audio Files.

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。