Skip to content

ipusiron/uesugi-cipher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

上杉暗号ツール(Uesugi Cipher Tool)

Day12 - 生成AIで作るセキュリティツール100

上杉暗号ツール(Uesugi Cipher Tool) は、字変四十八バージョンの上杉暗号を体験するWebツールです。

このツールは、戦国時代に宇佐美定行が記したとされる「字変四十八」方式に基づく換字式暗号を、いろは順の7×7マトリクスで再現しています。 各文字を「行番号×列番号」で暗号化・復号し、視覚的に理解できるインタフェースを提供します。

🌐 デモページ

👉 https://ipusiron.github.io/uesugi-cipher/

📸 スクリーンショット

以下は実際の画面例です。

初期画面

初期画面

🔍 特徴

  • 「字変四十八」方式に基づく日本語換字暗号を再現
  • 7×7のいろは順マトリクスによる座標変換
    • 右上スタートの正確な座標系
  • 暗号化・復号の双方向変換
  • アラビア数字(5-7)と漢数字(五七)の両対応
  • 未収録文字や記号はそのまま出力
    • 濁点・半濁点・促音の自動変換機能あり
  • 暗号表に行・列番号を表示し視認性を向上
  • ブラウザだけで動作、インストール不要

✅ 視覚的機能

  • 🎨 使用文字のハイライト(金色グラデーション + パルスアニメーション)
  • 🏯 和風モダンなデザイン
  • 📱 レスポンシブ対応

✅ 実用的機能

  • 📋 結果のワンクリックコピー(純粋な結果のみ)
  • ⚠️ 入力検証と分かりやすいエラーメッセージ
  • 🔄 実行ごとのハイライトリセット

📚 歴史的背景

この暗号は、上杉謙信の家臣・宇佐美定行が軍事用に記した『武経要略』に由来する「字変四十八」方式がベースです。 いろは48文字を7×7の表に並べ、文字を座標化するという仕組みは、古代ギリシャのポリュビオス暗号に類似しており、日本における歴史的な暗号文化を象徴しています。

✅ 教育的価値

  • いろは歌の正確な配置表示
  • 暗号化・復号過程の視覚化
  • 古典暗号の理解促進

🎯 使用例

  • 「てきみゆ」→「5-7 6-3 6-6 6-4」(アラビア数字の場合) or 「五七 六三 六六 六四」(漢数字の場合)
  • 「ひみつのてがみ」→「7-2 6-6 3-5 4-5 5-7 2-7 6-6」 or 「七二 六六 三五 四五 五七 二七 六六」
  • 使用した文字が表で美しく光る ✨

📁 フォルダー構成

uesugi-cipher/
├── README.md                   # プロジェクトの説明(このファイル)
├── LICENSE                     # MITライセンス
├── docs/
│   └── index.html              # 字変四十八の上杉暗号ツール本体(Web UI)
├── assets/
│   └── screenshot.png          # スクリーンショット画像
└── .github/
    └── workflows/
        └── deploy.yml          # GitHub Pages 用の自動デプロイ設定

🎬 上杉暗号が登場する作品

  • 「暗号史の中の日本~戦国時代の『上杉暗号』~」(HH News & Reports)では、上杉謙信の家臣・宇佐美定行が『武経要略』に記した「字変四十八」として紹介されています。これは7×7の仮名表を使った換字式暗号で、語句の置き換えに数字を用いる形式とされています。
  • 漫画・アニメ『Dr. Stone: Science Future』では、上杉暗号に相当する方式がラジオ通信で使用され、敵に内容を傍受されにくくする意図で登場しています
  • 学研出版『暗号サバイバル学園』の児童向けノベルシリーズでは、シーザー暗号やモールス信号と並んで、「上杉謙信の暗号」も解読対象として登場し、子どもたちが謎解きしながら学べる構成になっています。

字変四十八の上杉暗号:安全性分析

🔒 暗号方式の分類と基本特性

暗号タイプ: 単換字暗号(monoalphabetic substitution cipher)

  • 各ひらがな文字が固定の座標ペア(例:「て」→「5-7」)に1対1対応
  • 文字の置換関数が一定で変化しない

⚠️ 主要な脆弱性

1. 頻度分析攻撃

日本語の文字頻度(例):
「の」「に」「は」「を」→ 高頻度
「ゑ」「ゐ」→ 現代では使用頻度極低

暗号文でも同じパターンが残る:
頻出する座標 → 「の」「に」「は」の可能性大

2. パターン分析

  • 同一文字の反復:「ここ」→「4-3 4-3」
  • 語尾パターン:「です」「ます」の座標パターン
  • 助詞の固定パターン:「は」「が」「を」の座標

3. 鍵空間の問題

  • 鍵空間: いろは歌の配置は固定 → 実質的に鍵なし
    • 鍵ありバージョンとしては、表の行・列の番号を入れ替える方法、番号の代わりに和歌を使う方法などもある。
  • 座標の読み方(列-行 vs 行-列)程度の違いしかない

🎯 具体的な攻撃シナリオ

短文の場合(10-20文字)

暗号文: 「5-7 6-3 6-6 6-4」
↓
1. 4文字の短い単語を推測
2. 「○○○○」パターンの日本語を辞書検索
3. 「てきみゆ」「ひみつの」等の候補
4. 1つでも当たれば4文字分の対応表が判明

長文の場合(100文字以上)

1. 頻度分析で「の」「に」「は」の座標を特定
2. パターン分析で語尾「ます」「です」を特定  
3. 徐々に対応表を復元
4. 残りの文字を辞書攻撃で確定

濁点・半濁点・促音対応機能

いろは歌には濁点・半濁点・促音が含まれていないため、現代日本語の「が」「ぷ」「っ」などの文字はそのままでは暗号化できません。 本ツールでは、これらの文字を自動的に対応する清音に変換してから暗号化を行います。

🔄 自動文字変換

濁点 → 清音

濁点文字 変換後 濁点文字 変換後 濁点文字 変換後
濁点文字 変換後

半濁点 → 清音

半濁点文字 変換後

その他の文字

文字 変換後 説明
促音(小さい「つ」)
(削除) 長音記号
小さい「や」
小さい「ゆ」
小さい「よ」
小さい「あ」
小さい「い」
小さい「う」
小さい「え」
小さい「お」

📝 使用例

例1: 基本的な濁点変換

入力: ありがとう
変換: ありかとう
暗号化結果: 2-1 1-5 2-6 2-4 3-1 3-4
変換通知: 🔄 文字変換: 「が」→「か」

例2: 複数文字の変換

入力: がんばって
変換: かんはつて
暗号化結果: 2-4 5-1 2-6 1-3 1-7
変換通知: 🔄 文字変換: 「が」→「か」, 「ば」→「は」, 「っ」→「つ」

例3: 半濁点の変換

入力: ぷるぷる
変換: ふるふる
暗号化結果: 3-2 3-5 3-2 3-5
変換通知: 🔄 文字変換: 「ぷ」→「ふ」, 「ぷ」→「ふ」

⚠️ 注意事項

復号時の考慮点

  • 復号結果は変換後の清音で表示されます
  • 元の濁点・半濁点は復元されません
  • 例:「がんばって」→暗号化→復号→「かんはつて」

意味の変化

一部の文字変換により、意味が変わる場合があります:

元の文字 変換後 影響例
「時間」→「しかん」 「じかん」→「しかん」 「歯科ん」のような音に
「気持ち」→「きもち」 「きもち」→「きもち」 変化なし
「頑張って」→「かんはつて」 「がんばって」→「かんはつて」 意味が不明瞭に

推奨事項

  • 学習・体験目的: 文字変換機能により現代日本語も体験可能
  • 歴史的再現: より正確な体験には、変換が発生しない文章の使用を推奨
  • 重要文書: 現代暗号の使用を強く推奨

🎯 対応範囲

対応済み

  • 基本的な濁点・半濁点(か行、さ行、た行、は行)
  • 促音(っ)
  • 長音(ー)
  • 拗音・小書き文字(ゃ、ゅ、ょ、ぁ、ぃ、ぅ、ぇ、ぉ)

未対応

  • カタカナ
  • 漢字
  • 英数字
  • 記号類

未対応文字が含まれる場合は、暗号化できない文字として警告表示されます。

📄 ライセンス

MIT License - 詳細は LICENSE ファイルを参照してください。

🛠 このツールについて

本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。 このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを100日間にわたり制作・公開していく取り組みを行っています。

プロジェクトの詳細や他のツールについては、以下のページをご覧ください。

🔗 https://akademeia.info/?page_id=42163

About

字変四十八バージョンの上杉暗号を体験するWebツールです。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published