bg-blog-articles

Praktik Terbaik Penandatanganan Kode: Pedoman Keamanan Penting untuk Pengembang Perangkat Lunak

Penandatanganan kode memanfaatkan infrastruktur kunci publik (PKI) untuk berfungsi sebagai paspor digital perangkat lunak Anda. Melalui tanda tangan digital, ini menciptakan bukti kriptografi keaslian dan integritas. Ini mengesahkan Anda sebagai penerbit dan memastikan integritas kode dengan membuktikan bahwa kode Anda belum dirusak sejak Anda merilisnya.

Code Signing Best Practices

Ketika pengguna mengunduh perangkat lunak Anda, mereka mempercayai Anda dengan keamanan sistem mereka. Hancurkan kepercayaan itu sekali saja, dan selesai sudah.


Daftar Isi

  1. Lindungi Kunci Pribadi dengan Modul Keamanan Perangkat Keras
  2. Menerapkan Kontrol Akses yang Ketat untuk Kunci Penandatanganan Kode
  3. Beri Cap Waktu pada Kode Anda Selama Proses Penandatanganan
  4. Memisahkan Penandatanganan Uji dari Lingkungan Penandatanganan Rilis
  5. Menerapkan Otentikasi Kode dan Verifikasi Integritas Sebelum Menandatangani
  6. Lakukan Pemindaian Virus pada Kode Sebelum Menandatangani
  7. Putar Tombol dan Gunakan Beberapa Sertifikat
  8. Tanggapi Pencabutan Sertifikat dengan Serius
  9. Memanfaatkan Sertifikat Penandatanganan Kode Validasi yang Diperpanjang
  10. Mengotomatiskan dan Memusatkan Manajemen Penandatanganan Kode
  11. Amankan Rantai Pasokan Perangkat Lunak Anda dengan SSL Dragon

Pertaruhannya menjadi nyata setelah pelanggaran SolarWinds mengekspos kerentanan rantai pasokan perangkat lunak yang kritis, menunjukkan bagaimana kunci penandatanganan yang disusupi dapat menjadi senjata pembaruan perangkat lunak yang sah dan membahayakan ribuan organisasi. Sekarang, lebih dari sebelumnya, mengikuti praktik terbaik penandatanganan kode bukanlah hal yang opsional-ini sangat penting untuk melindungi pengguna dan reputasi Anda.

Melindungi rantai pasokan perangkat lunak telah menjadi prioritas utama bagi organisasi dari semua ukuran. Panduan ini akan membantu Anda menerapkan langkah-langkah keamanan yang penting, baik jika Anda seorang pengembang tunggal atau mengelola pipeline DevOps perusahaan. Baik Anda menandatangani file eksekusi Windows, aplikasi macOS, paket Linux, atau aplikasi seluler untuk iOS dan Android, prinsip-prinsip ini berlaku di semua platform.

Lindungi Kunci Pribadi dengan Modul Keamanan Perangkat Keras

Anda kunci pribadi Anda adalah segalanya dalam penandatanganan kode. Membobolnya, dan penyerang dapat menandatangani malware dengan identitas Anda. Sertifikat Anda akan dicabut, pelanggan Anda kehilangan kepercayaan, dan merek Anda mengalami kerusakan yang mungkin tidak dapat dipulihkan.

Mengapa Keamanan Kunci Pribadi Sangat Penting

Bayangkan kunci pribadi Anda sebagai kunci utama untuk kredibilitas perangkat lunak Anda – kunci ini menghasilkan tanda tangan digital yang membuktikan identitas Anda. Jika seseorang mencurinya, mereka dapat mendistribusikan kode berbahaya yang terlihat seperti berasal dari Anda. Anda harus mencabut sertifikat Anda, menandatangani ulang semua yang pernah Anda rilis, dan berharap pelanggan Anda menyadari perbedaannya sebelum menginstal perangkat lunak yang terinfeksi.

Pendekatan tradisional dengan menyimpan kunci pada hard drive atau membangun server akan menimbulkan masalah. Mesin-mesin pengembang bisa disusupi. Server build dapat dibobol. Bahkan penyimpanan terenkripsi pada perangkat keras biasa membuat kunci rentan terhadap ekstraksi.

Solusi Perangkat Keras Bersertifikat FIPS 140-2

Modul Keamanan Perangkat Keras (HSM ) memecahkan masalah ini dengan menyimpan kunci pribadi dalam perangkat keras yang tahan terhadap gangguan. Sebagai landasan infrastruktur PKI Anda, HSM menyediakan fondasi keamanan yang dibutuhkan oleh kepercayaan berbasis sertifikat. Perangkat ini menghasilkan dan menggunakan kunci secara internal tanpa pernah mengeksposnya ke sistem Anda. Cobalah untuk merusak HSM secara fisik, dan HSM akan menghancurkan kunci.

Sertifikasi FIPS 140-2 penting di sini. Level 2 membutuhkan bukti perusakan fisik, sedangkan Level 3 menambahkan respons perusakan aktif yang meniadakan kunci ketika seseorang mencoba masuk. Bagi sebagian besar organisasi, Level 2 memberikan perlindungan yang solid. Solusi perangkat keras ini terintegrasi secara mulus dengan lingkungan pengembangan Windows, macOS, dan Linux, melindungi kunci Anda apa pun platform pengembangannya. Pemerintah dan aplikasi dengan keamanan tinggi harus mempertimbangkan Level 3.

Token USB menawarkan alternatif HSM portabel. Token ini merupakan perangkat keras kriptografi bersertifikasi FIPS yang dapat Anda bawa, menambahkan keamanan fisik melalui kepemilikan. Otoritas sertifikat utama mendukung implementasi HSM dan token USB untuk sertifikat penandatanganan kode.

Namun, kebijakan CA berbeda-beda, dan Anda perlu membuat rencana untuk mengatasinya. DigiCert dan GoGetSSL mengeluarkan sertifikat penandatanganan kode hanya untuk 1 tahun, dan Anda bisa menggunakan HSM yang disediakan CA atau perangkat keras Anda sendiri.

Sectigo (Comodo) menawarkan sertifikat multi-tahun hingga 3 tahun, tetapi dengan aturan yang lebih ketat. Jika Anda memilih sertifikat 2 atau 3 tahun, Anda harus menggunakan HSM Anda sendiri. Perangkat keras yang disediakan CA hanya tersedia untuk pesanan 1 tahun.

Ingin menandatangani kode? Anda membutuhkan token. Tanpa token, tidak ada penandatanganan-bahkan jika seseorang membobol seluruh jaringan Anda.

Hirarki Keamanan Data

Menerapkan Kontrol Akses yang Ketat untuk Kunci Penandatanganan Kode

Tidak semua orang dalam tim Anda memerlukan akses ke kunci penandatanganan produksi. Bahkan, kebanyakan orang seharusnya tidak memilikinya.

Prinsipnya sederhana: lebih sedikit orang yang memiliki akses berarti lebih sedikit vektor serangan. Siapkan kontrol akses berbasis peran (RBAC ) yang membatasi izin penandatanganan untuk peran tertentu. Tim QA Anda tidak memerlukan akses penandatanganan produksi. Pengembang junior Anda mungkin juga tidak membutuhkannya.

Buat alur kerja persetujuan yang memerlukan beberapa penandatanganan untuk rilis produksi. Satu orang mengirimkan kode untuk ditandatangani, orang lain menyetujuinya, dan baru setelah itu penandatanganan yang sebenarnya terjadi. Pemisahan tugas ini dapat menangkap kesalahan dan mencegah ancaman dari orang dalam.

Menyimpan catatan audit yang komprehensif. Catat siapa yang menandatangani apa, kapan mereka menandatanganinya, dan dari sistem mana. Whitepaper Praktik Terbaik Penandatanganan Kode Dewan Keamanan CA menekankan bahwa pencatatan yang mendetail sangat penting untuk respons insiden dan investigasi forensik. Saat terjadi kesalahan – dan pada akhirnya selalu ada kesalahan – Anda harus tahu persis apa yang terjadi.

Keamanan fisik juga penting:

  • Jangan tinggalkan token USB di atas meja.
  • Jangan menyimpan kredensial akses HSM dalam file teks biasa.
  • Jangan menulis kode PIN pada catatan tempel.

Ini terdengar jelas, tetapi ini adalah masalah umum yang merusak keamanan yang solid.


Beri Cap Waktu pada Kode Anda Selama Proses Penandatanganan

Inilah masalahnya: sertifikat penandatanganan kode akan kedaluwarsa, biasanya setelah satu hingga tiga tahun. Tanpa stempel waktu, tanda tangan Anda menjadi tidak valid ketika sertifikat Anda kedaluwarsa. Pengguna mulai melihat pesan peringatan tentang perangkat lunak yang tidak dipercaya, meskipun tidak ada yang berubah pada kode Anda.

Stempel waktu memperbaiki hal ini dengan menambahkan stempel waktu tepercaya dari server stempel waktu otoritas sertifikat selama proses penandatanganan. Stempel waktu ini membuktikan bahwa Anda menandatangani kode ketika sertifikat Anda masih berlaku. Tanda tangan tetap dipercaya bahkan setelah sertifikat Anda kedaluwarsa atau dicabut.

Anggap saja stempel notaris dengan tanggal. Notaris mungkin sudah pensiun atau menutup kantornya, tetapi stempel mereka pada dokumen Anda dari tahun 2020 masih membuktikan bahwa dokumen tersebut ada dan diverifikasi pada tahun 2020.

Proses teknisnya sangat mudah. Selama penandatanganan, alat Anda menghubungi server stempel waktu yang dijalankan oleh otoritas sertifikat Anda. Server mengembalikan stempel waktu yang telah ditandatangani yang akan disematkan dalam tanda tangan kode Anda. Ketika pengguna memverifikasi tanda tangan Anda di platform apa pun-Windows, macOS, Linux, iOS, atau Android-mereka akan memeriksa sertifikat penandatanganan dan stempel waktu. Proses verifikasi ini menjaga integritas kode dari waktu ke waktu, bahkan ketika sertifikat kedaluwarsa dan standar keamanan berkembang.

Ini juga menghemat uang. Tanpa stempel waktu, Anda harus menandatangani ulang semua perangkat lunak yang didistribusikan setiap kali Anda memperbarui sertifikat. Dengan stempel waktu, rilis lama tetap dipercaya tanpa batas waktu.


Hemat 10% untuk Sertifikat SSL saat memesan dari SSL Dragon hari ini!

Penerbitan yang cepat, enkripsi yang kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

Gambar detail seekor naga yang sedang terbang

Memisahkan Penandatanganan Uji dari Lingkungan Penandatanganan Rilis

Lingkungan pengujian Anda tidak boleh menggunakan kunci penandatanganan yang sama dengan produksi. Tidak pernah.

Sertifikat uji harus ditandatangani sendiri atau dikeluarkan oleh otoritas sertifikat uji internal yang terhubung ke root yang berbeda dari sertifikat produksi Anda. Pemisahan arsitektur ini mencegah kode yang ditandatangani oleh pengujian disalahartikan sebagai perangkat lunak yang siap rilis.

Siapkan infrastruktur penandatanganan yang terpisah untuk setiap lingkungan. Penandatanganan pengujian Anda dapat lebih mudah diakses dan tidak terlalu ketat-pengembang perlu mengulang dengan cepat. Tetapi penandatanganan produksi harus dikunci dengan ketat dengan semua langkah keamanan yang telah kita bahas.

Tandai paket uji dengan jelas. Cantumkan “TEST” atau “BETA” pada nama file. Gunakan pengidentifikasi produk yang berbeda. Buatlah agar kode yang ditandatangani uji coba tidak dapat didistribusikan secara tidak sengaja kepada pelanggan.

Kontrol akses juga harus berbeda secara dramatis. Pengembang mungkin memiliki akses langsung ke penandatanganan pengujian. Penandatanganan produksi harus memerlukan alur kerja persetujuan dan mungkin kredensial yang berbeda sama sekali.

Lingkungan Uji vs Lingkungan Produksi

Menerapkan Otentikasi Kode dan Verifikasi Integritas Sebelum Menandatangani

Penandatanganan kode menyediakan autentikasi kode-mengonfirmasi siapa yang menerbitkan perangkat lunak. Ini tidak mengonfirmasi bahwa perangkat lunak tersebut aman.

Perbedaan ini penting karena Anda pada akhirnya bertanggung jawab atas semua yang Anda tandatangani, meskipun Anda tidak menulis semuanya. Menandatangani kode yang belum Anda verifikasi sama saja dengan ikut menandatangani pinjaman tanpa memeriksa keuangan peminjam.

Terapkan proses pengajuan dan persetujuan sebelum sesuatu ditandatangani. Mintalah seseorang untuk meninjau apa yang ditandatangani. Bandingkan kode di server build Anda dengan repositori kode sumber. Pastikan keduanya sama persis.

Pelanggaran SolarWinds mengajarkan kita bahwa penyerang dapat menyuntikkan kode berbahaya ke dalam pipeline pembuatan. Serangan ini menyoroti pentingnya keamanan rantai pasokan perangkat lunak-setiap komponen, ketergantungan, dan langkah pembuatan merupakan vektor serangan potensial. Jika Anda menandatangani tanpa memverifikasi, Anda mempercayai setiap bagian dari infrastruktur Anda dan setiap bagian kode dari sumber eksternal. Itu bukan taruhan yang ingin Anda lakukan.

Siapkan pemeriksaan otomatis jika memungkinkan. Verifikasi tanda tangan digital pada kode yang dicek oleh pengembang ke dalam repositori Anda. Jalankan alat analisis statis. Buat checksum dari build yang disetujui dan verifikasi sebelum ditandatangani.

Catat semuanya. Ketika seseorang menyerahkan kode untuk ditandatangani, catat apa yang diserahkan, siapa yang menyerahkan, siapa yang menyetujuinya, dan apa yang ditandatangani. Jejak audit ini menjadi sangat penting saat menyelidiki insiden.


Lakukan Pemindaian Virus pada Kode Sebelum Menandatangani

Penandatanganan kode membuktikan bahwa Anda menerbitkan perangkat lunak. Pengguna mempercayai Anda untuk tidak mempublikasikan malware, tetapi sertifikat penandatanganan kode tidak memverifikasi keamanan.

Hal ini penting ketika Anda memasukkan kode dari sumber eksternal-pustaka sumber terbuka, komponen pihak ketiga, kontribusi kontraktor. Anda menandatangani semuanya atas nama Anda.

Pindai semuanya sebelum menandatangani. Gunakan beberapa mesin antivirus jika memungkinkan. Periksa tanda tangan malware yang dikenal, pola yang mencurigakan, dan potensi kerentanan. Hal ini berlaku baik saat Anda menyiapkan file yang dapat dieksekusi Windows, aplikasi macOS, paket Linux, atau aplikasi seluler untuk iOS dan Android.

Menangkap penyisipan berbahaya yang tidak disengaja sebelum penandatanganan akan melindungi pengguna dan reputasi Anda. Menemukannya setelah Anda mendistribusikan malware yang telah ditandatangani berarti pencabutan sertifikat, pemberitahuan kepada pelanggan, dan pengendalian kerusakan.

Pemindaian ini hanya menambah sedikit waktu pada proses pembuatan Anda, namun memberikan perlindungan penting untuk integritas dan keaslian kode. Jadikan ini wajib, bukan opsional.


Putar Tombol dan Gunakan Beberapa Sertifikat

Jangan menaruh semua telur dalam satu keranjang. Menggunakan satu sertifikat penandatanganan kode untuk semua hal akan menciptakan satu titik kegagalan.

Pertimbangkan untuk menggunakan sertifikat yang berbeda untuk lini produk yang berbeda atau rilis utama. Jika Anda menemukan cacat keamanan dalam cara pengelolaan satu sertifikat, Anda hanya perlu mencabut sertifikat tertentu. Produk Anda yang lain tetap tepercaya.

Memutar kunci secara teratur juga membatasi eksposur. Jika seseorang membobol kunci Anda enam bulan yang lalu, namun Anda sudah merotasi ke sertifikat yang baru, maka mereka tidak dapat menandatangani kode saat ini sebagai Anda. Kerusakan terdapat pada rilis yang lebih lama.

Beberapa organisasi memberikan sertifikat unik kepada tim DevOps atau cabang rilis yang berbeda. Hal ini mendistribusikan risiko dan membuat investigasi kompromi menjadi lebih mudah. Ketika terjadi kesalahan, Anda tahu persis sertifikat mana yang terlibat dan rilis mana yang terpengaruh.

Siapkan jadwal rotasi yang menyeimbangkan keamanan dengan biaya operasional. Rotasi tahunan atau dua tahunan berhasil untuk banyak organisasi. Lingkungan dengan keamanan tinggi mungkin dirotasi setiap tiga bulan.


Tanggapi Pencabutan Sertifikat dengan Serius

Pencabutan sertifikat adalah pilihan utama, tetapi terkadang hal ini diperlukan.

Segera cabut jika kunci pribadi Anda dibobol. Jangan menunggu untuk menilai kerusakannya. Jangan berharap tidak ada yang menyadarinya. Cabut, beri tahu otoritas sertifikat Anda, dan mulai penahanan.

Pencabutan mempengaruhi semua kode yang ditandatangani dengan sertifikat tersebut. Pengguna akan melihat peringatan. Sistem otomatis mungkin akan memblokir instalasi. Inilah sebabnya mengapa cap waktu sangat penting – ini membatasi kerusakan pada kode yang ditandatangani setelah cap waktu tetapi sebelum pencabutan.

Lacak sertifikat Anda dengan hati-hati dalam infrastruktur PKI Anda. Ketahui di mana sertifikat itu berada, siapa yang memiliki akses, kapan masa berlakunya, dan kode apa yang ditandatangani. Manajemen siklus hidup sertifikat menjadi sangat penting saat Anda meningkatkan skala.

Laporkan kompromi kepada otoritas sertifikat Anda sesuai dengan prosedur mereka. Mereka akan membantu pencabutan dan mungkin memiliki panduan tentang persyaratan pemberitahuan.

Memiliki rencana pencabutan sebelum Anda membutuhkannya akan membuat prosesnya tidak terlalu kacau. Dokumentasikan langkah-langkahnya, tetapkan tanggung jawab, dan praktikkan prosedurnya.


Memanfaatkan Sertifikat Penandatanganan Kode Validasi yang Diperpanjang

Sertifikat penandatanganan kode Extended Validation (EV) adalah sertifikat digital X.509 yang memberikan jaminan lebih tinggi daripada sertifikat standar. Otoritas sertifikat melakukan verifikasi identitas yang lebih ketat sebelum menerbitkannya.

Sertifikat EV memerlukan penyimpanan perangkat keras yang memenuhi standar FIPS 140-2 Level 2 atau yang lebih tinggi. Anda tidak bisa mendapatkan sertifikat EV dan menyimpannya di hard drive Anda. Perlindungan perangkat keras wajib ini mengurangi risiko kompromi utama.

Sebagian besar sertifikat EV hadir dalam bentuk token USB dengan perlindungan PIN. Anda memerlukan token fisik dan PIN untuk menandatangani kode. Pendekatan dua faktor ini membuat penandatanganan yang tidak sah menjadi lebih sulit.

Penelitian dari Laboratorium Inovasi Forensik Cyber Georgia Tech menemukan bahwa eksekusi bertanda tangan EV menolak 99,99% serangan phishing yang diuji, dibandingkan dengan 90% untuk tanda tangan standar. Sistem operasi termasuk Windows, macOS, dan platform seluler seperti iOS dan Android mengenali tanda tangan EV dan menampilkan indikator kepercayaan yang lebih baik kepada pengguna. Indikator kepercayaan yang ditingkatkan dan pemeriksaan yang ketat membuat perbedaan yang terukur.

Pilih sertifikat EV ketika Anda membutuhkan produk unggulan dengan tingkat kepercayaan maksimum, perangkat lunak yang didistribusikan secara luas, atau aplikasi yang menangani data sensitif. Biaya tambahan dan biaya overhead manajemen akan terbayar dengan kredibilitas dan keamanan yang lebih baik.


Mengotomatiskan dan Memusatkan Manajemen Penandatanganan Kode

Manajemen sertifikat manual tidak dapat diterapkan di lingkungan DevOps di mana banyak tim mengirimkan kode secara terus menerus.

Solusi manajemen siklus hidup sertifikat (CLM) memusatkan kontrol sekaligus mengintegrasikannya dengan pipeline CI/CD. Platform seperti Sectigo Certificate Manager dan AppViewX CERT+ menyediakan kemampuan CLM tingkat perusahaan yang dirancang khusus untuk alur kerja penandatanganan kode. Pengembang mendapatkan akses swalayan untuk menghasilkan tanda tangan digital tanpa akses kunci langsung. Tim keamanan menjaga visibilitas dan menerapkan kebijakan di semua aktivitas penandatanganan.

Platform ini melacak inventaris sertifikat, tanggal kedaluwarsa, dan pola penggunaan. Manajemen terpusat menjadi penting untuk keamanan rantai pasokan perangkat lunak, terutama ketika banyak tim dan kontraktor berkontribusi pada basis kode Anda. Platform ini mengotomatiskan pembaruan dan mempermudah audit. Ketika Anda perlu mengetahui apa yang ditandatangani dengan sertifikat yang mana, informasinya ada di sana.

Integrasi dengan sistem build berarti pengembang tidak perlu memikirkan detail sertifikat. Mereka mengirimkan kode, pipeline menangani penandatanganan secara otomatis menggunakan sertifikat yang sesuai, dan artefak yang ditandatangani keluar di ujung lainnya.

Alur kerja yang telah ditentukan sebelumnya menegakkan kebijakan keamanan Anda. Kode tidak dapat ditandatangani tanpa persetujuan. Sertifikat pengujian tidak dapat digunakan untuk produksi. Pengembang dalam satu unit bisnis tidak dapat mengakses kunci penandatanganan unit lain.

Sentralisasi menyederhanakan keamanan tanpa mempersulit para pengembang. Itulah keseimbangan yang Anda butuhkan-keamanan yang kuat yang bekerja dengan proses pengembangan Anda, bukan melawannya.


Amankan Rantai Pasokan Perangkat Lunak Anda dengan SSL Dragon

SSL Dragon menyediakan sertifikat penandatanganan kode dari otoritas sertifikat terkemuka termasuk DigiCert dan Sectigo. Apakah Anda memerlukan penandatanganan kode standar untuk aplikasi internal atau sertifikat EV untuk perangkat lunak yang didistribusikan secara luas, kami akan membantu Anda memilih solusi yang tepat.

Tim kami memahami tantangan keamanan yang dihadapi pengembang perangkat lunak. Kami dapat memandu Anda melalui pemilihan, penerapan, dan pengelolaan sertifikat untuk memastikan infrastruktur penandatanganan kode Anda mengikuti praktik terbaik di industri.

Jelajahi sertifikat penandatanganan kode SSL Dragon atau hubungi tim kami untuk mendiskusikan solusi mana yang paling sesuai dengan pengembangan perangkat lunak dan persyaratan keamanan Anda. Lindungi rantai pasokan perangkat lunak Anda-pengguna Anda mengandalkannya.

Hemat 10% untuk Sertifikat SSL saat memesan hari ini!

Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

Ditulis oleh

Penulis konten berpengalaman yang berspesialisasi dalam Sertifikat SSL. Mengubah topik keamanan siber yang rumit menjadi konten yang jelas dan menarik. Berkontribusi untuk meningkatkan keamanan digital melalui narasi yang berdampak.