暗号学的疑似乱数トークンジェネレーター

Web Cryptoの乱数から6形式のトークン候補を生成します.表示するエントロピーは理論値で,利用先への登録,権限,有効期限,失効,保管は別途管理が必要です.

読み込み中...

このツールが向いている用途

操作欄に戻る ↑

ブラウザのWeb Crypto APIを使用し、暗号論的擬似乱数からHex、Base64、Base64URL、UUIDv4、英数字、カスタム文字セットの各種トークンをまとめて生成します。

まず試せること

形式でHexを選び、長さを16バイト、件数を2に設定して「再生成」を押し、32文字のランダム文字列が2件並んで出力されることを確認してください。

利用条件

長さ指定の単位は形式ごとに異なります。画面上に直接生成値を表示する乱数作成ツールであり、本番環境での鍵の安全な保管・失効管理機能はありません。エントロピー値は理論上の指標です。

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

CSPRNGとローカル生成の基本原理

暗号学的に安全な擬似乱数生成器(CSPRNG: Cryptographically Secure Pseudo-Random Number Generator)は,セキュリティが要求されるアプリケーションにおいて予測不可能な数値を生成するための根幹技術です.一般的なプログラミング言語や環境で提供される乱数生成関数(例えばJavaScriptにおける Math.random() など)は,統計的な分布の均一性を重視して設計されており,生成アルゴリズムの内部状態が推測可能であるため,暗号用途やセキュリティトークンの生成には適していません.

本ツールでは,最新のWebブラウザに標準実装されている Web Crypto API の getRandomValues() メソッドを採用しています.このメソッドはWeb Crypto仕様に基づき,暗号用途を想定した乱数値を型付き配列へ格納します.具体的な乱数源はブラウザとOSの実装に依存します.

また,本ツールはセキュリティとプライバシーの保護を最優先に設計されており,すべての乱数生成処理はユーザーが使用している端末のローカル環境(ブラウザ内部)で完結します.生成されたAPIキーやセキュアトークンのデータがインターネットを経由して外部のサーバーに送信されることは一切なく,バックグラウンドでの通信経路も存在しません.

これにより,ただし,表示後のクリップボード,保存ファイル,共用端末での取り扱いは別途管理が必要です.本ツールは完全なスタンドアロンで動作するため,1〜50件のトークンを瞬時かつ安全に一括生成することが可能ですが,Web Crypto APIに対応していない古いブラウザや,必要な暗号化コンテキストが提供されない環境では,安全を担保するために生成処理自体を停止するフェイルセーフ機構を備えています.

第2章

Hex・Base64・Base64URL形式とバイト長の仕様

本ツールでは,出力される文字列のフォーマットとして,Hex(16進数),Base64,および Base64URL の3種類のバイナリエンコーディング形式を提供しています.これらの形式を選択した場合,ユーザーがスライダー等で指定する「長さ」パラメータは,最終的に出力される文字列の文字数ではなく,乱数の源泉となるバイト配列の長さ(4バイトから64バイトの範囲)を意味します.

この設計は,暗号強度が直接的に元データのバイト数(エントロピー量)に依存するためです.

Hex(16進数)形式を選択した場合,生成された乱数バイト配列の各1バイト(8ビット)は,0から9およびaからfまでの2文字の16進数文字列に変換されます.したがって,例えば長さとして32バイトを指定した場合,出力される文字列は64文字となります.Hexは文字種が限定され,1バイトを2文字で表すため出力長を把握しやすい形式です.

一方,Base64形式は,バイナリデータを64種類の印字可能文字(大文字・小文字のアルファベット,数字,および + と /)の組み合わせで表現するエンコーディング手法です.3バイトのバイナリデータを4文字のテキストに変換するため,データサイズを抑えつつ安全にテキストベースのプロトコル上で送信できるという利点がありますが,出力文字数は元バイト数の約1.33倍になり,必要に応じて末尾にパディング文字(=)が付与されます.

さらに,Base64URL形式は,Base64の文字集合の中でURLやファイルシステムにおいて特別な意味を持つ記号(+ および /)を,それぞれ -(ハイフン)と _(アンダースコア)に置換し,末尾のパディング文字を省略する仕様です.この形式は,HTTPクッキーやURLのクエリパラメータ,OAuthやOpenID ConnectにおけるCSRFトークンなど,Web標準技術との親和性が非常に高く,エンコード・デコード時のエスケープ処理によるトラブルを未然に防ぐことができます.

第3章

UUID v4の生成ロジックと固定形式

UUID(Universally Unique Identifier)は,分散コンピューティング環境において,中央集権的な管理機構に依存することなく,世界中で一意であることを識別するために考案された128ビットの識別子です.様々なバージョンが存在する中で,本ツールでは乱数に基づくバージョン4(UUID v4)を採用しています.

UUID v4は,全体の128ビットのうち,バージョン情報とバリアント情報を識別するための特定の数ビットを除き,残りの122ビットすべてに暗号学的に安全な乱数を利用します.

本ツールの実装では,実行環境の Web Crypto API が randomUUID() メソッドをサポートしている場合は,ブラウザのネイティブ実装を優先的に呼び出して高速かつ標準準拠のUUIDを生成します.もし該当メソッドが利用できないフォールバック環境においては,getRandomValues() を用いて16バイトの乱数配列を生成し,手動でビット演算を行ってバージョン4およびバリアント1の規定に従った固定ビットの書き換えを実行します.

具体的には,7バイト目の上位4ビットを 0100(バージョン4)に,9バイト目の上位2ビットを 10(バリアント1)に上書きします.

UUID v4の出力フォーマットは xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx(各 x は任意の16進数,y は特定の16進数)という8-4-4-4-12文字のハイフン区切りの36文字の文字列に固定されています.そのため,Hex形式やBase64形式とは異なり,ユーザーがUI上で長さや文字数を指定することはできず,常にこの標準化された固定形式でのみ出力されます.

データベースの主キーや,分散システムにおける一時的なトランザクションIDとして利用する際に,極めて低い衝突確率でシステム間の識別子の重複を避けることができます.

第4章

英数字・カスタム形式とRejection Sampling

英数字ミックス形式およびカスタム形式は,ユーザーが視認しやすいトークンや,特定の文字種制約があるシステム向けのパスコード生成に適したモードです.これらの形式では,長さの指定はバイト数ではなく,出力される文字列の「文字数」(4文字から128文字)として扱われます.

英数字形式では,大文字,小文字,数字,記号のオン・オフを切り替える機能や,視認性を低下させる類似文字(i,I,1,l,o,O,0)を除外する機能を利用できます.カスタム形式では,ユーザーが任意の文字列を直接入力し,その文字集合のみを使用してトークンを構成します.

入力された文字集合は内部で自動的に重複が排除され,一意な文字種の配列として再構成されます.なお,カスタム文字集合が空の場合は,安全性を担保できないためトークンの生成処理は直ちに停止されます.

任意の文字集合から一様ランダムに文字を抽出する際,開発者が陥りやすい実装上の罠として「剰余バイアス(Modulo Bias)」の問題があります.これは,乱数を文字集合の要素数で割った余り(モジュロ演算)を利用してインデックスを決定する手法で発生します.文字集合の要素数が2の冪乗でない場合,最大値付近の余りにおいて,インデックスの前半部分が後半部分よりもわずかに出現確率が高くなるという偏りが生じます.

暗号用途においては,このごく僅かな偏りが推測攻撃の糸口となる可能性があります.

この剰余バイアスを完全に排除するため,本ツールでは文字抽選において32bit rejection sampling(棄却サンプリング)と呼ばれる厳密なアルゴリズムを実装しています.具体的には,32ビットの乱数空間において,文字集合の要素数で割り切れない余剰の領域を計算し,生成された乱数がその余剰領域に該当した場合はその値を棄却し,条件を満たすまで新たな乱数の取得を繰り返します.

これにより,文字集合内のすべての文字が数学的に等確率で抽出される一様分布を保証しています.

ただし,この抽選方法は独立一様抽選(毎回完全に独立してサイコロを振るようなもの)であるため,ユーザーが「大文字・小文字・数字」を選択したとしても,生成された短いトークンの中にそれぞれの文字種が「必ず1回以上含まれる」といった保証はありません.本ツールは選択文字種の必須包含処理を行わないため,必須条件がある利用先では生成結果を確認する必要があります.

第5章

理論エントロピーと強度推定の限界

本ツールでは,生成されたトークンの複雑さや推測の困難さをユーザーが客観的に把握できるように,エントロピー(ビット数)と強度の目安を計算して画面上に表示しています.エントロピーは,情報理論において予測不可能性を定量化する指標です.Hex,Base64,Base64URL形式の場合,元の乱数の1バイトあたり8ビットの情報量を持つとして,単純に「バイト数 × 8」で計算されます(例:32バイトであれば256ビット).

UUID v4の場合は,固定ビットを除いたランダムな領域のビット数である122ビットとして算出されます.英数字形式やカスタム形式の場合は,再構成された文字集合の要素数を底とする対数を用いて,「文字数 × log2(文字種数)」という数式で理論値が導き出されます.

このエントロピーの計算値に基づいて,「強度の目安が高い」「安全」「普通」「不十分な強度」といった強度レベルのラベルが表示されます.しかし,ここで提示される数値や評価は,あくまで乱数生成器が真にランダムで独立一様な抽選を行ったという理想的な数学的モデルを前提とした理論値の推定に過ぎません.

この表示が,安全性を保証するものではないこと,また,特定の用途への用途適合を保証するものではない点に強く留意する必要があります.システムのセキュリティはトークンの長さや複雑さだけで決まるわけではありません.通信経路の暗号化の有無,データベースにおけるソルト付きハッシュ化などを用いた適切な保管方法,アクセス権限の厳密な制御,万が一漏洩した場合の迅速な失効・照合方式,さらには利用先の脅威モデルなど,無数の要因が絡み合って決定されます.

また,CSPRNGを使用し十分な長さを持たせたとしても,理論上,乱数の衝突(同じ値が生成されること)の確率をゼロにすることはできず,成果保証を行える性質のものではありません.表示される強度評価はあくまで目安とし,実際の運用においてはシステム全体のセキュリティ要件に照らし合わせて,適切なトークン形式と長さを選択してください.

第6章

コピー・テキスト保存機能と運用責任

生成されたセキュアトークンの出力と運用については,利用者の利便性と安全な取り扱いを考慮した機能を提供しています.各トークンを個別にクリップボードへコピーするボタンや,生成された数十件のトークンを一度に改行区切りでコピーする一括コピー機能,そして生成結果をテキストファイル(TXT形式)としてローカルデバイスにダウンロード・保存する機能を実装しています.

最も重要な点として,本ツールはあくまで「文字列をローカルで生成し,画面に表示するだけ」の単機能なユーティリティです.生成された文字列は,そのままではいかなるシステムのAPIキーとしても機能しません.生成されたトークンをAWS,GCP,Azure,あるいは各種SaaSなどの外部サービスへ自動的に登録するような連携機能や通信機能などの未実装機能は存在しません.

同様に,トークンの有効期限の設定,利用先に応じたアクセス権限の付与やスコープの制限,第三者の覗き見を防止するための画面上のパスワードマスク機能,不要になったトークンの無効化・失効処理なども未実装です.

本ツールは,秘密鍵の安全な保管と管理を代替するシステムではありません.生成結果を平文のテキストファイルとして保存した場合,そのファイルが漏洩する危険性が伴います.したがって,生成されたAPIキーやセキュアトークンをどのように環境変数へ設定するか,どのように保管するか,そして漏洩インシデント発生時にどう対応するかといった保管・運用責任は,すべてツールを利用するユーザーに委ねられます.

安全な乱数生成の第一歩を支援するツールとして,ご自身の利用環境における脅威モデルに基づいた適切な管理をお願いいたします.

よくある質問(FAQ)

A.
Hex・Base64・Base64URLは元乱数のバイト数で,英数字・カスタムは文字数です.UUID v4は36文字の固定形式です.
A.
含まれるとは限りません.選んだ文字集合から各位置を独立に抽選します.カスタム文字の重複は1種類へまとめ,空の文字集合では生成を停止します.
A.
保証しません.独立一様抽選を前提とした組合せ上の理論値です.必要な長さ,保存方法,照合方式,失効手順は利用先の要件と脅威モデルで決めてください.
A.
登録されません.文字列の生成,コピー,TXT保存だけです.外部サービスへの登録,権限付与,有効期限,マスク,失効は行いません.