cs-crypto について
cs-cryptoは、コードやコマンドラインで暗号技術を扱うためのスキルです。暗号化、ハッシュ、鍵管理、証明書、TLS、署名、ゼロ知識証明、耐量子アルゴリズムを扱います。
主な機能
- 01共通鍵・公開鍵暗号
- 02SHA-256とBlake3のハッシュ
- 03X.509証明書とTLS
- 04デジタル署名と検証
- 05基本的なゼロ知識証明
- 06耐量子アルゴリズム
活用シーン
- 01保存データやAPIペイロードの暗号化
- 02データの完全性と真正性の確認
- 03安全な接続のためのTLS設定
- 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 フラグでデバッグ)があります。キーの長さやモードのエラーなど、状況がわかる情報とともにエラーを記録し、必要に応じて代替アルゴリズムにフォールバックしてください。
具体的な使用例
-
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 を保存してください。
-
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(耐量子アルゴリズム向け)