セキュリティ
Snowkitを職場で使うために検討する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にも同じ連絡先が記載されています。
セキュリティ連絡先:[email protected] · security.txt