API セキュリティ
私たちのAPIはHTTPS
プロトコルに基づいており、POST
メソッドでJSON
データを送信します。データの改ざんを防ぎ、セキュリティを確保するために、APIはクライアント認証を要求し、Basic AuthおよびRSA署名認証の2つの認証方式をサポートしています。また、機密データの保護にはAESおよびRSAの2つの暗号化方式を提供しています。本稿ではこれらの認証機構と暗号化方法を紹介します。
認証
1. RSA署名認証(推奨)
RSA署名認証は、リクエストデータに署名を施すことで、受信者が送信者の公開鍵を使用してリクエストの真正性を検 証できる仕組みです。これにより、データの改ざん防止と送信者の身元確認が可能です。
動作原理
クライアントは自分のRSA秘密鍵を使用してリクエストメッセージに署名します。サーバーは交換されたクライアントの公開鍵で署名を検証します。
利点
- Basic Authに比べてセキュリティが高く、非対称暗号化とデジタル署名を使用。
- 送信者の身元とメッセージの完全性を効果的に保証。
- リプレイ攻撃や中間者攻撃を防止。
欠点
- 公私鍵の管理を伴うため、実装が複雑。
2. Basic Auth
Basic Authenticationは、ユーザー名とパスワード(またはトークン)をBase64でエンコードし、リクエストヘッダーに送信する簡単な認証方式です。しかし暗号化は行われないため、HTTPSとIPホワイトリストの組み合わせが必要です。
現バージョンではBasic Authはサポートされておらず、次回のリリースで追加予定です。
動作原理
リクエスト側はユーザー名:パスワード
形式をBase64でエンコードし、Authorization
ヘッダーに含めます。サーバーはデコードしてユーザー名とパスワードを検証します。
利点
- 実装が簡単。
- 多くのHTTPクライアントとサーバーサイドライブラリが標準でサポート。
欠点
- Base64は単なるエンコードであり、暗号化にはならない。
- ユーザー名とパスワードが毎回送信されるため、漏洩リスクが高い。
データの完全性と安全な通信を保証するため、Basic AuthではなくRSA署名認証の使用を推奨します。
データ暗号化
データ漏洩や改ざんを防ぐために、機密データの保護にはRSAまたはAES暗号化が使用されます。
1. RSA暗号化(推奨)
RSAは非対称暗号化アルゴリズムであり、公開鍵で暗号化し、秘密鍵で復号します。少量の機密データの暗号化に適しています。
動作原理
送信者は受信者の公開鍵でデータを暗号化し、受信者は自分の秘密鍵で復号します。
利点
- 高いセキュリティ。
- 公開鍵は自由に配布可能で、秘密鍵は安全に保持。
欠点
- 公私鍵の管理が必要で、実装が複雑。
2. AES暗号化
AESは対称暗号化アルゴリズムであり、同じ鍵で暗号化と復号を行います。大量データの暗号化に適しています。
現バージョンではAES暗号化はサポートされておらず、次回のリリースで追加予定です。
動作原理
送信者と受信者は同じ鍵を共有し、データの暗号化と復号に使用します。
利点
- 高速かつ効率的。
- ファイルや長いテキストの暗号化に適している。
欠点
- 鍵交換が必要で、鍵の管理が課題。
少量の機密データにはRSA暗号化を推奨します。