Qithub-BOT / QiiCipher

✅ GitHub の SSH 公開鍵でファイルを暗号化およびローカルの秘密鍵で復号・署名・検証するスクリプトのリポジトリです。
https://qiita.com/KEINOS/items/2abce1e5b15d799ac6d7
Creative Commons Attribution Share Alike 4.0 International
4 stars 3 forks source link

shellcheck shellspec License

QiiCipher

GitHub 上の公開鍵を使ってファイルの暗号化と署名確認、ローカルの秘密鍵で復号や署名をするシェル・スクリプトです。(POSIX 準拠。bash zsh bourne shell などで動作します)

Note: @yoshi389111 さんによる、Go 言語版 git-caesar もオススメ。


QiiCipher で使えるコマンドは以下の通りです。

機能 コマンド 使用例
鍵生成(Key Generate) keygen $ ./keygen KEINOS@example.com MyKeyName
暗号化(Encrypt) enc $ ./enc KEINOS himitsu.txt
アーカイブ&暗号化(Archive) archive WIP
復号(Decrypt) dec $ ./dec ~/.ssh/id_rsa himitsu.txt.enc himitsu.txt
復号&解凍(DeArchive) dearchive WIP
動作確認(Check) check $ ./check KEINOS ~/.ssh/id_rsa
電子署名(Sign) sign $ ./sign KEINOS ~/.ssh/id_rsa himitsu.txt
署名の確認(Verify) verify $ ./verify himitsu.txt KEINOS himitsu.txt.sig
鍵長の確認(Check Key Length) checkkeylength $ ./checkkeylength KEINOS

ダウンロード


各コマンドの詳細

鍵生成スクリプト(keygen.sh

このシェル・スクリプトは RSA鍵のキーペアを生成します。鍵長は安全のため4096bitに設定されています。 キーペアは ~/.ssh/ に保存されます。

構文

$ ./keygen <email> <key name>
引数

ソース


暗号化スクリプト(enc.sh

このシェル・スクリプトは GitHub 上の公開鍵一覧(https://github.com/<gihub user>.keys)から一番最初の公開鍵を使い暗号化ファイルを作成します。

構文

$ ./enc <github user> <input file> [<output file>]
引数
オプション

ソース


復号スクリプト(dec.sh

このシェル・スクリプトはローカルの秘密鍵を使い暗号ファイルを復号します。

構文

$ ./dec <private key> <input file> <output file>
引数

ソース


動作テスト・スクリプト(check.sh

このシェル・スクリプトはカレント・ディレクトリにダミー・ファイルを作成し「暗号化」、「復号」および「比較」のチェックを行います。

構文

$ ./check <github user> <private key>

ソース


署名スクリプト

このシェル・スクリプトは、自分の秘密鍵を使ってファイルの署名を作成します。

構文

$ ./sign <github user> <private key> <input file> [<output file>]
オプション
参考文献

署名の検証スクリプト

このシェル・スクリプトは、ファイルが正しく署名されたものか検証します。

構文

$ ./verify <verify file> <github user> [<sign file>]
オプション

鍵長の検証スクリプト

このシェル・スクリプトは、RSA鍵の鍵長を表示します。 また、1024bit以下の短い鍵長に対する危険性について注意喚起し、推奨される対応についても表示します。

構文

$ ./checkkeylength <github user>

ソース


注意

動作検証済み環境

  1. macOS HighSierra

    • OSX 10.13.5(2018/07/13)
    • $ openssl version : LibreSSL 2.2.7
    • $ ssh -V : OpenSSH_7.6p1, LibreSSL 2.6.2
    • $ bash --version : GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
  2. Linux Ubuntu

    • Ubuntu 20.04.2 LTS(2021/05/28)
    • $ openssl version : OpenSSL 1.1.1f 31 Mar 2020
    • $ ssh -V : OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020
    • $ bash --version : GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)

メンテナ

このスクリプトは Qiita/Qiitadon の同人サークル「Qithub-ORG」によってメンテナンスされています。

コラボレーション(参加)

不具合報告、改善提案、PR 方法やルールなどは CONTRIBUTING.md をご覧ください。