1 poin oleh GN⁺ 2023-10-30 | 1 komentar | Bagikan ke WhatsApp
  • 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 seperti magick.exe di 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

 
GN⁺ 2023-10-30
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/

    • Di forum Let's Encrypt pun permintaan seperti ini terus ada sejak awal proyek
      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
    • Mungkin ini terdengar naif, tetapi solusinya tampak cukup jelas: crowdsource biaya sertifikat, lalu tanda tangani software hanya selama uangnya masuk
      Jika pengguna benar-benar peduli sejauh itu, mereka semestinya bersedia ikut menanggung biayanya; kalau tidak, status tanpa tanda tangan juga seharusnya tidak menjadi masalah
    • Jika tidak ditandatangani, ada rasa sakit lain: Chrome juga menampilkan peringatan saat mengunduh
      Sepertinya peringatan ini hilang setelah jumlah unduhan cukup banyak terkumpul
    • Windows itu penuh kerepotan, iklan, tusukan dari belakang, pelacakan, dan pemaksaan upgrade hardware; saya tidak mengerti kenapa orang memakainya
      Kalau memakai Mac, kekhawatiran seperti ini berkurang
    • Untuk aplikasi jenis utilitas, Microsoft Store terasa seperti lelucon
  • 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

    • Suka atau tidak, bagi sebagian besar proyek ini memang perbaikan
      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 juga persis berada di posisi yang sama
      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...
    • Saya tidak yakin soal GitHub Actions, tetapi mungkin ini bisa diselesaikan dengan runner CI lokal
      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
    • Jika akibatnya orang jadi sama sekali tidak menandatangani binary mereka, itu jelas merupakan hasil yang negatif
  • 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

    • Menurut saya masalahnya bukan $629 itu sendiri, melainkan orang dipaksa membayar untuk sesuatu yang banyak orang sama sekali tidak sepakat sebagai “wajib”
      Intinya apakah ini soal keamanan, atau soal mendorong pasar yang hanya bisa diikuti jika membayar sambil meneriakkan “keamanan”
    • Tidak jelas mengapa proyek ImageMagick harus membayar uang kepada Microsoft
      Rasanya justru seharusnya kebalikannya
    • Ini bisa dilihat sebagai kegagalan industri teknologi mendanai open source, tetapi saya melihatnya sebagai kegagalan menyediakan sistem keamanan seperti ini tanpa gatekeeping finansial
      $629 bukan uang kecil
    • Saya tidak bisa menerima sebagai hal normal bahwa untuk mendistribusikan sesuatu yang dibuat gratis, kita harus membayar $629
      Ini adalah sesuatu yang Microsoft ciptakan sendiri di ekosistem Windows
    • Perangkat lunak bebas adalah soal kebebasan
      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

    • Sebagai catatan, cara ini tidak akan bisa memperbarui sertifikat
      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

    • Di Pianojacq saya melalui proses keputusan yang persis sama, dan banyak hal menjadi jauh lebih sulit, terutama pekerjaan database
      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
    • Saya rasa ini akan menjadi masalah tanggung jawab
      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
    • WASM dan WebGPU sedang mempersempit kesenjangan performa antara browser dan native
      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

    • Di suatu tempat di Microsoft, mungkin ada dua sales rep yang membaca ini lalu high-five
      Misi tercapai
    • Saya jadi berpikir bahwa membuatnya agak sulit dan mahal mungkin memang desain yang disengaja
    • Akan bagus kalau Anda bisa menuliskan bagaimana Anda mengonfigurasinya
      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

    • Melihat vim dan transmission menautkan balik ke sana, tampaknya sah
      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

    • Meski begitu, kalau bukan saya yang melewatkan sesuatu, saya tidak mengerti mengapa ImageMagick menunggu sampai hari kedaluwarsa untuk memposting tulisan ini
  • 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

    • Microsoft sebenarnya sudah menurunkan biayanya
      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