- ImageMagick mengumumkan bahwa sertifikat penandatanganan kode yang ada akan kedaluwarsa pada 28 Oktober 2023, dan sertifikat yang selama ini disponsori oleh LeaderSSL tidak lagi dapat diperoleh
- Sejak Juni 2023, CA/B Forum mewajibkan kunci privat penandatanganan kode OV disimpan di perangkat bersertifikasi FIPS 140-2 Level 2 atau Common Criteria Level EAL4+, sehingga metode mengekspor kunci privat untuk digunakan di GitHub Actions tidak lagi bisa dilakukan
- Dampaknya tidak terbatas pada installer
.exe, tetapi berlaku untuk semua biner yang ditandatangani dengan sertifikat penandatanganan kode - Dalam diskusi, sejumlah alternatif dibahas, termasuk sertifikat Digicert seharga 629 dolar AS per tahun, SignPath, Azure Key Vault dan AzureSignTool, Azure Code Signing, serta penandatanganan mandiri; sebagian memiliki batasan seperti integrasi GitHub Actions atau kebutuhan AppVeyor
- Pada 6 November 2023, ImageMagick memutuskan menggunakan Azure Code Signing, sehingga biner dapat ditandatangani kembali
Masalah kedaluwarsanya sertifikat dan penghentian penandatanganan
- Maintainer ImageMagick mengumumkan bahwa sertifikat penandatanganan kode yang saat ini digunakan akan kedaluwarsa pada 28 Oktober 2023
- Selama beberapa tahun, LeaderSSL mensponsori sertifikat penandatanganan kode, tetapi kini tidak lagi dapat mensponsorinya
- Sejak Juni 2023, persyaratan CA/B Forum berubah sehingga kunci privat penandatanganan kode OV harus disimpan di salah satu dari berikut ini
- Perangkat bersertifikasi FIPS 140-2 Level 2
- Perangkat bersertifikasi Common Criteria Level EAL4+
- Karena persyaratan ini, ImageMagick tidak lagi dapat melanjutkan cara lama, yaitu mengekspor sertifikat penandatanganan kode dan kunci privat untuk digunakan di GitHub Actions
Alternatif yang dibutuhkan dan biaya
- Maintainer mengajukan dua opsi sebagai cara baru
- Menggunakan agen GitHub sendiri dan token perangkat keras
- Menggunakan solusi penandatanganan berbasis cloud yang terintegrasi dengan GitHub
- Cara yang lebih disukai adalah solusi cloud yang terintegrasi dengan GitHub
- Saat itu maintainer mengatakan Digicert tampaknya menjadi satu-satunya pilihan, dan menyebutkan bahwa sertifikat penandatanganan kode Digicert berharga 629 dolar AS untuk satu tahun, belum termasuk pajak
- Mereka meminta organisasi yang membutuhkan installer bertanda tangan untuk mensponsori sertifikat penandatanganan kode
Cakupan dampak
- Seorang peserta bertanya apakah dampaknya hanya berlaku untuk installer
.exe, atau apakah semua biner Win32 sepertimagick.exedi portable zip juga tidak akan ditandatangani - Maintainer menjawab bahwa semua biner yang sebelumnya ditandatangani dengan sertifikat penandatanganan kode akan terdampak
Alternatif yang didiskusikan
-
SignPath
- Seorang peserta mengusulkan SignPath, dan maintainer menjawab bahwa mereka belum mengenal perusahaan tersebut tetapi itu bisa menjadi pilihan
- Peserta lain membagikan pengalamannya menggunakan SignPath untuk proyek OSS selama lebih dari 2 tahun, dan mengatakan respons terhadap pertanyaan selalu baik
- Peserta tersebut menambahkan bahwa, sejauh yang ia ketahui, karena cara verifikasi asal SignPath, build biner atau installer yang ditandatangani memerlukan AppVeyor, dan installer harus dalam format
.MSI - Seorang peserta dari pihak SignPath menjelaskan bahwa sertifikat gratis memiliki beberapa batasan
- Sertifikat gratis yang diterbitkan untuk “SignPath Foundation” mensyaratkan build yang transparan dan dapat diverifikasi, yang saat itu berarti AppVeyor
- Konektor GitHub Actions disebut akan segera tersedia
- Format standar seperti MSI, MSIX, dan AppX memiliki keunggulan, tetapi installer lain juga dapat ditangani
- Karena ImageMagick memiliki LLC terdaftar, sertifikat atas nama ImageMagick dapat diperoleh tanpa batasan, dan SignPath menawarkan untuk mensponsori tahun pertama
-
Azure Key Vault dan AzureSignTool
- Seorang peserta membagikan bahwa ia memasukkan sertifikat penandatanganan kode EV yang diterbitkan GlobalSign ke Azure Key Vault dan menandatangani file di GitHub Actions dengan AzureSignTool
- Maintainer menjawab bahwa cara ini tampak seperti opsi yang lebih murah, dan menyebutkan bahwa dotnet/sign, yang menggunakan
AzureSignTool, juga direkomendasikan kepadanya sehari sebelumnya - Peserta lain membagikan tulisan tentang menandatangani installer Windows dengan sertifikat EV menggunakan kombinasi GlobalSign dan Azure Key Vault
- Seorang peserta mengatakan Azure Key Vault mendukung hal ini dan biayanya hanya dalam hitungan sen meski menandatangani build beberapa kali sehari
- Kemudian peserta lain menambahkan bahwa setelah sertifikatnya kedaluwarsa pada Januari 2024, ia mengalami masalah yang sama; sertifikat baru harus diterbitkan di perangkat dan tidak dapat dipindahkan ke Azure Key Vault
-
Azure Code Signing
- Seorang peserta mengatakan ia telah bermigrasi ke Azure Code Signing dan akan mencoba menghubungi Microsoft serta tim terkait
- Maintainer menjawab bahwa ia telah mengirim email langsung ke AzureCodeSigningTAP
- Seorang peserta yang mengaku sebagai engineer Azure Code Signing mengatakan layanan tersebut mendukung GitHub Actions dan menyarankan untuk menghubunginya jika diperlukan
-
Penandatanganan mandiri
- Seorang peserta bertanya apakah mereka pernah mempertimbangkan cara menandatangani biner sendiri dan meminta pengguna memasang sertifikat publik
- Maintainer menjawab bahwa itu belum dipertimbangkan dan mereka sedang meninjau opsi-opsi yang diusulkan dalam diskusi
Keputusan akhir
- Pada 6 November 2023, maintainer menyampaikan terima kasih atas berbagai opsi yang diusulkan dan mengatakan telah memutuskan untuk menggunakan Azure Code Signing
- Dengan keputusan ini, ImageMagick dapat kembali menandatangani biner
- Proses penyiapannya disebut telah dirangkum dalam tulisan di repositori terpisah, ImageMagick now uses Azure Code Signing
1 komentar
Opini Hacker News
Saya membuat pemutar video open-source gratis untuk pelatih e-sports, dan saya paham rasa sakitnya karena terus mendapat keluhan bahwa pengguna harus melewati peringatan saat instalasi pertama
Saya bisa membayar biaya sertifikat, tetapi untuk proyek yang sudah saya luangkan waktu untuk dibagikan secara gratis, saya tidak ingin sampai harus mengeluarkan uang juga
Akan bagus kalau ada layanan seperti Let's Encrypt untuk software open-source, tetapi dari sudut pandang Microsoft atau Apple, ini bisa membuat orang keluar dari walled garden bernama app store, jadi tampaknya bertentangan dengan kepentingan inti mereka
Saya sudah membuat software hampir 25 tahun, dan cukup pahit rasanya melihat kepemilikan atas komputer saya sendiri berkurang atas nama “keamanan”
https://www.vodon.gg/
Jawaban yang umum adalah bahwa sertifikat penandatanganan kode bertujuan menjadi bukti identitas hukum, agar orang yang menyebarkan malware bisa dihukum secara offline, atau agar kebijakan yang hanya mengizinkan instalasi software dari daftar penerbit tertentu dapat diterapkan
Sebaliknya, sertifikat validasi domain untuk HTTPS dimaksudkan untuk membuktikan kendali atas nama DNS, dan itu bisa diverifikasi dengan sarana teknis otomatis serta tidak harus terhubung dengan identitas offline
Sertifikat Let's Encrypt memastikan bahwa suatu kunci tampaknya dikendalikan oleh pihak yang mengendalikan nama DNS tertentu, sedangkan sertifikat penandatanganan kode mencoba memastikan sampai tingkat bahwa kunci itu tampaknya dikendalikan oleh perwakilan dari badan hukum tertentu yang ada di yurisdiksi tertentu, sehingga biaya untuk memverifikasinya secara berguna jauh lebih besar
Suatu saat pemerintah mungkin menyediakan cara untuk mengotomatisasi ini, tetapi objek yang dibuktikan dan cara verifikasi kedua jenis sertifikat tersebut cukup berbeda
Diskusi terkait sudah berlanjut lebih panjang di https://news.ycombinator.com/item?id=38056024
Jika pengguna benar-benar peduli sejauh itu, mereka semestinya bersedia ikut menanggung biayanya; kalau tidak, status tanpa tanda tangan juga seharusnya tidak menjadi masalah
Sepertinya peringatan ini hilang setelah jumlah unduhan cukup banyak terkumpul
Kalau memakai Mac, kekhawatiran seperti ini berkurang
Biaya bukan satu-satunya masalah
Saya selama ini mengelola penandatanganan melalui workflow rilis otomatis
https://github.com/technion/rustypwneddownloader/blob/main/....
Dengan aturan baru, workflow ini tidak bisa dipakai, dan sulit bagi saya untuk menerima klaim bahwa memindahkan build ke desktop saya, memakai kunci penandatanganan hardware, lalu mengunggahnya dengan cara yang tidak otomatis dan tidak transparan adalah peningkatan keamanan
Pertama, private key yang disimpan sebagai file bisa dicuri diam-diam, dan jika itu terjadi satu-satunya pilihan yang tersisa adalah mencabutnya
Ini alasan utama adanya persyaratan HSM; pembuat malware sudah melakukan hal semacam ini cukup lama, dan pencabutan sulit serta mahal karena berbagai alasan
HSM juga bisa dicuri, tetapi seseorang harus membobol kantor atau rumah dan membawa barangnya, sehingga kemungkinan besar akan ketahuan
Kredensial untuk memakai HSM juga bisa dicuri, tetapi bisa diganti dengan mudah dan cepat; jadi jika Anda tahu PIN Anda terekam keylogger, setelah pulih dari kompromi Anda cukup mengganti PIN dan tidak perlu mencabut sertifikat
Kedua, penandatanganan otomatis di CI sebenarnya bisa berbahaya
Siapa pun yang bisa mendorong kode ke sistem CI bisa mendapatkan tanda tangan kode atas nama Anda, dan Anda mungkin tidak menyadarinya
Karena kunci selalu online, jika sistem CI diretas maka selesai sudah; bahkan jika tidak, CI menjalankan banyak kode arbitrer dan tidak diawasi ketat, sehingga siapa pun yang bisa menyelipkan kode menjadi titik lemah
Jika menandatangani secara lokal, Anda bisa benar-benar menjaga kunci tetap offline sampai momen rilis, dan dengan faktor kepemilikan berupa kunci serta faktor pengetahuan berupa kredensial, Anda bisa menerapkan autentikasi dua faktor, sehingga cukup aman
Build pengembangan nightly, alat internal, dan binary sementara yang tidak boleh keluar bisa ditandatangani sendiri secara gratis
Saya menyimpan sertifikat OV .pfx di secret GitHub Actions dan menggunakannya dengan cara yang sama
Sertifikat saya kedaluwarsa pada November 2024, dan saya belum memutuskan apa yang akan saya lakukan
Mendapatkan sertifikat sebagai developer individu, bukan perusahaan, saja sudah cukup sulit
Namun pada akhirnya ini seharusnya soal uang
Dengan HSM cloud-hosted seharga $629 per tahun seperti yang disebutkan di artikel asli, ini memungkinkan; jika membayar biaya itu, perintah seperti signtool atau Set-AuthenticodeSignature yang Anda pakai sekarang bisa dibuat berjalan di GitHub Actions: https://docs.digicert.com/en/software-trust-manager/ci-cd-in...
Cukup pasang kunci hardware ke PC SFF/Atom kecil seharga sekitar 100 dolar
Yang berubah hanyalah tahap penandatanganan berpindah dari cloud ke runner lokal
Dari sisi keamanan, saya belum begitu tahu apakah ini harus dilihat sebagai perbaikan atau bukan
Mengejutkan bahwa proyek sepenting dan seluas penggunaan ImageMagick bahkan tidak bisa menyediakan $629 untuk hal esensial seperti penandatanganan perangkat lunak
Ini contoh jelas bahwa industri teknologi gagal mendukung secara finansial proyek open source yang sangat mereka andalkan
Meski memberikan nilai yang sangat besar, proyek-proyek seperti ini sering kali tidak mampu menarik kembali nilai yang cukup agar berkelanjutan
Ini menjadi reminder yang dingin bahwa perlu ada perubahan besar dalam cara kita memperlakukan dan menilai kontribusi open source
Intinya apakah ini soal keamanan, atau soal mendorong pasar yang hanya bisa diikuti jika membayar sambil meneriakkan “keamanan”
Rasanya justru seharusnya kebalikannya
$629 bukan uang kecil
Ini adalah sesuatu yang Microsoft ciptakan sendiri di ekosistem Windows
Bukan soal membayar sewa kepada Microsoft atau mitranya
Editor teks desktop saya, KeenWrite, menggunakan Wine, rcedit-x64.exe, osslsigncode, dan skrip shell untuk menandatangani binary Windows
Pertama, rcedit-x64.exe menambahkan informasi identitas ke binary
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/installe...
Setelah itu osslsigncode menerapkan sertifikat
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...
Seperti yang disebut sebelumnya, proyek open source dengan pendapatan 0 dolar harus membayar agar bisa didistribusikan di Windows berarti berkurangnya kepemilikan atas komputer saya
Sekarang harus berbasis HSM
Saya pernah mengalami neraka penandatanganan aplikasi di Windows maupun macOS, dan kondisinya makin buruk
Pertama-tama, hal ini membuat saya ingin menyediakan apa pun sebagai aplikasi web
Browser dalam banyak hal memberikan pengalaman yang jauh lebih baik, dan keamanan juga sudah menjadi pengalaman yang terintegrasi dengan baik; sebaliknya sistem operasi berusia 25 tahun terasa seperti menempelkan keamanan belakangan
Di dalam Apple mungkin tidak ada yang peduli, tetapi akan cukup lucu kalau ini menjadi retakan yang meruntuhkan monopoli hardware–software
Kedua, saya penasaran mengapa pihak ketiga tidak bisa menyediakan penandatanganan seperti ini sebagai layanan
Secara teknis, bukankah tidak ada batasan jumlah aplikasi yang bisa saya tanda tangani?
Dari sudut pandang pengguna, saya juga tidak tahu mengapa menjadi masalah jika sertifikatnya ditandatangani atas nama ABC Corp yang dipercaya sistem operasi, bukan atas nama saya
Salah satu mata rantai bisa saja dicabut, tetapi secara teknis tampaknya mungkin, dan saya juga penasaran apakah ini secara eksplisit dilarang di suatu bagian EULA yang saya setujui dalam keadaan linglung
Meski begitu saya sangat puas dengan hasilnya dan para pengguna tampaknya juga begitu
Lucunya, baru-baru ini ada seseorang yang merekomendasikan saya untuk mencobanya, dan ia cukup terkejut ketika tahu bahwa saya adalah penulis utamanya
Dalam skenario ini, apakah mereka menandatangani apa saja sambil menutup mata? Kalau begitu jelas tidak baik
Alternatifnya adalah proses tinjauan dan audit yang panjang, tetapi jika ada sesuatu yang lolos, dampaknya tetap mengenai pihak penanda tangan
Kalau bukan driver perangkat, kita makin dekat ke titik di mana aplikasi bisa dikompilasi ulang untuk digunakan di browser sisi klien
Di perusahaan, kami baru-baru ini mengalami masalah yang sama, dan baru mengetahui perubahan persyaratan ketika tidak bisa memperbarui sertifikat dari penyedia lama
Sekarang informasi tentang bagaimana seharusnya melakukan code signing Windows ternyata sangat sedikit
Kami tidak ingin menggunakan perangkat fisik, dan itu tidak realistis untuk tim yang sepenuhnya remote
Pada akhirnya kami memutuskan memakai Azure KeyVault bersama Digicert
Saya tidak suka Comodo, alias Sectigo
Informasi untuk benar-benar membuat kombinasi ini bekerja sangat sedikit, dan kami harus mengeluarkan sekitar $600 bahkan sebelum bisa menguji apakah ini berfungsi
Setelah konfigurasi selesai, semuanya berjalan baik
Setup baru untuk menandatangani lewat Azure lebih aman daripada menyimpan private key di sistem CI
Namun saya tidak pernah menyangka penandatanganan aplikasi Windows akan lebih sulit daripada penandatanganan macOS atau iOS
Misi tercapai
Seperti yang Anda katakan, informasinya kurang, jadi sepertinya akan berguna bagi banyak orang termasuk saya
Saya penasaran apakah ada yang pernah memakai SignPath(https://signpath.org) yang disebut di salah satu jawaban
Di situs webnya tertulis “SignPath Foundation provides reliable code signing for Open Source projects.”
Jika ini layanan yang sah, bisa menjadi opsi yang berguna
Saat ini “foundation” tersebut dijalankan oleh perusahaan SignPath, tetapi mereka mengatakan berharap suatu hari foundation itu berkembang menjadi bentuk yang independen dan dikelola komunitas
Entah ke mana perginya “Developers, developers, developers!”
Hal yang tampak umum pada perusahaan teknologi besar adalah awalnya terlihat bagus, lalu beberapa tahun kemudian pembusukan mulai meresap, dan jika bertahan cukup lama pada akhirnya berubah menjadi entitas parasitik
Perusahaan sebesar Microsoft mustahil tidak bisa membuat cara agar dunia perangkat lunak bebas dan open source, yang katanya mereka dukung, dapat mendistribusikan ke platform mereka tanpa kerumitan atau biaya
Gesekan semacam ini atas nama keamanan kebetulan selalu membantu pendapatan
Saya berharap biaya sertifikat penandatanganan diturunkan secara menyeluruh
Maksimal sekitar 10 dolar saja sudah cukup
Untuk perangkat lunak khusus yang hanya dipakai sangat sedikit orang, biaya saat ini tidak bisa dibenarkan
Satu-satunya alasan yang terpikir mengapa harus semahal ini adalah agar nilainya cukup besar sampai pemilik sah kartu curian menyadarinya
Itu sendiri mungkin bisa berarti semacam verifikasi pembuat
Kalau begitu, bukankah sebagian atau seluruhnya bisa dikembalikan setelah 3 bulan?
Bahkan jika tujuannya verifikasi, rasanya hampir tidak ada alasan untuk memungut uang setiap tahun untuk verifikasi itu, dan pada akhirnya ini terlihat seperti perburuan rente
Seingat saya, Store biayanya sekali bayar $19 dan bukan biaya berulang atau tahunan
Jadi masalah ini hanya berlaku saat mendistribusikan di luar Store
Alasan sertifikat mahal adalah karena pemerintah belum terdigitalisasi dan tidak menangani kriptografi dengan benar, sehingga perlu banyak pekerjaan manual untuk menghubungkan kepemilikan kunci privat dengan kepemilikan identitas legal
Otoritas sertifikat harus mencari informasi pendaftaran di situs web tiap negara, sering kali tanpa API, melakukan panggilan telepon, meninjau pindaian paspor, dan sebagainya
Semua ini padat karya, jadi menjadi mahal
Jika pemerintah menjalankan infrastruktur kunci publik sendiri dan menerbitkan kunci privat sekaligus saat pendaftaran perusahaan, atau jika paspor berisi kunci privat untuk penandatanganan dokumen, biayanya bisa jauh lebih murah
Sayangnya, sudah lama tidak ada kemajuan, dan beberapa negara yang pernah bereksperimen dengan infrastruktur kunci publik nasional sebagian besar sudah menyerah
AS tidak pernah mencoba infrastruktur kunci publik pemerintah berskala besar di luar Departemen Pertahanan, sehingga perusahaan perangkat lunak AS juga tidak merasa perlu mendukung smart card dengan baik
Sistem operasi arus utama tidak memiliki dukungan yang solid, dan standarnya juga kurang
Selain itu ada beban operasional tinggi yang dituntut Microsoft sebagai konsumen sertifikat dan CA/Browser Forum kepada otoritas sertifikat
Ini juga menimbulkan biaya
Biaya tahunan dimaksudkan untuk membagi biaya sepanjang waktu
Otoritas sertifikat mengeluarkan biaya lebih besar daripada biaya satu tahun saat pertama kali menerbitkan sertifikat, tetapi jika mengasumsikan pengguna akan memakainya selama beberapa tahun, mereka bisa melewati titik impas dan memperoleh sedikit laba
https://www.gnu.org/philosophy/right-to-read.en.html
Semakin lama hidup, semakin saya menyadari bahwa RMS adalah Kassandra zaman modern