敏感データの暗号化と復号化
概要
APIリクエストを処理する際、特に敏感なデータ(例えばカード番号、CVV、有効期限など)を扱う場合、そのデータの安全性を確保する必要があります。これらの敏感なデータを保護するために、RSA暗号化アルゴリズムを使用し、ECBモードとOAEPPaddingパディング方式を組み合わせて暗号化を行います。
RSA暗号化
暗号化アルゴリズム
RSA/ECB/OAEPPadding
- RSA:非対称暗号化アルゴリズム で、公開鍵と秘密鍵を使用してデータを暗号化および復号化します。
- ECB(電子コードブックモード):暗号化モードで、各ブロックを独立して暗号化し、同じ長さの平文データブロックを暗号化するのに適しています。
- OAEPPadding:RSAアルゴリズムにおけるパディング方式で、追加のセキュリティを提供し、特定の攻撃から守ります。
暗号化と復号化のプロセス
- 鍵ペアの生成:
- RSA公開鍵と秘密鍵を生成します。公開鍵はデータの暗号化に使用し、秘密鍵は復号化に使用します。前回のドキュメント鍵ペアの生成を参考にして鍵を生成し、秘密鍵は安全に保管し、公開鍵はCodePayプラットフォームにアップロードしてください。
- RSA暗号化を使用するには、CodePayの公開鍵を使用するだけでよいため、鍵の生成は不要です。CodePayから返される敏感データを復号化する必要がある場合にのみ、秘密鍵を使用します。現在のビジネスシナリオでは、開発者に敏感なデータが返されることはないため、このステップは無視しても問題ありません。
- 敏感データの暗号化:
- RSA公開鍵を使用して敏感データを暗号化します。APIを使用する シナリオでは、CodePayの公開鍵
GATEWAY_RSA_PUBLIC_KEYを使用してデータを暗号化してください。 - 暗号化の際、ECBモードとOAEPPaddingパディング方式を使用します。
- 暗号化されたデータの送信:
- 暗号化されたバイト配列をBase64文字列にエンコードし、ネットワークを介して転送できるようにします。暗号化されたデータはAPIを通じて送信します。
- データの復号化:
- 受信者は暗号化された文字列をBase64デコードした後、RSA秘密鍵を使用して暗号化されたデータを復号化します。
- 復号化時には、同じパディング方式(OAEPPadding)を使用します。
ヒント
CodePayから返されたメッセージやWebhook通知メッセージのデータに暗号化されたデータが含まれている場合は、同様の方法で秘密鍵 APP_RSA_PRIVATE_KEY を使用して復号化してください。