Keamanan
Ringkasan untuk tim IT dan keamanan yang meninjau Snowkit untuk dipakai di tempat kerja.
Cara Snowkit dibangun
Jawaban singkat untuk tinjauan keamanan, dengan detail hanya satu klik.
Arsitektur
- Snowkit adalah situs web statis. Setiap alat berjalan sebagai JavaScript dan WebAssembly di dalam browser pengunjung.
- File dan teks yang dimasukkan ke alat diproses di memori perangkat pengunjung dan tidak pernah dikirim ke Snowkit.
- Situs hanya disajikan lewat HTTPS, dengan HSTS.
Akses jaringan
Setiap halaman alat membawa Content Security Policy-nya sendiri. Halaman alat hanya boleh memuat skrip dan gaya milik Snowkit sendiri, dan hampir semuanya diblokir membuat koneksi jaringan apa pun.
Beberapa alat ada untuk mencari sesuatu di internet, dan masing-masing menyatakannya di halamannya. Pemeriksa kedaluwarsa membaca rekaman RDAP publik dan certificate transparency. Pencarian DNS bertanya kepada resolver publik Cloudflare dan Google. Pembuat sitasi mencari DOI atau ISBN dengan Crossref dan Open Library. Pemeriksa header HTTP, pemindaian pra-peluncuran, dan pemeriksaan situs live di Snowkit Launch mengambil alamat publik yang Anda ketik lewat server Snowkit sendiri. Penguji MCP terhubung ke alamat server yang Anda masukkan. Hanya domain, alamat, atau pengenal yang Anda ketik yang dikirim, tidak pernah file Anda.
Membuka file dari, dan menyimpan hasil ke, Dropbox, Google Drive, atau OneDrive tersedia di halaman yang menawarkannya. Skrip pemilih layanan itu dimuat hanya saat seseorang memilihnya, dan hanya halaman itu yang mengizinkan alamat layanan itu di Content Security Policy-nya. File langsung berpindah antara browser dan layanan, tidak pernah lewat Snowkit, dan izin berumur pendek yang diberikan layanan hanya disimpan di halaman yang terbuka.
Notion atau Canva hanya menerima file dari server, jadi mengirim file ke sana melewati server Snowkit dalam perjalanan, lewat koneksi terenkripsi. Diteruskan langsung, tidak pernah ditulis ke disk, dicatat, atau disimpan. Izin yang diberikan layanan itu hanya disimpan di halaman yang terbuka dan ikut dengan satu permintaan itu.
Apa yang tidak pernah kami pakai
- Tanpa tag analitik atau jaringan iklan. Satu-satunya skrip pihak ketiga adalah pemilih file yang dijelaskan di bawah Akses jaringan, dimuat saat seseorang memilih layanan itu.
- Tanpa cookie pelacakan atau iklan. Pengunjung yang tidak masuk tidak mendapat cookie sama sekali; pilihan tema Anda disimpan di penyimpanan lokal browser Anda sendiri.
- Tanpa kata sandi. Akun bersifat opsional dan memakai passkey atau masuk dengan GitHub atau Google, jadi Snowkit tidak pernah melihat atau menyimpan kata sandi.
Header lain
Halaman tidak bisa dibingkai oleh situs lain, MIME sniffing dinonaktifkan, referrer dipangkas saat meninggalkan situs, dan fitur kamera, mikrofon, lokasi, dan pembayaran dinonaktifkan kecuali alat membutuhkannya.
Content-Security-Policy- Hanya skrip dan gaya milik Snowkit yang dimuat. Plugin dan framing diblokir.
Strict-Transport-Security- Hanya HTTPS, diingat selama setahun, subdomain termasuk.
X-Frame-Options- DENY. Situs lain tidak bisa membingkai halaman Snowkit.
X-Content-Type-Options- nosniff. File hanya dibaca sebagai jenis yang disajikannya.
Referrer-Policy- strict-origin-when-cross-origin. Situs lain hanya melihat snowkit.io, tidak pernah halaman tempat Anda berada.
Permissions-Policy- Kamera, mikrofon, lokasi, dan pembayaran mati kecuali alat membutuhkannya.
Cross-Origin-Opener-Policy- same-origin. Jendela yang dibuka dari situs lain tidak bisa menjangkau ke dalam halaman Snowkit.
Akun opsional
Masuk menyimpan nama dan alamat email saat metode masuk menyediakannya, ID akun penyedia masuk, dan alat yang Anda simpan sebagai favorit. Sesi memakai token acak yang disimpan dalam cookie pihak pertama yang aman dan HttpOnly, dengan cookie kedua yang hanya berisi inisial Anda untuk header halaman dan cookie ketiga yang hanya berisi versi gambar saat Anda menambah gambar profil, dan hanya hash token yang disimpan di sisi kami. File dan teks yang dipakai di alat tidak pernah ditautkan ke akun. Anda bisa menghapus akun dan semua isinya dari halaman akun kapan saja.
Passkey
Passkey memakai WebAuthn dengan verifikasi pengguna yang diutamakan. Server menerbitkan challenge sekali pakai yang kedaluwarsa setelah lima menit, memeriksa origin, relying party, dan penghitung tanda tangan, dan hanya menyimpan kunci publik kredensial. Tautan masuk email, jika ditawarkan, bekerja sekali, kedaluwarsa setelah 15 menit, dan hanya disimpan sebagai hash.
Sinkronisasi privat
Pengunjung yang masuk bisa memilih menyinkronkan Library, Snowkit Anda, langkah tersimpan, dan alat favorit antar perangkat mereka. Sinkronisasi dienkripsi end-to-end: setiap item dienkripsi di browser sebelum diunggah, dan server hanya menyimpan ciphertext.
- Cipher
- AES-GCM dengan kunci 256-bit
- Nonce
- Nonce 96-bit baru untuk setiap penyimpanan
- Kunci vault
- 256 bit acak, dibuat di browser
- Pembungkusan kunci
- Passkey PRF dengan HKDF-SHA-256, atau kunci pemulihan 128-bit dengan PBKDF2-SHA-256 pada 600.000 iterasi
- File Library
- Kunci sendiri untuk setiap versi, disegel dalam potongan 8 MiB
- Server menyimpan
- Ciphertext, kunci terbungkus, ID akun, stempel waktu, dan ukuran
- Kunci vault 256-bit acak dibuat di browser saat sinkronisasi dinyalakan. Item dienkripsi dengan AES-GCM memakai kunci 256-bit dan nonce 96-bit baru untuk setiap penyimpanan, dengan nama bagian dan versi terikat sebagai additional authenticated data.
- Kunci vault tidak pernah meninggalkan perangkat tanpa terenkripsi. Ia dibungkus dengan AES-GCM oleh setiap passkey yang mendukung ekstensi WebAuthn PRF, memakai kunci turunan dari output PRF dengan HKDF-SHA-256, dan oleh kunci pemulihan 128 bit acak yang ditampilkan kepada orangnya sekali, memakai PBKDF2-SHA-256 dengan 600.000 iterasi.
- Server menyimpan kunci terbungkus, item terenkripsi, ID akun, stempel waktu, dan ukuran. Ia tidak memegang kunci yang bisa mendekripsinya, jadi tidak ada pemulihan oleh Snowkit: jika semua passkey dan kunci pemulihan hilang, data yang disinkronkan tidak bisa dibuka oleh siapa pun.
- File Library disinkronkan hanya saat sinkronisasi menyala. Setiap versi file disegel dengan kunci acak 256-bit sendiri dalam potongan 8 MiB, setiap potongan terikat ke ID objek, posisi, dan jumlahnya, dan disimpan dengan ID objek acak. Kunci per file, nama, jenis, dan proyek hanya berada di dalam indeks Library terenkripsi, jadi server hanya melihat ID buram, ukuran, dan stempel waktu.
- File yang hanya dibuka di sebuah alat tidak pernah disinkronkan. Setiap akun punya batas penyimpanan; saat tercapai, unggahan dijeda dan tidak ada yang dihapus. Mematikan sinkronisasi menghapus salinan terenkripsi dari server.
Nama tampilan dan gambar profil opsional adalah detail akun, bukan data sinkronisasi. Gambar diubah ukurannya di browser dan disimpan tanpa enkripsi bersama akun, hanya disajikan kepada akun yang masuk itu dengan cache privat, dan dihapus bersama akun.
Apa yang kami lihat
Seperti situs web mana pun, host kami memproses data permintaan standar seperti alamat IP untuk menyajikan halaman. Kami menghitung tampilan halaman menurut path, tanpa cookie dan tanpa menyimpan alamat IP. Gap Radar menghitung pencarian tanpa hasil, pertanyaan Kitsune yang tidak terjawab, halaman yang hilang, dan kode kesalahan singkat hanya sebagai total harian, tanpa cookie, pengenal, atau alamat IP; teks pencarian dibersihkan di perangkat, dan teks langka yang belum muncul 5 kali dalam 28 hari tidak pernah ditampilkan dan dihapus. Pesan yang dikirim lewat formulir masukan sampai ke tim Snowkit lewat email. Lihat kebijakan privasi untuk detailnya.
Melaporkan kerentanan
Email [email protected] dengan detail dan langkah untuk mereproduksi. Kami akan mengakui laporan Anda dan memberi kabar selama kami memperbaikinya. security.txt kami mencantumkan kontak yang sama.
Kontak keamanan: [email protected] · security.txt