API と OAuth
まず、他の人が言ったように、ユーザーのパスワードを使用して API にアクセスするべきではなく、OAuth トークンを取得する必要があります。これにより、パスワードを必要とせずに、そのユーザーに代わって行動できるようになります。これは、多くの API で使用される一般的なアプローチです。
鍵交換
安全でない接続を介して情報を交換するというより一般的な問題を解決する必要がある場合は、他の回答で言及されているように、いくつかの鍵交換プロトコルがあります。
一般に、鍵交換アルゴリズムは盗聴者から保護されていますが、ユーザーの ID を認証しないため、中間者攻撃に対して脆弱です。
Diffie Hellmanのウィキペディアのページから:
元の説明では、Diffie-Hellman 交換自体は通信当事者の認証を提供しないため、中間者攻撃に対して脆弱です。中間の人物が 2 つの異なる Diffie-Hellman 鍵交換を確立する可能性があります。1 つは Alice と、もう 1 つは Bob との鍵交換です。事実上、Alice から Bob になりすまし、逆の場合も同様であり、攻撃者が復号化 (および読み取りまたは保存) してから再暗号化できるようにします。彼らの間で交わされたメッセージ。この種の攻撃を防ぐには、通常、通信する当事者を相互に認証する方法が必要です。STSなどの Diffie-Hellman のバリアントを代わりに使用して、これらのタイプの攻撃を回避できます。
攻撃者が送信者または受信者の代わりに自分の ID (署名キー) を挿入できる場合、STS でさえ安全ではありません。
ID と認証
これはまさに、SSL が解決するように設計された問題です。理論的にはドメイン名の所有者などを検証した「信頼できる」署名機関の階層を確立することにより、Web サイトに接続している誰かが、実際にそのドメインのサーバーと通信していることを確認できます。 、そして間に挟まれた中間者ではありません。
接続を暗号化するために必要な構成を提供する自己署名証明書を作成できますが、認証されていない Diffie-Hellman 鍵交換が保護しないのと同じ理由で、中間者攻撃から保護することはできません。
https://www.startssl.com/から 1 年間有効な無料の SSL 証明書を取得できます- 私は個人サイトに使用しています。彼らは、申請した人を自動的にチェックするだけなので、それが意味するものは何でも「信頼できる」とは言えませんが、無料です. 費用がほとんどかからないサービスもあります (英国の 123-Reg からは年間 10 ポンド)。