本文へスキップ
snowkit

セキュリティ

Snowkitを職場で使うために検討するITおよびセキュリティチーム向けの概要。

セキュリティの概要

ITおよびセキュリティチーム向け

Snowkitの構造

セキュリティレビュー向けの短い回答。詳細はワンクリックで確認できます。

アーキテクチャ

  • Snowkitは静的なウェブサイトです。すべてのツールは、訪問者のブラウザ内で、JavaScriptとWebAssemblyとして動作します。
  • ツールに入力されたファイルとテキストは、訪問者の端末のメモリ内で処理され、Snowkitに送信されることはありません。
  • サイトは、HTTPSのみで、HSTSつきで配信されます。

ネットワークアクセス

各ツールのページは、独自のコンテンツセキュリティポリシーを備えています。ツールのページは、Snowkit自身のスクリプトとスタイルだけを読み込め、ほとんどのページはネットワーク接続を一切行えないようにブロックされています。

一部のツールはインターネットで調べるためのもので、それぞれのページにそう記載されています。期限チェッカーは、公開のRDAPと証明書の透明性記録を読み取ります。DNS検索は、CloudflareとGoogleの公開リゾルバーに問い合わせます。引用ジェネレーターは、CrossrefとOpen Libraryを使ってDOIやISBNを調べます。HTTPヘッダーチェッカー、公開前スキャン、Snowkit Launchのライブサイトチェックは、入力した公開アドレスを、Snowkit自身のサーバー経由で取得します。MCPテスターは、入力したサーバーアドレスに接続します。送信されるのは、入力したドメイン、アドレス、識別子だけで、ファイルが送られることはありません。

Dropbox、Googleドライブ、OneDriveからのファイルを開くことや、結果の保存は、対応するページで利用できます。そのサービス自身のピッカーのスクリプトは、選んだときにだけ読み込まれ、そのサービスのアドレスをコンテンツセキュリティポリシーで許可するのは、それらのページだけです。ファイルはブラウザとサービスの間を直接やり取りされ、Snowkitを経由することはなく、サービスが付与する短期間の権限は、開いているページ内にのみ保持されます。

NotionやCanvaはサーバーからのファイルしか受け付けないため、そこへファイルを送ると、途中でSnowkitのサーバーを、暗号化された接続で通ります。そのまま転送され、ディスクへの書き込み、ログ記録、保管は行われません。そのサービスが付与する権限は、開いているページ内にのみ保持され、その1つのリクエストとともに送られます。

私たちが決して使わないもの

  • 分析タグも広告ネットワークもありません。サードパーティのスクリプトは、「ネットワークアクセス」に記載のファイルピッカーだけで、そのサービスを選んだときに読み込まれます。
  • トラッキングや広告のCookieはありません。サインインしない訪問者には、Cookieが一切設定されません。テーマの選択は、ご自身のブラウザのローカルストレージに保存されます。
  • パスワードはありません。アカウントは任意で、パスキーまたはGitHubやGoogleのサインインを使うので、Snowkitがパスワードを見たり保存したりすることはありません。

その他のヘッダー

ページは他のサイトにフレームで埋め込めず、MIMEスニッフィングは無効で、サイトを離れるときはリファラーが省略され、カメラ、マイク、位置情報、決済の機能は、ツールが必要としない限り無効です。

Content-Security-Policy
Snowkit自身のスクリプトとスタイルだけが読み込まれます。プラグインとフレーム埋め込みはブロックされます。
Strict-Transport-Security
HTTPSのみで、サブドメインを含め1年間記憶されます。
X-Frame-Options
DENY。他のサイトは、Snowkitのページをフレームに埋め込めません。
X-Content-Type-Options
nosniff。ファイルは、配信された種類としてのみ読み取られます。
Referrer-Policy
strict-origin-when-cross-origin。他のサイトに見えるのはsnowkit.ioだけで、あなたが見ていたページは見えません。
Permissions-Policy
カメラ、マイク、位置情報、決済は、ツールが必要としない限りオフです。
Cross-Origin-Opener-Policy
same-origin。他のサイトから開かれたウィンドウは、Snowkitのページに干渉できません。

任意のアカウント

サインインすると、サインイン方法が提供する場合は名前とメールアドレス、サインイン提供元のアカウントID、お気に入りとして保存したツールが保存されます。セッションは、安全なHttpOnlyのファーストパーティCookieに保持されるランダムなトークンを使い、ページのヘッダー用にあなたのイニシャルだけを保持する2つ目のCookie、プロフィール画像を追加したときの画像のバージョンだけを保持する3つ目のCookieがあり、当社側にはトークンのハッシュだけが保存されます。ツールで使うファイルやテキストが、アカウントと結びつけられることはありません。アカウントとその中のすべてを、アカウントページからいつでも削除できます。

パスキー

パスキーは、ユーザー検証を優先したWebAuthnを使います。サーバーは、5分で期限が切れる使い捨てのチャレンジを発行し、オリジン、リライングパーティ、署名カウンターを確認し、資格情報の公開鍵だけを保存します。メールのサインインリンクは、提供される場合、一度だけ使え、15分で期限が切れ、ハッシュとしてのみ保存されます。

プライベート同期

サインインした訪問者は、Library、Your Snowkit、保存した手順、お気に入りのツールを、端末間で同期するかを選べます。同期はエンドツーエンドで暗号化されます。各項目はアップロード前にブラウザで暗号化され、サーバーが保持するのは暗号文だけです。

暗号方式
256ビットキーのAES-GCM
ノンス
保存のたびに新しい96ビットのノンス
Vaultキー
256個のランダムなビット、ブラウザで生成
キーラッピング
パスキーのPRFとHKDF-SHA-256、または128ビットの復旧キーと60万回の反復のPBKDF2-SHA-256
Libraryのファイル
各バージョンに専用のキー、8 MiBのチャンクで封印
サーバーが保持するもの
暗号文、ラップされたキー、アカウントID、タイムスタンプ、サイズ
  • 同期をオンにすると、ブラウザ上でランダムな256ビットのVaultキーが作られます。項目は、保存のたびに新しい96ビットのノンスと256ビットのキーを使ってAES-GCMで暗号化され、セクション名とバージョンが追加の認証済みデータとして紐づけられます。
  • Vaultキーは、暗号化されずに端末を離れることはありません。キーは、WebAuthnのPRF拡張に対応する各パスキーによって、PRFの出力からHKDF-SHA-256で導出したキーを使ってAES-GCMでラップされ、また一度だけ本人に表示される128のランダムなビットの復旧キーによって、60万回の反復のPBKDF2-SHA-256でラップされます。
  • サーバーは、ラップされたキー、暗号化された項目、アカウントID、タイムスタンプ、サイズを保存します。それらを復号できるキーは持たないため、Snowkitによる復旧はできません。すべてのパスキーと復旧キーをなくした場合、同期したデータは誰にも開けません。
  • Libraryのファイルは、同期がオンのときだけ同期されます。各ファイルのバージョンは、独自のランダムな256ビットのキーで、8 MiBのチャンクごとに封印され、各チャンクはオブジェクトID、位置、数に紐づけられ、ランダムなオブジェクトIDで保存されます。ファイルごとのキー、名前、種類、プロジェクトは、暗号化されたLibraryインデックスの内部にのみ存在するため、サーバーが見るのは、意味のないID、サイズ、タイムスタンプだけです。
  • ツールで開いただけのファイルは、同期されません。各アカウントにはストレージの上限があり、上限に達するとアップロードが一時停止し、何も削除されません。同期をオフにすると、サーバーから暗号化されたコピーが削除されます。

表示名と任意のプロフィール画像は、アカウント情報であり、同期データではありません。画像はブラウザ上でリサイズされ、アカウントとともに暗号化されずに保存され、サインインしたそのアカウントにのみ、プライベートキャッシュで提供され、アカウントとともに削除されます。

私たちが確認できるもの

他のウェブサイトと同様に、当社のホストは、ページを配信するために、IPアドレスなどの標準的なリクエストデータを処理します。ページビューは、Cookieなし、IPアドレスを保存せずに、パスごとに数えています。Gap Radarは、結果のなかった検索、答えられなかったKitsuneの質問、存在しないページ、短いエラーコードを、Cookie、識別子、IPアドレスなしで、1日ごとの合計としてのみ数えます。検索テキストは端末上で整えられ、28日以内に5回現れていない珍しいテキストは表示されず、削除されます。フィードバックフォームから送られたメッセージは、メールでSnowkitチームに届きます。詳細はプライバシーポリシーをご覧ください。

脆弱性の報告

詳細と再現手順を添えて、[email protected]にメールしてください。報告を受領確認し、修正する間、状況をお知らせします。security.txtにも同じ連絡先が記載されています。