Design: Tanda Tangan/Verifikasi Modul WASM

Dibuat pada 15 Feb 2018  ·  6Komentar  ·  Sumber: WebAssembly/design

Modul Wasm tidak memiliki konsep untuk tanda tangan keamanan dan verifikasi bytecode modul Wasm.

Tanda tangan tersebut akan memungkinkan verifikasi keaslian dan integritas file modul WebAssembly yang ditransfer melalui jaringan.

Encoding biner (Wasm-module-files) harus berisi tanda tangan.
Seharusnya dimungkinkan untuk membuat dan memverifikasi tanda tangan tanpa menguraikan Wasm-bytecode.

Bukti konsep telah diterapkan dan tersedia di https://github.com/frehberg/wasm-sign

Di sini Wasm-Module-Signature adalah CustomSection (0) menggunakan "signature" nama bagian dan dilampirkan di akhir bytecode Wasm-module. Ukuran total/overhead adalah 118 byte. Tanda tangan dibuat menggunakan ECDSA. Kurva yang didukung adalah secp256k1/SHA256. Di masa depan kurva berikut harus didukung Ed25519 dan secp384r1.

Untuk interoperabilitas, akan berguna untuk membakukan format tanda tangan.

Komentar yang paling membantu

Saya ingin lebih memahami bagaimana mekanisme Web saat ini untuk tanda tangan dan verifikasi gagal, dan bagaimana dukungan WebAssembly kelas satu akan memperbaikinya. Secara khusus, Web memiliki HTTPS dan Integritas Sub-Sumber Daya yang, meskipun jelas tidak sempurna, sudah cukup membantu kami.

Bisakah Anda menjelaskan secara rinci apa yang ingin Anda perbaiki, dan bagaimana proposal Anda tidak memiliki perangkap yang sama?

Semua 6 komentar

Saya yakin kita juga membutuhkan yang setara dalam format teks, mungkin seperti: (signature ...) .

Untuk CSP, memeriksa tanda tangan bisa AKTIF melalui https? Atau apakah menurut Anda itu harus diaktifkan secara default?

Hmmm, "CSP & pengecekan": itu akan sangat awal dalam prosesnya. Kami akan membutuhkan (atau beberapa) kunci publik dari server atau contoh lain untuk verifikasi, dan itu harus menjadi kunci publik menggunakan EC (kurva ekliptika).

Jika akan terkait dengan layanan berbasis HTTP(S), akan diperlukan untuk mendapatkan akses ke kunci publik yang sesuai (kunci kurva eliptik). Mungkin kunci publik yang sesuai dapat disematkan sebagai atribut HTTP-header dari halaman web yang memuat modul WASM.

Setelah menandatangani modul WASM, ini dapat diambil dari lokasi mana pun dan diverifikasi.

Apakah akan ada satu organisasi (hoster) yang menandatangani file WASM atau akankah halaman web mengambil modul yang ditandatangani dari beberapa organisasi/pemasok?

Dalam kasus beberapa organisasi, baik menambahkan "organisasi-id" ke tanda tangan itu sendiri, atau mendefinisikan semacam SignerOrg sebagai Bagian tambahan (ukuran tetap juga). prosesnya mungkin terlihat seperti: pertama melampirkan Bagian SignerOrg dan kemudian menandatangani keduanya (modul-bytecode & signerorg-bagian asli)

sepertinya use-case dan proses harus didefinisikan terlebih dahulu;)

Saya ingin lebih memahami bagaimana mekanisme Web saat ini untuk tanda tangan dan verifikasi gagal, dan bagaimana dukungan WebAssembly kelas satu akan memperbaikinya. Secara khusus, Web memiliki HTTPS dan Integritas Sub-Sumber Daya yang, meskipun jelas tidak sempurna, sudah cukup membantu kami.

Bisakah Anda menjelaskan secara rinci apa yang ingin Anda perbaiki, dan bagaimana proposal Anda tidak memiliki perangkap yang sama?

Yah, saya bisa mencoba

Tanda tangan yang disematkan sudah digunakan untuk PDF, Win-binary, driver, dokumen XML, dll.
Apa gunanya modul WebAssembly yang ditandatangani?

Hanya membayangkan

  • Web-Application mengeksekusi kode WebAssembly untuk menghitung Banking-PIN.
  • Aplikasi Rust/C++ menggunakan WebAssembly untuk mesin eksekusi tersemat, mengevaluasi kontrak mata uang kripto
  • HSM-s menggunakan bytecode WebAssembly untuk menghitung PIN di server-backend
  • Perangkat IoT yang firmwarenya dirakit menggunakan versi tertentu dari modul WebAssembly yang berbeda (Penyimpanan/Penautan Konten Beralamat)

Dalam kasus terakhir, versi firmware perangkat IoT akan menjadi daftar modul WebAssembly menggunakan versi tertentu. Perangkat IoT dapat menyebarkan versi modul WebAssembly mereka ke perangkat lain di lingkungan sekitar (http://www.korhal.io/whitepaper.pdf). Tidak ada server pembaruan pusat yang diperlukan.

Dalam semua kasus ini, TSL-transport tidak cukup untuk membangun kepercayaan, tetapi kode harus ditandatangani sehingga penerima dapat memverifikasi keaslian, integritas di sepanjang rantai pasokan dari pengembang/pemasok hingga browser web atau eksekusi mesin.
Tanda tangan mencegah gangguan data-dalam-istirahat dan dalam aspek hukum Non-penolakan untuk kode kritis operasi.

Menggunakan tanda tangan terpisah (dibandingkan dengan tanda tangan yang disematkan ke dalam modul WASM) akan lebih rumit untuk ditangani. Tanda tangan yang disematkan akan menyederhanakan penanganan di sepanjang bytecode-supply-chain.

Saya tidak yakin ini adalah masalah yang paling baik ditangani di tingkat WASM itu sendiri. Tanda tangan dapat ditambahkan ke data apa pun. Mengapa mereka perlu menjadi bagian dari bahasa itu sendiri?

Juga, menurut saya Anda mungkin tertarik dengan HTTP Origin-Signed Responses Standard .

Sedih mendengarnya. Bagian dari bahasa, karena wasm yang ditandatangani akan menyimpan file wasm yang valid; jadi itu bukan jenis pembungkus yang harus dilepas sebelum diurai. Nah, berkat adanya CustomSection dimungkinkan untuk menambahkan struktur seperti itu. Hanya, akan lebih baik untuk memindahkannya dari "fitur khusus" ke "fitur standar".

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

void4 picture void4  ·  5Komentar

chicoxyzzy picture chicoxyzzy  ·  5Komentar

cretz picture cretz  ·  5Komentar

thysultan picture thysultan  ·  4Komentar

dpw picture dpw  ·  3Komentar