開発 へ戻る
SSH 公開鍵パーサー — fingerprint・鍵種別・bit 長を表示

SSH 公開鍵パーサー — fingerprint・鍵種別・bit 長を表示

**SSH 公開鍵** (`id_rsa.pub` / `id_ed25519.pub` / `authorized_keys` 等) を貼り付けるか選択すると、各鍵を解析して **鍵種別** (`ssh-rsa` / `ssh-ed25519` / `ecdsa-sha2-nistp256` / `ssh-dss` / FIDO2 セキュリティキー など)、**bit 長** (RSA modulus / ECDSA field)、**ECDSA カーブ名** (nistp256 / nistp384 / nistp521)、**コメント** (末尾の `user@host`)、**options** (authorized_keys の `command=` / `no-pty` / `from=` などのプレフィックス) を一覧表示。**SHA-256 fingerprint** (`SHA256:base64`) と **SHA-1 fingerprint** (colon-hex) を **Web Crypto** で計算 (`ssh-keygen -l -f` と同じ値)。**authorized_keys 形式** に対応、複数行をまとめて貼ると全鍵をカード単位で並べます。**RSA < 2048-bit** や **DSA** など廃止予定の弱い鍵には警告チップを表示。**完全にブラウザ内** で解析、鍵データはサーバーに送信されません。秘密鍵 (PEM / OpenSSH) は意図的に未対応 (公開鍵のみ)。

使い方

**入力欄** に `id_*.pub` や `authorized_keys` の中身を貼り付けるか、**ファイルを選択** から読み込んで **解析** を押すと、各鍵がカード形式で **鍵種別 / bit 長 / ECDSA カーブ / comment / authorized_keys options / SHA-256 fingerprint / SHA-1 fingerprint / base64 payload** に分解表示されます。**サンプル** ボタンで RSA / Ed25519 / ECDSA + options 付きデモを流し込み可能。**fingerprint** や **comment** は 1 クリックでクリップボードコピー。**RSA < 2048-bit** や **DSA** など廃止予定の鍵には **「弱い」 / 「レガシー」** チップを表示。

詳細解説

SSH 公開鍵のデータが明らかにするもの

SSH 公開鍵は秘密鍵と対になっており、それ自体を第三者に渡しても秘密鍵の復元はできません。しかし鍵の中に含まれる情報は想像以上に豊富です。comment フィールドにはメールアドレス・ホスト名・生成日・用途が埋め込まれ、authorized_keys のオプション (command="", from="") にはアクセス制限のポリシーが書かれています。RSA < 2048-bit や DSA という鍵種別は「このサーバーはメンテナンス不足」という運用状況を示します。鍵本体は公開情報ですが、鍵リストの構成・comment のメールアドレス・オプションの詳細は内部システム情報です。

特に authorized_keys ファイルを丸ごとオンラインツールに貼り付けるシーンを考えると、誰がどのサーバーにアクセスできるかという権限設計が外部に渡ります。大規模組織で用いる OpenSSH 証明書を貼り付ければ、CA の principals や有効期限の設定まで見えます。

公開鍵の「公開」と送信の非対称性

公開鍵を第三者に見せること自体はセキュリティ上問題ありません。しかし「公開情報だからオンラインツールに入れてよい」という論理には抜け穴があります。問題はその鍵が「何と紐づいているか」の文脈情報です。Comment に user@company.internal と書かれた鍵のリストは、そのドメインで使われているアカウント名を明かします。command="/usr/local/bin/deploy-prod" と書かれた authorized_keys エントリは、デプロイスクリプトの実在を示します。

また fingerprint の計算には Web Crypto API を使いますが、オンラインツールがサーバーサイドで fingerprint を計算している場合、鍵の全文字列を送信したことに変わりはありません。「fingerprint だけ知りたかった」がサーバーに鍵全体を渡す行為を含みます。

SSH wire format をブラウザ内のみで解析する

このツールは自前のパーサーで OpenSSH の SSH wire format を解読します。SSH 公開鍵のバイナリ部は Base64 デコード後、length-prefixed strings と mpint (多倍長整数) の連鎖で構成されており、鍵種別によって RSA の n/e 指数、ECDSA の curve name と公開点 Q、Ed25519 の 32 バイト公開鍵がこの順で並んでいます。パーサーは外部ライブラリを使わず、すべて TypeScript で実装されています。

fingerprint は Web Crypto API の crypto.subtle.digest('SHA-256', ...)crypto.subtle.digest('SHA-1', ...) でブラウザ内計算します。ネットワーク通信は発生せず、公開鍵の文字列はページメモリの外に出ません。authorized_keys ファイルを丸ごと貼り付けて権限設計を確認できます。

定期的な鍵監査と廃止鍵のチェックとして

SSH 鍵のライフサイクル管理において、authorized_keys に登録された鍵が現在も適切な強度を持っているかを定期確認することは重要です。本ツールで RSA < 2048-bit や DSA を一覧のまとめてチェックし、「弱い」「レガシー」チップが出た鍵は ssh-keygen -t ed25519 で更新する運用フローに使えます。また comment のメールアドレスを見て退職者の鍵が残っていないかをスキャンする用途にも適しています。

SSH wire format (RFC 4253 §6.6) と鍵種別ごとのバイナリレイアウト

OpenSSH の公開鍵は 1 行のテキストで「鍵種別 (ssh-rsa 等) + スペース + Base64 + スペース + コメント」という形式ですが、Base64 部分のバイナリは RFC 4253 §6.6 で定義された SSH wire format に従います。基本単位は (1) string: 4 バイトの big-endian 長さプレフィックス + バイト列、(2) mpint (multi-precision integer): 同じく長さプレフィックス + big-endian の符号付き整数 (最上位ビットが立っている場合は先頭に 0x00 を挿入)、(3) name-list: カンマ区切り文字列の string 表現、の 3 つです。

鍵種別ごとのレイアウト: RSA (ssh-rsa) は string("ssh-rsa") + mpint(e) + mpint(n) の順で、e は通常 65537 (0x010001)、n が公開モジュラスで bit 長 = n のビット長です。ECDSA (ecdsa-sha2-nistp256 など) は string("ecdsa-sha2-...") + string("nistp256") + string(Q) で、Q は SEC1 形式の非圧縮点 0x04 + X座標 + Y座標。Ed25519 (ssh-ed25519) は string("ssh-ed25519") + string(public_key_32bytes) でシンプル。OpenSSH 証明書 (*-cert-v01@openssh.com) はさらに豊富な構造を持ち、nonce、principals、有効期限、critical options、extensions、CA 鍵、署名が連続して入ります。本ツールはこの wire format を直接読み、外部の node-forgesshpk ライブラリに依存しません。

Fingerprint 形式、鍵強度の現実、量子耐性の議論

SSH の fingerprint には 2 つの形式があります。SHA256: プレフィックスの新形式は、鍵の wire format バイナリの SHA-256 を Base64 (パディング無し) で表現し、OpenSSH 6.8 (2015 年) からデフォルトです。古い MD5:xx:xx:... 形式 (SHA-1 ベースの colon-hex は実際は存在せず、レガシーは MD5 です) は OpenSSH 6.8 以前のデフォルトで、衝突耐性に問題があるため非推奨。本ツールは SHA-256 と SHA-1 の両方を表示し、ssh-keygen -l -E sha256 -f の出力と一致します。

鍵強度の現実的なガイドラインは、(1) RSA は最小 3072 bit (NIST SP 800-57 推奨)、新規生成は Ed25519 を推奨、(2) DSA は 2015 年の OpenSSH 7.0 で生成・受け入れがデフォルト無効化、現代の運用では削除対象、(3) ECDSA の nistp256 は強度的には問題なし (~128 bit security) だが、NIST 曲線への政治的懸念から Ed25519 を選ぶプロジェクトも多い、(4) FIDO2 セキュリティキー対応の sk-ssh-ed25519@openssh.com は OpenSSH 8.2 から、ハードウェア確認による touch 必須で物理的盗難耐性が高い、です。量子コンピュータ耐性の観点では、現在の RSA / ECDSA / Ed25519 はすべて Shor のアルゴリズムで破れるため、NIST が標準化した ML-KEM / ML-DSA への移行が長期的課題ですが、SSH 用ポスト量子アルゴリズムはまだドラフト段階です。短期的には Ed25519 を採用し、鍵を定期的にローテーションする運用が現実的です。同じ鍵管理サイクルで X.509 / TLS 証明書や RSA / ECDSA の生鍵を確認したい場合は pem-parse で PEM ヘッダごとに復元でき、authorized_keys から計算した fingerprint を別途確認したいときは hash-generate で任意のアルゴリズム (SHA-256 / SHA-512 / BLAKE2) と並べて比較できます。

よくある質問

入力データはサーバーに送信されますか?
いいえ。**自前パーサー** で OpenSSH の **SSH wire format** (length-prefixed strings / mpint) を解読し、**SHA-256 / SHA-1 fingerprint** は **Web Crypto** (`crypto.subtle.digest`) で計算します。外部 API もありません。
対応している鍵種別は?
**Ed25519** / **RSA** (`ssh-rsa`) / **ECDSA P-256 / P-384 / P-521** / **DSA** (legacy) / **Ed448** / **FIDO2 セキュリティキー** (`sk-ssh-ed25519@openssh.com` / `sk-ecdsa-sha2-nistp256@openssh.com`) / **OpenSSH 証明書** (`*-cert-v01@openssh.com`) を識別。**Ed25519 が推奨** (短い / 高速 / 安全)。
**fingerprint** は `ssh-keygen -l -f` と同じ値ですか?
はい。**SHA-256 fingerprint** は `SHA256:base64(no-padding)` 形式 (`ssh-keygen` のデフォルト)、**SHA-1 fingerprint** は colon-hex (`a1:b2:c3:...`) 形式。鍵を新しい SSH サーバーに登録するとき、登録された鍵が間違いないかを目視確認できます。
MD5 fingerprint は出ませんか?
**出ません** (意図的)。MD5 fingerprint は **OpenSSH 6.8 (2015) 以降は非推奨** で、現代の SSH server / client は SHA-256 を既定値にしています。MD5 は Web Crypto API に未収録なので、ゼロ依存方針を優先して非対応としました。MD5 が必要な場面はほぼ古い VPS の README くらいです。
**authorized_keys** の **オプション**は何ですか?
`command="..."` / `no-pty` / `from="10.0.0.0/8"` / `permitopen="..."` のような **鍵 1 本ごとの制限** を、鍵の先頭にカンマ区切りで書くことができます。本ツールは options をそのまま抽出して **Options チップ** に表示。デプロイ鍵やバックアップ鍵で `command=` 制限を確認するときに便利。
**comment** って何ですか?
鍵の末尾にあるラベル (例: `taro@nosend-tools.com` / `deploy-bot-2026-06`)。SSH 自体は comment を使わず、人間が「どの鍵か」を識別するためのメモです。`ssh-keygen -C "..."` で書き換え可能。**チームの鍵運用では comment にメール + 用途 + 生成日** を入れる慣習を推奨。
**RSA は何 bit が必要ですか?**
**2048-bit 以上が現代の最低ライン**、**3072-bit / 4096-bit** が好ましい (NIST SP 800-57 / OpenSSH client/server の警告閾値)。**1024-bit RSA / DSA** は計算的に破られる懸念があり、本ツールでは **「弱い」 / 「レガシー」** チップを表示します。**Ed25519** は 256-bit で同等以上の強度 + 短い / 高速 なので、新規生成は `ssh-keygen -t ed25519` を推奨。
**FIDO2 セキュリティキー** (`sk-` 接頭辞) って何ですか?
**YubiKey / Titan Security Key** などのハードウェアトークンに紐づく SSH 鍵。秘密鍵がトークン内に閉じこもるため、PC 紛失でも鍵を取り出せない (= 強い)。生成は `ssh-keygen -t ed25519-sk`。本ツールは **セキュリティキー** チップで識別。
**`ssh-rsa-cert-v01@openssh.com`** ってどんな鍵ですか?
**OpenSSH 証明書** = 鍵に CA 署名・principals (許可ユーザー名) ・有効期限を付けて発行する仕組み (大規模組織で使用)。本ツールは **OpenSSH 証明書** チップで識別、内部の base type (RSA / Ed25519 / ECDSA) も表示。深い証明書フィールド (principals / valid_after / valid_before) は `ssh-keygen -L -f` で確認してください。
秘密鍵 (`-----BEGIN OPENSSH PRIVATE KEY-----` / `-----BEGIN RSA PRIVATE KEY-----`) は解析できますか?
**意図的に対応していません**。本ツールは公開鍵専用 (`*.pub` / `authorized_keys`)。秘密鍵を貼ると **「秘密鍵は対応していません」エラー** を出して処理を打ち切ります。秘密鍵のメタデータ (アルゴリズム / 公開鍵抽出) を見たい場合は ` ssh-keygen -y -f private_key > public_key.pub` で公開鍵を取り出してから貼ってください。
pem-parse / jwt-decode との関係は?
**読み取り専用 metadata viewer シリーズ**: pem-parse (X.509 cert) / jwt-decode (JWT) / hash-generate (任意ハッシュ) / vcard-info (.vcf) / ics-parse (.ics) と同じ「データを貼って中身を見るだけ、編集なし」パターンです。鍵を **生成 / 変換 / 署名検証** したい場合は別ツール (将来追加検討)。

「送らない」を確かめるには

このツールは入力データを外部に送信しません。仕組み・監査手順・運営方針は以下で詳しく説明しています。

類似のツール

X.509 PEM 証明書パーサー — SSL/TLS 証明書を解析・有効期限チェック

X.509 PEM 証明書パーサー — SSL/TLS 証明書を解析・有効期限チェック

**`-----BEGIN CERTIFICATE-----`** で囲まれた **X.509 PEM 証明書** を貼り付けると、**Subject** (CN / O / OU / C / ST / L / EMAIL)、**Issuer** (発行者)、**有効期限** (Not Before / Not After / 残り日数 + 失効バッジ)、**シリアル番号**、**署名アルゴリズム** (RSA-SHA256 / ECDSA-SHA384 等)、**公開鍵タイプ** (RSA 2048 / EC P-256 等)、**SHA-1 / SHA-256 フィンガープリント**、**SAN** (DNS / IP / Email / URI)、**Key Usage** / **Extended Key Usage**、**Basic Constraints** (CA フラグ / Path Length)、**SKI / AKI** を解析します。**チェーン (複数 cert)** も連結貼付で一覧表示。SSL/TLS 証明書のトラブルシューティング、有効期限監視、SAN の DNS 一致確認、Let's Encrypt 自動化のデバッグに。**完全にブラウザ内** で処理 (@peculiar/x509 + Web Crypto API)、証明書はサーバーに送信されません。

開発セキュリティ
JWT デコード — header / payload を可読化

JWT デコード — header / payload を可読化

JWT を貼り付けて Header / Payload / Signature に分解。exp / iat / nbf などの数値クレームは人間可読な日時に変換して表示。署名検証は行いません (内容確認専用)。すべてブラウザ内で処理。

開発JWTデコード
ハッシュ生成 — SHA-1 / 256 / 384 / 512

ハッシュ生成 — SHA-1 / 256 / 384 / 512

テキストから SHA-1 / SHA-256 / SHA-384 / SHA-512 のハッシュ値を一括生成します。Web Crypto API ベースでブラウザ内処理。

開発ハッシュ生成
vCard (.vcf) パーサー — 連絡先ファイルを解析・写真・住所表示

vCard (.vcf) パーサー — 連絡先ファイルを解析・写真・住所表示

**`.vcf` 連絡先ファイル** (vCard) を貼り付けるか選択すると、**名前 (N / FN)**、**電話番号** (CELL / WORK / HOME / FAX を TYPE 別に分類)、**メールアドレス**、**住所** (郵便番号 / 都道府県 / 市区町村 / 番地 / 国 を構造化)、**組織** (ORG)、**役職** (TITLE / ROLE)、**ニックネーム**、**誕生日 (BDAY)**、**記念日 (ANNIVERSARY)**、**写真 (PHOTO Base64)**、**URL**、**カテゴリ**、**Note**、**X-** 拡張フィールドを解析。**vCard 2.1 / 3.0 / 4.0** に対応、**複数連絡先** の連結貼付もチェーン表示。**Line folding** (75 文字超の継続行)、**QUOTED-PRINTABLE** (v2.1 国際文字)、**Base64 写真** の **inline data URL 復元** に対応。**完全にブラウザ内** で解析、連絡先データはサーバーに送信されません。Google Contacts / iCloud / Apple Contacts / Outlook の `.vcf` 出力をすべて受付け、引っ越し時のデータ確認・名刺データの確認・古い .vcf の中身チェックに。

開発