コンテンツにスキップ

ランダムAPIキージェネレーター - 無料で安全な32文字キー

ランダムAPIキージェネレーターは、Web Crypto APIを用いて暗号学的に安全な、8文字から128文字までの任意の長さのランダムなAPIキーをブラウザ内で生成する無料ツールである。生成されたデータは外部のサーバーへ送信されず、認証用のキー作成に使える。

APIキー生成器

キーはWeb Crypto API (CSPRNG)を使用してブラウザで局所的に生成され、偏らない拒否サンプリングを使用します。サーバーには何も送信されません。
ローディング計算機...
📚

ドキュメンテーション

ランダムAPIキー生成ツールは、2つのコンピュータープログラム間でパスワードのようなコードとして使う、英字と数字のランダムな文字列を作成するツールです。このツールは訪問者のウェブブラウザー内だけで動作します。キーの長さは8文字から128文字まで選択でき、デフォルトは32文字です。

APIキーとは?

APIキーは、プログラムがサービスを利用する権限を持つことを証明するため、リクエストとともに送信する文字列です。ウェブサーバーはリクエストに応答する前にキーを確認します。ユーザー名とパスワードとは異なり、APIキーは通常、人ではなくアプリケーションやスクリプトを識別します。

キーは、誰にも推測できない場合に最も効果を発揮します。真の乱数を使う生成ツールなら、繰り返し文字や短く覚えやすい単語など、人が入力したキーに現れがちなパターンを避けられます。

この生成ツールの仕組み

このツールは、固定された62個の文字から各キーを作成します。内訳は、26個の大文字A–Z、26個の小文字a–z、10個の数字0–9です。長さがnのキーの場合、この集合からn文字を1文字ずつ選びます。

各文字はブラウザーのWeb Crypto API、具体的にはcrypto.getRandomValues()から取得されます。これは暗号学的に安全な疑似乱数生成器(CSPRNG)です。一方、JavaScriptのMath.random()は予測可能で、セキュリティが重要な値には適していません。

ランダムな1バイト(取り得る値は256通り)から62個の候補を公平に選ぶため、生成ツールは単純にbyte % 62を使うことができません。256は62で割り切れないため、単純な剰余演算では集合の先頭付近の文字が他の文字よりわずかに選ばれやすくなります。このツールは棄却サンプリングによって偏りを防ぎ、その偏りを生じさせるランダムバイトを破棄して、代わりに新しいバイトを取得します。そのため、完成したキーの各位置では、すべての文字が等しい確率で偏りなく現れます。

APIキーの生成方法

  1. キーの長さを8文字から128文字までの範囲で入力するか、デフォルトの32文字のままにします。範囲外の数値を入力するとエラーとして扱われ、許可された範囲内で最も近い長さが使われます。
  2. 「Generate」をクリックします。キーがブラウザー内だけで作成され、テキストボックスに表示されます。ボックスをクリックするとキー全体が選択されます。
  3. 「Copy」をクリックしてキーをクリップボードにコピーします。初回はブラウザーが許可を求める場合があります。
  4. 「Regenerate」をクリックすると、同じ長さで新しいキーが作成されます。「Reset」をクリックするとキーが消去され、長さがデフォルトの32文字に戻ります。

ツールはキーの下に、キーの文字数、文字集合のサイズ(常に62)、エントロピー(ビット)の3つの数値を表示します。

キーがサーバーに送信されたり、ログに記録されたり、保存されたりすることはありません。生成はローカルのJavaScriptコードで行われるため、生成中のブラウザーのネットワーク通信を確認しても、外部へのリクエストは発生していません。

生成可能なAPIキーの数の計算方法

一定の長さで生成できる異なるキーの数は、単純な式で求められます。

N=cnN = c^{n}

ここで、Nは生成可能なキーの数、cは文字集合の大きさ、nはキーの長さです。

このツールの文字集合のサイズは常に62です。デフォルトの長さ32文字では、次のようになります。

N = 62³² ≈ 2.27 × 10⁵⁷

この数は、次の式を使ってビット単位のエントロピーとしても表せます。

H=n×log⁡2cH = n \times \log_{2} c

ここで、Hはビット単位のエントロピーです。

32文字のキーでは、32 × log₂(62) ≈ 32 × 5.95 ≈ 190.5ビットです。

例:すべてのキーを試すのにかかる時間

攻撃者が1秒あたり10⁹個のキーを試せるとします。これは実際のシステムでは非現実的な速度です。可能なすべての32文字キーを試すには、次の時間がかかります。

2.27 × 10⁵⁷ ÷ 10⁹ = 2.27 × 10⁴⁸秒 ≈ 7.2 × 10⁴⁰年

比較として、宇宙の年齢は約1.4 × 10¹⁰年です。この長さのキーをすべて総当たりで探索することは、現実的な脅威ではありません。短いキーではこの数が急速に小さくなります。8文字のキーは62⁸ ≈ 2.18 × 10¹⁴通りしかないため、高速なコンピューターなら数日で探索できる可能性があります。

アプリケーションがAPIキーを使う理由

APIキーを使うと、サービスはどのアプリケーションがリクエストを送っているかを簡単に識別できます。これにはいくつかの理由があります。

認証。 サーバーは有効なキーなしで届いたリクエストを拒否し、ほとんどの軽微な不正利用を防ぎます。

利用状況の追跡。 クライアントごとに異なるキーを持たせられるため、サービスは各クライアントの利用量を測定し、キーごとに個別のレート制限を適用できます。

失効。 各キーが独立しているため、1つのキーが漏えいしても、他のクライアントに影響を与えずにそのキーだけを無効化できます。

APIキーは、一時的に発行され自動更新されるトークンを中心とした認証標準であるOAuth2.0よりも実装が簡単です。OAuthは、個人ユーザーデータを扱う一般公開サービスに適しています。APIキーは、長期間有効な認証情報を許容できる内部ツール、スクリプト、サービス間通信でよく使われます。

APIキーのセキュリティ対策

いくつかの対策によって、キー漏えいのリスクを減らせます。

  • キーをソースコードに保存しない。 バージョン管理の履歴を消去するのは困難で、公開リポジトリは漏えいした認証情報を常時検索されています。代わりに、キーは環境変数やシークレット管理ツールに保存します。
  • キーを定期的にローテーションする。 数か月ごとにキーを交換すれば、漏えいしたキーが攻撃者にとって有効であり続ける期間を短くできます。
  • キーに必要最小限のアクセス権だけを付与する。 データの読み取りだけを行うキーに、データの書き込みや削除まで許可してはいけません。
  • 異常な活動に注意する。 たとえば、1つのキーからのリクエストが突然急増する場合などです。

制限事項

このツールは生成したキーの記録を保持しないため、そのキーが過去に一度も生成されていないとは保証できません。ランダムに生成した32文字のキー2つが一致する確率は、 (2.5 cm)2.27 × 10⁵⁷回に1回ほどです。通常の利用ではほぼゼロとみなせますが、データベースの主キーのように一意性を絶対に保証する必要があるシステムでは、新しい値をサーバー上の既存値と照合する必要があります。

文字集合は大文字、小文字、数字に固定されています。!や-のような記号は含まれていません。そのため、ほとんどのURL、ヘッダー、設定ファイルにエスケープ処理なしで安全に貼り付けられます。

よくある質問

APIキー生成ツールとは?

ソフトウェアアプリケーション間の認証情報として使うランダムな文字列を生成するツールです。このツールは、ブラウザーの暗号学的に安全な乱数生成器を使い、8文字から128文字までのキーを、62通りの文字から作成します。

このツールのキーは本番環境で使えるほど安全ですか?

乱数自体は暗号学的に安全です。ただし、全体的な安全性は、その後のキーの保存方法と送信方法にも左右されます。キーをソース管理にコミットせず、必ずHTTPS経由で送信し、定期的にローテーションしてください。

どのくらいの長さを選ぶべきですか?

デフォルトの32文字なら、約2.27 × 10⁵⁷通りの組み合わせがあり、現実的な総当たり攻撃で探索できる数をはるかに上回ります。16文字のような短いキーは、リスクの低い内部ツールに適している場合があります。非常に長いキーは保護をほとんど追加しない一方、保存や貼り付けが難しくなります。

任意の長さを設定できますか?

はい。長さの入力欄には、8から128までの任意の整数を入力できます。文字集合自体(A–Z、a–z、0–9)は固定されたままです。

このツールは生成したキーを保存または送信しますか?

いいえ。すべてのキーはブラウザー内のローカルJavaScriptで生成されます。サーバーに送信されたり、ログに記録されたり、保存されたりすることはありません。

APIキーとOAuthトークンの違いは何ですか?

APIキーは、誰かが失効させるまで有効であり続ける、長期間有効な認証情報です。OAuthトークンは一定時間が経過すると自動的に期限切れになり、ユーザーが直接操作しなくても更新できます。OAuthは個人データを扱う公開サービスに適しており、APIキーはより単純な用途、内部利用、開発用途に適しています。

このツールはどのブラウザーに対応していますか?

Web Crypto APIを提供するブラウザーであれば対応しています。過去十年間にリリースされたChrome、Firefox、Safari、Edge、Operaのすべてのバージョンが該当します。このAPIが利用できない場合、ツールはエラーメッセージを表示します。安全ではないMath.random()にフォールバックすることはありません。