Keyless SSL now supports FIPS 140-2 L3 hardware security module (HSM) offerings from all major cloud providers

Kunci enkripsi privat yang disimpan dalam penawaran modul keamanan perangkat keras dari semua penyedia cloud utama kini dapat digunakan untuk mengamankan koneksi HTTPS di tepi jaringan global Cloudflare.

Cloudflare membuat, melindungi, dan mengelola mungkin lebih banyak kunci privat SSL/TLS daripada organisasi mana pun di dunia. Kunci privat harus dilindungi dengan hati-hati karena penyerang yang berhasil merebutnya dapat menyamar sebagai situs yang sah dan mendekripsi permintaan HTTPS. Untuk mengurangi risiko ini, Cloudflare memiliki prosedur penanganan kunci yang ketat dan layer isolasi di tepi jaringan yang dirancang untuk melindungi kunci dengan segala cara. Tetapi untuk sebagian kecil pelanggan dengan kebijakan keamanan informasi yang menentukan di mana mereka dapat (atau tidak dapat) menyimpan kunci mereka, perlindungan ini tidak memenuhi kebutuhan mereka.

Untuk pelanggan inilah kami merilis Keyless SSL untuk pertama kalinya pada tahun 2014. Keyless SSL adalah protokol yang kami gunakan secara luas di dalam jaringan kami: semua handshake TLS per hari yang dibuat di tepi jaringan Cloudflare yang berlangsung dalam proses yang tidak memiliki akses ke kunci privat pelanggan kami. Data yang diperlukan untuk membuat sesi justru dikirim ke sistem terpisah, di sistem itu dilakukan operasi penandatanganan kriptografi yang diperlukan. Untuk kunci yang di-upload ke atau dihasilkan oleh Cloudflare, kami mengelolanya dengan sistem lain, tetapi beberapa pelanggan ingin mengelolanya sendiri.

[LOGICAL DIAGRAM SHOWING PRIVATE KEYS STORED ON HSMs BEING USED FOR TLS HANDSHAKE]

Secara historis, kunci ditempatkan di server yang menjalankan daemon sumber terbuka gokeyless yang kami sediakan untuk memproses handshake, atau diamankan dalam modul keamanan perangkat keras (HSM) di tempat pengguna yang memiliki antarmuka dengan gokeyless menggunakan protokol standar yang disebut PKCS#11. Namun, karena perusahaan layanan keuangan, perawatan kesehatan, mata uang kripto, dan perusahaan lain dengan aturan sangat ketat atau berfokus pada keamanan telah beralih ke cloud, maka berbagai perusahaan ini tidak dapat begitu saja mengirimkan berbagai unit perangkat mahal itu dan meminta Amazon, Google, IBM, atau Microsoft untuk menempatkannya di rak dan menyusunnya.

Untuk para pelanggan ini, terutama mereka yang kebijakan keamanan informasinya mengharuskan modul HSM tervalidasi FIPS 140-2 Level 3, kami mengumumkan bahwa Keyless SSL kini mendukung modul HSM yang di-host di cloud berikut: Amazon Cloud HSM; Google Cloud HSM; IBM Cloud HSM; Microsoft Azure Dedicated HSM dan Managed HSM. Kami juga mendukung semua HSM lain yang menerapkan standar PKCS#11, termasuk seri seperti nCipher nShield Connect dan Thales Luna.

Ikhtisar HSM

HSM adalah mesin yang dibangun untuk tujuan khusus yang tahan terhadap upaya perusakan, tahan terhadap kelemahan seperti serangan saluran sisi, dan dioptimalkan untuk melakukan operasi kriptografi seperti penandatanganan dan deskripsi. HSM dapat diterapkan sebagai unit perangkat berdiri sendiri, sebagai kartu ekspansi yang dipasang di dalam server, atau, yang terbaru, sebagai layanan cloud.

Sebagai pengganti membuat kunci privat di server dan melakukan upload kunci ke HSM, vendor dan ahli keamanan biasanya menyarankan agar kunci dibuat pada (dan tidak boleh meninggalkan) perangkat itu sendiri. HSM memiliki jaminan keacakan yang lebih baik dibandingkan server serbaguna, dan mengambil tindakan pencegahan khusus untuk melindungi kunci dalam memori sebelum menyinkronkannya ke disk dalam keadaan terenkripsi. Jika diperlukan operasi yang membutuhkan kunci privat, layanan melakukan panggilan API yang diautentikasi ke perangkat menggunakan pustaka yang disediakan oleh vendor HSM.

HSM dan FIPS 140-2 level 3

HSM biasanya divalidasi terhadap publikasi Federal Information Process Standard (FIPS) 140-2: Persyaratan Keamanan untuk Modul Kriptografi Ada empat level — 1 hingga 4 — yang menetapkan persyaratan yang semakin ketat seputar algoritme yang disetujui, fungsi keamanan, kontrol akses berbasis peran, dan perlindungan bukti/ketahanan dari upaya perusakan.

The National Institute of Standards and Technology (NIST) menerbitkan garis pedoman ini, mengelolaProgram Validasi Modul Kriptografi, dan menerbitkan database modul tervalidasi yang dapat dicari, yang mencakup penawaran yang tercantum di bawah ini. Kami telah menyediakan petunjuk tentang cara penggunaannya dengan Cloudflare.

Memulai penawaran cloud

Semua pelanggan yang telah ada dari Keyless SSL dapat segera menggunakan teknologi ini, dan Anda dapat membaca petunjuk untuk melakukannya di https://developers.cloudflare.com/ssl/keyless-ssl/hardware-security-modules. Kode sumber tersedia di GitHub: https://github.com/cloudflare/gokeyless.

Contoh ujung-ke-ujung: Microsoft Azure Managed HSM

Tim Microsoft Azure Key Vault merilis Managed HSM. Penawaran ini divalidasi FIPS 140-2 Level 3 dan terintegrasi dengan layanan Azure seperti Azure Storage, Azure SQL, dan Azure Information Protection. Managed HSM tersedia di wilayah berikut: AS Timur 2, AS Tengah Selatan, Eropa Utara, dan Eropa Barat.

Petunjuk di bawah ini diambil dari Panduan mulai cepat: Menyediakan dan mengaktifkan HSM terkelola menggunakan Azure CLI, dilanjutkan dengan petunjuk penggunaan Managed HSM dengan Cloudflare. Perintah dijalankan pada VM Ubuntu yang dibuat di wilayah yang sama (AS Tengah Selatan) dengan wilayah HSM; di tempat ini kami juga akan menerapkan daemon Cloudflare Keyless SSL.

Menyediakan dan mengaktifkan HSM

Pertama kita login melalui CLI dan membuat grup sumber daya untuk Managed HSM di salah satu wilayah yang didukung. Perhatikan bahwa Anda mungkin mendapatkan peringatan dari berbagai perintah berdasarkan status pratinjau penawaran.

$ LOCATION=southcentralus; GROUPNAME=”HSMgroup”; HSMNAME=”KeylessHSM”
$ az login
$ az group create --name $GROUPNAME --location $LOCATION

Berikutnya, kita menyiapkan sumber daya HSM dan mengaktifkannya dengan mengunduh domain keamanan. Contoh di bawah ini memberikan akses administratif ke pengguna yang login, bersama dengan administrator lain yang OID-nya dapat diambil dengan menjalankan perintah oid=$(...) yang sama dari CLI di tempat pengguna tersebut login.

$ MYOID=$(az ad signed-in-user show --query objectId -o tsv)
$ OTHERADMIN_OID=...

$ az keyvault create --hsm-name $HSMNAME --resource-group $GROUPNAME --location $LOCATION --administrators $MYOID $OTHERADMIN_OID

Argument '--hsm-name' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Argument '--administrators' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{- Finished ..
  "id": "/subscriptions/.../resourceGroups/HSMgroup/providers/Microsoft.KeyVault/managedHSMs/Keyles
sHSM",
  "location": "southcentralus",
  "name": "KeylessHSM",
  "properties": {
    "createMode": null,
    "enablePurgeProtection": false,
    "enableSoftDelete": true,
    "hsmUri": "https://keylesshsm.managedhsm.azure.net/",
    "initialAdminObjectIds": [
      "$MYOID",
      "$OTHERADMIN_OID"
    ],
    "provisioningState": "Succeeded",
    "softDeleteRetentionInDays": 90,
    "statusMessage": "The Managed HSM is provisioned and ready to use.",
    "tenantId": "..."
  },
  "resourceGroup": "$GROUPNAME",
  "sku": {
    "family": "B",
    "name": "Standard_B1"
  },
  "tags": {},
  "type": "Microsoft.KeyVault/managedHSMs"
}

Catat properti hsmUri yang dihasilkan dari perintah di atas. Anda akan membutuhkannya segera saat membuat konfigurasi Keyless SSL pada VM Anda.

$ HSMURI="https://keylesshsm.managedhsm.azure.net/"

Sekarang setelah HSM tersedia, Anda harus memberikannya paling sedikit 3 kunci publik RSA. HSM akan mengenkripsi domain keamanan dengan beberapa kunci ini dan mengirimkannya kembali pada Anda; setelah itu, HSM siap digunakan.

$ openssl req -newkey rsa:2048 -nodes -keyout cert_0.key -x509 -days 365 -out cert_0.cer
$ openssl req -newkey rsa:2048 -nodes -keyout cert_1.key -x509 -days 365 -out cert_1.cer
$ openssl req -newkey rsa:2048 -nodes -keyout cert_2.key -x509 -days 365 -out cert_2.cer

$ az keyvault security-domain download --hsm-name $HSMNAME --sd-wrapping-keys ./cert_0.cer ./cert_1.cer ./cert_2.cer --sd-quorum 2 --security-domain-file $HSMNAME-SD.json

Jika Anda menerima pesan kesalahan "Gagal terhubung ke MSI" dan Anda menggunakan cloud shell dari Portal Azure, jalankan login az lagi karena ini adalah masalah yang sudah diketahui.

Setelah HSM Anda tersedia, tambahkan kunci privat Anda ke keyvault

$ az keyvault key import --KeylessHSM

Perintah itu akan menghasilkan URI yang nantinya akan Anda tambahkan ke file Keyless YAML untuk menunjukkan lokasi penyimpanan kunci privat Anda.

Sekarang setelah HSM Anda tersedia dan diaktifkan, Anda perlu membuat sebuah VM yang akan menjadi tempat Anda menerapkan daemon Keyless. Untuk contoh ini, kami akan membuat sebuah VM Ubuntu Xenial di Azure. Pada portal, buka halaman Mesin virtual dan Tambahkan VM. Di sana Anda dapat menggunakan grup sumber daya yang Anda buat sebelumnya untuk HSM. Untuk hasil terbaik, pilih wilayah yang sama dengan wilayah untuk HSM. Perhatikan IP publik dari VM, Anda akan menggunakannya untuk menyambung ke server dari jarak jauh.

Berikutnya, buat konfigurasi pada VM Anda sebagai server kunci. Pertama, Anda perlu menambahkan Repositori Paket Cloudflare. Kemudian, Anda akan memperbarui daftar paket OS Anda dan menginstal server gokeyless.

$ apt-get update
$ echo 'deb http://pkg.cloudflare.com/ Xenial main' |
sudo tee /etc/apt/sources.list.d/cloudflare-main.list
$ curl -C - https://pkg.cloudflare.com/pubkey.gpg | sudo apt-key
$ apt-get update
$ apt-get install gokeyless

Kemudian perbarui file YAML gokeyless. Di sana Anda akan menambahkan nama host server kunci Anda — nama host ini harus memiliki catatan DNS yang mengarah ke VM, zoneID, dan kunci API Origin CA Anda. Tentang zoneID dan kunci API Origin CA dapat ditemukan di dasbor Cloudflare. Selain itu, tunjukkan URI yang mengarah ke direktori dari kunci privat Anda di bawah private_key_stores.

$ vim /etc/keyless/gokeyless.yaml

Terakhir, mulai server keyless.

$ service gokeyless start

Kembali ke portal Azure dan buka port TCP yang diperlukan untuk Azure VM. Buka VM Anda → Networking (Jaringan) → Add inbound port rule (Tambahkan aturan port masuk). Pastikan Anda mengizinkan lalu lintas pada semua port sumber dan menunjukkan Port 2407 sebagai port tujuan.

Simpan perubahan itu, lalu buka dasbor Cloudflare untuk meng-upload sertifikat SSL Anda. Anda akan melihat “Upload Keyless SSL Certificate" (Upload Sertifikat SSL Keyless) di bagian Edge Certificate (Sertifikat Tepi Jaringan) pada tab SSL/TLS. Di sana masukkan medan atau field dengan label server kunci, nama host pada file YAML, port server kunci-- 2407 adalah port default, dan tempelkan sertifikat SSL.

Berikutnya Anda siap untuk uji coba! Jalankan curl -v https://zone.com dan periksa apakah handshake TLS berhasil diselesaikan.

Microsoft Azure Dedicated HSM

Selain penawaran Managed HSM yang kini dalam pratinjau publik, pelanggan Azure dapat membuat konfigurasi tepi jaringan Cloudflare untuk memanfaatkan kunci yang disimpan dalam penawaran HSM Khusus Microsoft, berdasarkan seri SafeNet Luna Network HSM 7 Model A790.

HSM Azure Dedicated divalidasi terhadap FIPS 140-2 Level 3 dan eIDAS Kriteria Umum EAL4+. Setelah mengikuti petunjuk penerapan HSM, pelanggan harus mengikuti petunjuk Keyless SSL khusus Azure di sini.

Amazon Web Services (AWS) Cloud HSM

AWS CloudHSM juga menyediakan HSM tervalidasi FIPS 140-2 Level 3 untuk menyimpan kunci privat Anda.

Versi resmi dari Penyedia Terraform AWS kini menyertakan dukungan untuk aws_cloudhsm_v2_cluster, yang adalah versi yang didukung Cloudflare. Setelah menyiapkan klaster AWS CloudHSM, pelanggan harus mengikuti petunjuk Keyless SSL khusus AWS di sini.

Google Cloud HSM

Google Cloud HSM menggunakan Cloud KMS dari GCP sebagai ujung depannya dan memungkinkan host kunci pada HSM tervalidasi FIPS 140-2 Level 3. Selain itu, Google menawarkan kemampuan untuk host HSM Anda sendiri di ruang yang disediakan Google; sebaiknya menghubungi perwakilan akun GCP Anda untuk informasi lebih lanjut tentang opsi ini.

Setelah key ring (ring kunci) dan kunci dibuat di dalam HSM, pelanggan harus mengikuti petunjuk Keyless SSL khusus Google Cloud di sini. Perincian tambahan tentang penggunaan kunci asimetris dengan GCP KMS dapat ditemukan di sini.

IBM Cloud

IBM Cloud HSM 7.0 menyediakan kemampuan HSM tervalidasi FIPS 140-2 Level 3. Penawaran ini didasarkan pada seri SafeNet Luna A750.

Setelah menyiapkan HSM, pelanggan harus merujuk ke petunjuk Keyless SSL khusus IBM di sini.

Mendapatkan bantuan dan memberi umpan balik

HSM menawarkan kemampuan perlindungan kunci yang kuat tetapi dapat menjadi rumit untuk disiapkan dan diterapkan. Jika Anda perlu bantuan dalam menerapkan HSM di penyedia cloud Anda, kami menyarankan memulai dengan saluran dukungan penyedia itu.

Namun, jika Anda perlu bantuan untuk membuat konfigurasi HSM agar berfungsi dengan tepi jaringan Cloudfare, atau Anda ingin memberi umpan balik tentang prosesnya, sebaiknya menghubungi langsung tim Teknik Solusi Anda yang dapat menghubungkan Anda dengan spesialis Keyless SSL di Cloudflare.