PNGステガノグラフィーツール

Security

概要

このPNG-Steganography-Toolは、PNG画像ファイルに対して暗号化済みデータを埋め込み、第三者に内容が分からない形で情報を隠すことを目的としたツールです。暗号部分にはAES-256-GCMを採用し、鍵はPBKDF2(100,000回)でパスフレーズから導出されます。ステガノグラフィーの手法としては画像ピクセルの最下位ビット(LSB)を利用し、視覚的な劣化を最小限に抑えつつデータを格納します。ワンファイルのPythonスクリプト構成で、実験や学習、軽量な隠蔽用途に向いています。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 4
  • ファイル数: 4
  • メインの言語: Python

主な特徴

  • AES-256-GCM による暗号化と認証で機密性と整合性を確保
  • PBKDF2(100,000回)でパスフレーズから強固な鍵を導出
  • PNG の LSB ステガノグラフィーで視覚的劣化を抑えてデータを埋め込み
  • シンプルな単一スクリプト(stege_tool.py)で容易に利用・解析可能

技術的なポイント

本ツールは「暗号化」と「隠ぺい(ステガノグラフィー)」を組み合わせる設計が最大の特徴です。まず秘匿したいファイルはAES-256-GCMで暗号化され、同時にタグ(認証情報)が付与されるため、復号時に改ざんの有無を検出できます。鍵導出にはPBKDF2を用い、反復回数を100,000回に設定することで辞書攻撃やブルートフォースに対する耐性を高めています。埋め込み手法としてはPNG画像のピクセル値の最下位ビット(LSB)を書き換える方式を採用。LSB法は実装が単純で視覚ノイズが小さい反面、埋め込み容量は画像の解像度と使用するチャネル数(RGB各チャネル)に依存します。例えば24ビットカラーの画像なら各ピクセルあたり最大3ビット(1チャネル1ビット)を使う設計が一般的です。実装上は暗号化済みバイト列にヘッダ(データ長、バージョン、nonceやsaltなど)を付加してからビット列化し、ピクセルのLSBへ順次埋め込む流れになります。復号時は埋め込まれたビットを元にバイナリを復元し、PBKDF2で鍵を再導出、AES-GCMで復号およびタグ検証を行います。PNGは可逆的な圧縮を使うため、LSBの操作がそのまま保持されやすい点も適していますが、画像編集や再圧縮(別フォーマットへの変換、透かし処理など)でデータが失われるリスクがあるため運用上の注意が必要です。加えて、ステガノグラフィー自体は検出回避を目的としますが、ステガノ解析(ステガノアナリシス)による検出可能性や法的・倫理的な側面も考慮するべきです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • img.png: file
  • readme.md: file
  • stego_tool.py: file

まとめ

暗号化とLSB埋め込みを組み合わせた、小規模で実用的なPNG隠蔽ツール。学習や軽い運用に適する。

リポジトリ情報:

READMEの抜粋:

PNG Steganography Tool

Python Version License Platform

A simple and secure tool for hiding encrypted files inside PNG images using LSB steganography and AES-256-GCM encryption.

Features

  • Strong Encryption: AES-256-GCM with PBKDF2 key derivation (100,000 iterations)
  • **Invi…