Web Crypto API を使ってブラウザ内で RSA-2048 または RSA-4096 の鍵ペアを生成します。鍵は標準の PEM 形式でエクスポートされ、OpenSSL、SSH、あらゆる言語の暗号ライブラリですぐに使えます。
RSA-OAEP と SHA-256 を使用します。これは現代的で安全な RSA 暗号方式です。OAEP は暗号化前にランダムなパディングを加えるため、同じ平文と鍵でも暗号文は毎回一意になります。
PEM エンコードされた RSA 公開鍵または秘密鍵(PKCS#8 / SubjectPublicKeyInfo 形式)を貼り付けると、既存の鍵で暗号化・復号できます。OpenSSL、Node.js、Python、Java で生成された鍵と互換性があります。
鍵、平文、暗号文がブラウザの外に出ることはありません。鍵の生成・暗号化・復号のいずれの際もサーバー通信は発生しません。実際の鍵を使ったテストにも安全です。
RSA は公開鍵と秘密鍵のペアを使う非対称暗号アルゴリズムです。公開鍵で暗号化されたデータは、対応する秘密鍵でしか復号できません。RSA は安全な鍵交換、デジタル署名、対称鍵などの少量の機密データの暗号化に広く使われています。
RSA-OAEP(Optimal Asymmetric Encryption Padding)は、暗号化前にランダムなパディングを加えることで意味論的安全性を実現するパディング方式です。OAEP は現代の標準であり、特定の攻撃に脆弱な古い PKCS#1 v1.5 パディングよりも推奨されます。
RSA-2048 は 2048 ビットの鍵を使い、現在ほとんどの用途で安全とされています。RSA-4096 は 4096 ビットの鍵を使い、より高い安全性を提供しますが、鍵生成に時間がかかり処理も遅くなります。長期的なデータ保護には RSA-4096 が推奨されます。
RSA-OAEP-SHA256 では、最大平文サイズは鍵のバイト数から 66 を引いた値です。RSA-2048 では 190 バイト、RSA-4096 では 446 バイトです。より大きなデータには、ハイブリッド暗号を使ってください。データを AES で暗号化し、AES 鍵だけを RSA で暗号化します。