mcpField
C
cs-crypto

cs-crypto

github.com/alphaonedevセキュリティ49 回インストール
リポジトリ

cs-crypto について

cs-cryptoは、コードやコマンドラインで暗号技術を扱うためのスキルです。暗号化、ハッシュ、鍵管理、証明書、TLS、署名、ゼロ知識証明、耐量子アルゴリズムを扱います。

主な機能

  1. 01共通鍵・公開鍵暗号
  2. 02SHA-256とBlake3のハッシュ
  3. 03X.509証明書とTLS
  4. 04デジタル署名と検証
  5. 05基本的なゼロ知識証明
  6. 06耐量子アルゴリズム

活用シーン

  1. 01保存データやAPIペイロードの暗号化
  2. 02データの完全性と真正性の確認
  3. 03安全な接続のためのTLS設定
  4. 04プライバシー保護証明の検討

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill cs-crypto

インストール後、Claude Code で/cs-cryptoを入力して読み込まれたか確認します。

詳細

cs-crypto

目的

このスキルは、暗号化、ハッシュ化、鍵管理、TLS などのプロトコルを含む、データセキュリティのための暗号技術を実装・活用できるよう AI を支援し、コードや CLI 環境での安全な操作を実現します。

使用する場面

  • ファイルやメッセージの暗号化など、安全なデータ転送や保存を行う場合。
  • ユーザー入力のハッシュ化やトランザクションへの署名など、データの完全性や真正性を検証する場合。
  • API 用に TLS を設定するなど、安全な通信を扱う場合。
  • プライバシーを保護した計算のためのゼロ知識証明(ZKP)や、将来に備えた耐量子アルゴリズムなど、高度なセキュリティ機能を実装する場合。

主な機能

  • 共通鍵暗号:高速かつ安全なデータ暗号化のため、CBC モードまたは GCM モードの AES-128/256 を使用します。
  • 公開鍵暗号:鍵交換や署名のため、RSA(最大 4096 ビット)または ECC(secp256k1 など)を使用します。
  • ハッシュ化:標準的なダイジェストには SHA-256、高速なハッシュ化と 256 ビット出力には Blake3 を使用します。
  • PKI:CSR の作成と検証を含め、X.509 証明書を生成・管理します。
  • TLS:暗号スイートの選択など、安全なソケット通信のために TLS 1.3 ハンドシェイクを設定します。
  • デジタル署名:RSA または ECC(ECDSA など)を使用して署名を作成・検証します。
  • ZKP:データを公開せずに証明するための zk-SNARK などを基本的な形で実装します。
  • 耐量子暗号:鍵カプセル化には CRYSTALS-Kyber、署名には Dilithium などのアルゴリズムを使用します。

使用パターン

暗号処理は必ず安全なランダム鍵で初期化し、無効な入力に対する例外を処理してください。AES 暗号化では、まず鍵を生成し、1 回の関数呼び出しで暗号化と復号を行います。利用可能な場合は、鍵の保存にハードウェアセキュリティモジュール(HSM)を使用してください。ハッシュ化のパターンは、入力データ → ハッシュオブジェクト → 更新と確定です。TLS では、ソケットを SSL コンテキストでラップします。Python での使用パターンの例:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
key = b'32-byte-key-for-aes-256'  # Use secure key generation
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
encryptor = cipher.encryptor()
encrypted = encryptor.update(b"plaintext") + encryptor.finalize()

CLI では、入力を特定のフラグ付きの OpenSSL コマンドにパイプします。

よく使うコマンド/API

  • OpenSSL による AES 暗号化:openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -in input.file -out output.enc -k $ENCRYPT_KEY(セキュリティを強化するには -salt を使用します)。
  • RSA 鍵の生成:openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 を実行し、その後 openssl rsa -in private.pem -pubout -out public.pem で公開鍵をエクスポートします。
  • SHA-256 によるハッシュ化:echo -n "data_to_hash" | openssl dgst -sha256 -binary | base64 または Python で import hashlib; hash_obj = hashlib.sha256(b"data").digest() を実行します。
  • X.509 証明書の作成:openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -subj "/CN=example.com"。
  • コードでの TLS 設定:Python の ssl モジュールを使用します:import ssl; context = ssl.create_default_context(); context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")。
  • デジタル署名:openssl dgst -sha256 -sign private.pem -out signature.bin input.file で署名し、openssl dgst -sha256 -verify public.pem -signature signature.bin input.file で検証します。
  • ZKP の例:libzkp ライブラリを使用します。コードでは from libzkp import prove; proof = prove(statement, witness) を実行します。
  • 耐量子暗号の操作:OpenQuantumSafe で Kyber 鍵を生成します:oqsprov genpkey -algorithm Kyber512 -out key.pem。

統合に関する注意

まず、pip install cryptography openssl を実行するか、システムの OpenSSL を使用して、必要なライブラリをインストールしてください。クラウド KMS などの認証済みサービスでは、環境変数を設定します:export AWS_KMS_KEY=$SERVICE_API_KEY。その後、コードで os.environ.get('AWS_KMS_KEY') のように参照します。鍵は安全な保管庫で管理し、決してログに記録しないでください。複数のツールを連携するには、OpenSSL をスクリプトでラップします:subprocess をインポートし、subprocess.run(['openssl', 'enc', ...]) を実行します。Python や Go などの言語との互換性を確保してください。Go では crypto/aes パッケージを使用します。

エラー処理

暗号化関連の呼び出しは、特定の例外を捕捉するため、必ず try-except ブロックで囲んでください。例として、Python では from cryptography.exceptions import InvalidSignature; try: verifier.verify(signature, data) except InvalidSignature: raise ValueError("Signature invalid") のようにします。CLI では終了コードを確認してください。openssl コマンドが失敗した場合は、stderr を解析して「bad decrypt」などのエラーを確認し、正しいキーで再試行します。よくある問題には、無効なキー(コードの確認には openssl errstr を使用)、ハッシュの不一致(再計算して比較)、TLS ハンドシェイクの失敗(-debug フラグでデバッグ)があります。キーの長さやモードのエラーなど、状況がわかる情報とともにエラーを記録し、必要に応じて代替アルゴリズムにフォールバックしてください。

具体的な使用例

  1. AES-256-GCM で機密文字列を暗号化し、復号します: Python の場合:

    from cryptography.hazmat.primitives.ciphers.aead import AESGCM
    key = b'32-byte-long-secret-key-here'
    aesgcm = AESGCM(key)
    nonce = os.urandom(12)
    encrypted = aesgcm.encrypt(nonce, b"confidential data", None)
    decrypted = aesgcm.decrypt(nonce, encrypted, None)  # Output: b"confidential data"
    

    API ペイロードの保護に使用します。暗号化データとともに nonce を保存してください。

  2. RSA キーペアを生成し、メッセージに署名して、署名を検証します: CLI の場合:まず、キーを生成します:openssl genrsa -out private.pem 2048。署名します:openssl dgst -sha256 -sign private.pem -out sig.bin message.txt。検証します:openssl dgst -sha256 -verify public.pem -signature sig.bin message.txt(成功すると「Verified OK」と出力されます)。 コードの場合(Python):

    from cryptography.hazmat.primitives.asymmetric import rsa, padding
    from cryptography.hazmat.primitives import hashes
    private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
    signature = private_key.sign(b"message", padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())
    public_key = private_key.public_key()
    public_key.verify(signature, b"message", padding.PSS(...), hashes.SHA256())  # No error if valid
    

    トランザクションやドキュメントの認証に活用してください。

グラフ上の関係

  • 関連するクラスター:computer-science
  • リンク先:network-security(TLS と PKI の機能を共有)
  • 接続先:data-privacy(暗号化およびハッシュ機能を介して接続)
  • 重複する領域:blockchain-tech(デジタル署名と ZKP を通じて)
  • 統合先:quantum-computing(耐量子アルゴリズム向け)

コメント