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ホワイトリストの組み合わせが必要です。