Bagikan melalui


Bingkai Keamanan: Kriptografi | Mitigasi

Produk/Layanan Artikel
Aplikasi Web
Database
Perangkat IoT
Gateway IoT Cloud
Klien Dynamics CRM Seluler
Klien Dynamics CRM Outlook
Server Identitas

Gunakan hanya cipher blok simetris dan panjang kunci yang disetujui

Judul Detail
Komponen Aplikasi Web
Fase SDL Build
Teknologi yang Berlaku Generik
Atribut T/A
Referensi T/A
Langkah-langkah

Produk hanya boleh menggunakan cipher blok simetris dan panjang kunci terkait yang telah disetujui secara eksplisit oleh Crypto Advisor di organisasi Anda. Algoritma simetris yang disetujui di Microsoft mencakup cipher blok berikut:

  • Untuk kode baru SEL-128, SEL-192, dan SEL-256 dapat diterima
  • Untuk kompatibilitas mundur dengan kode yang ada, tiga kunci 3DES dapat diterima
  • Untuk produk yang menggunakan cipher blok simetris:
    • Standar Enkripsi Lanjutan (AES) diperlukan untuk kode baru
    • Data Encryption Standard triple tiga kunci (3DES) diizinkan dalam kode yang ada untuk kompatibilitas mundur
    • Semua cipher blok lainnya, termasuk RC2, DES, 2 Key 3DES, DESX, dan Skipjack, hanya dapat digunakan untuk mendekripsi data lama, dan harus diganti jika akan digunakan untuk enkripsi
  • Untuk algoritma enkripsi blok simetris, diperlukan panjang kunci minimum 128 bit. Satu-satunya algoritma enkripsi blok yang direkomendasikan untuk kode baru adalah SEL (SEL-128, SEL-192 dan SEL-256 semuanya dapat diterima)
  • 3DES tiga kunci saat ini dapat diterima jika sudah digunakan dalam kode yang ada; transisi ke SEL disarankan. DES, DESX, RC2, dan Skipjack tidak lagi dianggap aman. Algoritma ini hanya dapat digunakan untuk mendekripsi data yang ada demi kompatibilitas mundur, dan data harus dienkripsi ulang menggunakan cipher blok yang direkomendasikan

Harap dicatat bahwa semua cipher blok simetris harus digunakan dengan mode sandi yang disetujui, yang memerlukan penggunaan vektor inisialisasi (VI) yang sesuai. VI yang sesuai, biasanya merupakan angka acak dan tidak pernah menjadi nilai konstan

Penggunaan algoritma kripto lama atau yang tidak disetujui dan kunci yang lebih singkat untuk membaca data yang ada (dibandingkan dengan menulis data baru) dapat diizinkan setelah mendapat ulasan oleh Crypto Board organisasi Anda. Namun, Anda harus mengajukan pengecualian terhadap persyaratan ini. Selain itu, dalam penyebaran perusahaan, produk harus mempertimbangkan administrator peringatan ketika kripto lemah digunakan untuk membaca data. Peringatan tersebut harus jelas dan dapat ditindaklanjuti. Dalam beberapa kasus, mungkin tepat untuk memiliki Kebijakan Grup mengontrol penggunaan kripto yang lemah

Algoritma .NET yang diizinkan untuk kelincahan kripto terkelola (sesuai urutan preferensi)

  • AesCng (sesuai dengan FIPS)
  • AuthenticatedAesCng (sesuai dengan FIPS)
  • AESCryptoServiceProvider (sesuai dengan FIPS)
  • AESManaged (tidak sesuai dengan FIPS)

Harap dicatat bahwa algoritma-algoritma ini tidak ada yang dapat ditentukan melalui metode SymmetricAlgorithm.Create atau CryptoConfig.CreateFromName tanpa membuat perubahan pada file machine.config. Perhatikan juga bahwa AES dalam versi .NET sebelum .NET 3.5 diberi nama RijndaelManaged, dan AesCng dan AuthenticatedAesCng>tersedia melalui CodePlex dan memerlukan CNG di OS yang mendasarinya

Gunakan mode cipher blok dan vektor inisialisasi yang disetujui untuk cipher simetris

Judul Detail
Komponen Aplikasi Web
Fase SDL Build
Teknologi yang Berlaku Generik
Atribut T/A
Referensi T/A
Langkah-langkah Semua cipher blok simetris harus digunakan dengan mode cipher simetris yang disetujui. Satu-satunya mode yang disetujui adalah CBC dan CTS. Secara khusus, mode operasi buku kode elektronik (ECB) harus dihindari; penggunaan ECB memerlukan ulasan Crypto Board organisasi Anda. Semua penggunaan OFB, CFB, CTR, CCM, dan GCM atau mode enkripsi lainnya harus ditinjau oleh Crypto Board organisasi Anda. Menggunakan kembali vektor inisialisasi (VI) yang sama dengan cipher blok dalam "mode cipher streaming," seperti CTR, menyebabkan data terenkripsi terungkap. Semua cipher blok simetris juga harus digunakan dengan vektor inisialisasi (VI) yang sesuai. VI yang sesuai adalah angka yang kuat dan acak secara kriptografis dan tidak pernah menjadi nilai konstan.

Gunakan algoritma asimetris, panjang kunci, dan padding yang disetujui

Judul Detail
Komponen Aplikasi Web
Fase SDL Build
Teknologi yang Berlaku Generik
Atribut T/A
Referensi T/A
Langkah-langkah

Penggunaan algoritma kriptografi terlarang menimbulkan risiko signifikan terhadap keamanan produk dan harus dihindari. Produk hanya boleh menggunakan algoritma kriptografi tersebut dan panjang kunci terkait dan padding yang telah disetujui secara eksplisit oleh Crypto Board organisasi Anda.

  • RSA- dapat digunakan untuk enkripsi, pertukaran kunci, dan tanda tangan. Enkripsi RSA harus hanya menggunakan mode padding OAEP atau RSA-KEM. Kode yang ada dapat menggunakan PKCS #1 mode padding v1.5 hanya untuk kompatibilitas. Penggunaan padding null dilarang secara eksplisit. Kunci >= 2048 bit diperlukan untuk kode baru. Kode yang ada mungkin mendukung kunci < 2048 bit hanya untuk kompatibilitas mundur setelah ditinjau oleh Dewan Crypto organisasi Anda. Kunci < 1024 bit hanya dapat digunakan untuk mendekripsi/memverifikasi data lama, dan harus diganti jika digunakan untuk operasi enkripsi atau penandatanganan
  • ECDSA- hanya dapat digunakan untuk tanda tangan. ECDSA dengan >=256-bit kunci diperlukan untuk kode baru. Tanda tangan berbasis ECDSA harus menggunakan salah satu dari tiga kurva yang telah disetujui NIST (P-256, P-384, atau P521). Kurva yang telah dianalisis secara menyeluruh dapat digunakan hanya setelah peninjauan dengan Crypto Board organisasi Anda.
  • ECDH- hanya dapat digunakan untuk pertukaran kunci. ECDH dengan >=256-bit kunci diperlukan untuk kode baru. Tanda tangan berbasis ECDSA harus menggunakan salah satu dari tiga kurva yang telah disetujui NIST (P-256, P-384, atau P521). Kurva yang telah dianalisis secara menyeluruh dapat digunakan hanya setelah peninjauan dengan Crypto Board organisasi Anda.
  • DSA- dapat diterima setelah peninjauan dan mendapat ulasan dari Crypto Board organisasi Anda. Hubungi penasihat keamanan Anda untuk menjadwalkan ulasan dari Crypto Board organisasi Anda. Jika penggunaan DSA disetujui, perhatikan bahwa Anda harus melarang penggunaan kunci dengan panjang kurang dari 2048 bit. CNG mendukung panjang kunci 2048-bit dan lebih besar pada Windows 8.
  • Diffie-Hellman- hanya dapat digunakan untuk manajemen kunci sesi. Panjang kunci >= 2048 bit diperlukan untuk kode baru. Kode yang ada mungkin mendukung panjang kunci < 2048 bit hanya untuk kompatibilitas mundur setelah ditinjau oleh Dewan Crypto organisasi Anda. Kunci < 1024 bit tidak dapat digunakan.

    Gunakan generator angka acak yang disetujui

    Judul Detail
    Komponen Aplikasi Web
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah

    Gunakan generator angka acak yang disetujui. Fungsi pseudorandom seperti rand fungsi runtime C, Sistem kelas .NET Framework.Random, atau fungsi sistem seperti GetTickCount, oleh karena itu, tidak boleh digunakan dalam kode tersebut. Penggunaan algoritma dual elliptic curve random number generator (DUAL_EC_DRBG) dilarang

    • CNG- BCryptGenRandom(penggunaan bendera BCRYPT_USE_SYSTEM_PREFERRED_RNG direkomendasikan kecuali pemanggil dapat berjalan di IRQL apa pun yang lebih besar dari 0 [yaitu, PASSIVE_LEVEL])
    • CAPI- cryptGenRandom
    • Win32/64- RtlGenRandom (implementasi baru harus menggunakan BCryptGenRandom atau CryptGenRandom) * rand_s * SystemPrng (untuk mode kernel)
    • .NET- RNGCryptoServiceProvider atau RNGCng
    • Aplikasi Bursa Windows- Windows.Security.Cryptography.CryptographicBuffer.GenerateRandom atau . GenerateRandomNumber
    • Apple OS X (10.7+)/iOS(2.0+)- int SecRandomCopyBytes (SecRandomRef random, size_t count, uint8_t *bytes )
    • Apple OS X (<10.7)- Gunakan /dev/random untuk mengambil nomor acak
    • Java(termasuk kode Google Android Java)- kelas java.security.SecureRandom. Perhatikan bahwa untuk Android 4.3 (Jelly Bean), pengembang harus mengikuti solusi yang direkomendasikan Android dan memperbarui aplikasi mereka untuk menginisialisasi secara eksplisit PRNG dengan entropi dari /dev/urandom atau /dev/random

    Jangan gunakan cipher aliran simetris

    Judul Detail
    Komponen Aplikasi Web
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah Cipher aliran simetris, seperti RC4, tidak boleh digunakan. Alih-alih cipher aliran simetris, produk harus menggunakan cipher blok, khususnya AES dengan panjang kunci setidaknya 128 bit.

    Gunakan algoritma MAC/HMAC/keyed hash yang disetujui

    Judul Detail
    Komponen Aplikasi Web
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah

    Produk hanya boleh menggunakan kode autentikasi pesan (MAC) yang disetujui atau algoritma kode autentikasi pesan berbasis hash (HMAC).

    Kode autentikasi pesan (MAC) adalah sepotong informasi yang dilampirkan pada pesan yang memungkinkan penerimanya untuk memverifikasi keaslian pengirim dan integritas pesan menggunakan kunci rahasia. Penggunaan MAC (HMAC)berbasis hash atau MAC berbasis block-cipher diizinkan selama semua algoritma enkripsi hash atau simetris yang mendasarinya juga disetujui untuk digunakan; saat ini termasuk fungsi HMAC-SHA2 (HMAC-SHA256, HMAC-SHA384 dan HMAC-SHA512) dan MAC berbasis cipher blok CMAC/OMAC1 dan OMAC2 (ini didasarkan pada SEL).

    Penggunaan HMAC-SHA1 dapat diizinkan untuk kompatibilitas platform, tetapi Anda akan diminta untuk mengajukan pengecualian untuk prosedur ini dan menjalani tinjauan Crypto organisasi Anda. Pemotongan HMAC yang kurang dari 128 bit tidak diperbolehkan. Menggunakan metode pelanggan untuk hash kunci dan data tidak disetujui, dan harus menjalani ulasan Crypto Board organisasi Anda sebelum digunakan.

    Gunakan hanya fungsi hash kriptografi yang sudah disetujui

    Judul Detail
    Komponen Aplikasi Web
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah

    Produk harus menggunakan keluarga algoritma hash SHA-2 (SHA256, SHA384, dan SHA512). Jika hash yang lebih pendek diperlukan, seperti panjang output 128-bit agar sesuai dengan struktur data yang dirancang dengan mempertimbangkan hash MD5 yang lebih pendek, tim produk dapat memotong salah satu hash SHA2 (biasanya SHA256). Perhatikan bahwa SHA384 adalah versi SHA512 yang terpotong. Pemotongan hash kriptografi untuk tujuan keamanan yang kurang dari 128 bit tidak diperbolehkan. Kode baru tidak boleh menggunakan algoritma hash MD2, MD4, MD5, SHA-0, SHA-1, atau RIPEMD. Tabrakan hash layak secara komputasi untuk algoritma ini, yang menghancurkannya dengan efektif.

    Algoritma .NET yang diizinkan untuk kelincahan kripto terkelola (sesuai urutan preferensi):

    • SHA512Cng (sesuai dengan FIPS)
    • SHA384Cng (sesuai dengan FIPS)
    • SHA256Cng (sesuai dengan FIPS)
    • SHA512Managed (tidak sesuai dengan FIPS) (gunakan SHA512 sebagai nama algoritma dalam panggilan ke HashAlgorithm.Create atau CryptoConfig.CreateFromName)
    • SHA384Managed (tidak sesuai dengan FIPS) (gunakan SHA384 sebagai nama algoritma dalam panggilan ke HashAlgorithm.Create atau CryptoConfig.CreateFromName)
    • SHA256Managed (tidak sesuai dengan FIPS) (gunakan SHA256 sebagai nama algoritma dalam panggilan ke HashAlgorithm.Create atau CryptoConfig.CreateFromName)
    • SHA512CryptoServiceProvider (sesuai dengan FIPS)
    • SHA256CryptoServiceProvider (sesuai dengan FIPS)
    • SHA384CryptoServiceProvider (sesuai dengan FIPS)

    Gunakan algoritme enkripsi yang kuat untuk mengenkripsi data dalam database

    Judul Detail
    Komponen Database
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi Memilih algoritma enkripsi
    Langkah-langkah Algoritma enkripsi mendefinisikan transformasi data yang tidak dapat dengan mudah dibalik oleh pengguna yang tidak sah. SQL Server memungkinkan administrator dan pengembang untuk memilih di antara beberapa algoritma, termasuk DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-bit RC4, DESX, 128-bit SEL, 192-bit SEL, dan 256-bit SEL

    Paket SSIS harus dienkripsi dan ditandatangani secara digital

    Judul Detail
    Komponen Database
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi Identifikasi Sumber Paket dengan Tanda Tangan Digital, Mitigasi Ancaman dan Kerentanan (SSIS)
    Langkah-langkah Sumber paket adalah individu atau organisasi yang membuat paket. Menjalankan paket dari sumber yang tidak dikenal atau tidak tepercaya dapat berisiko. Untuk mencegah kerusakan paket SSIS yang tidak sah, tanda tangan digital harus digunakan. Selain itu, untuk memastikan kerahasiaan paket selama penyimpanan/transit, paket SSIS harus dienkripsi

    Tambahkan tanda tangan digital ke database penting yang dapat diamankan

    Judul Detail
    Komponen Database
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi TAMBAHKAN TANDA TANGAN (Transact-SQL)
    Langkah-langkah Dalam kasus di mana integritas database penting yang dapat diamankan harus diverifikasi, tanda tangan digital harus digunakan. Database yang dapat diamankan seperti prosedur, fungsi, perakitan, atau pemicu yang disimpan dapat ditandatangani secara digital. Di bawah ini adalah contoh kapan hal ini dapat berguna: Katakanlah ISV (Vendor Perangkat Lunak Independen) telah memberikan dukungan untuk perangkat lunak yang dikirimkan ke salah satu pelanggan mereka. Sebelum memberikan dukungan, ISV ingin memastikan bahwa database yang dapat diamankan dalam perangkat lunak tidak dirusak baik karena kesalahan atau kesengajaan. Jika sekuritas ditandatangani secara digital, ISV dapat memverifikasi tanda tangan digitalnya dan memvalidasi integritasnya.

    Gunakan EKM server SQL untuk melindungi kunci enkripsi

    Judul Detail
    Komponen Database
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi SQL Server Extensible Key Management (EKM),Extensible Key Management Menggunakan Azure Key Vault (SQL Server)
    Langkah-langkah SQL Server Extensible Key Management mengaktifkan kunci enkripsi yang melindungi file database untuk disimpan dalam perangkat off-box seperti modul smartcard, USB device, atau EKM/HSM. Ini juga mengaktifkan perlindungan data dari administrator database (kecuali anggota grup sysadmin). Data dapat dienkripsi dengan menggunakan kunci enkripsi yang hanya dapat diakses oleh pengguna database pada modul EKM/HSM eksternal.

    Gunakan fitur AlwaysEncrypted jika kunci enkripsi tidak boleh diungkapkan ke mesin Database

    Judul Detail
    Komponen Database
    Fase SDL Build
    Teknologi yang Berlaku SQL Azure, OnPrem
    Atribut SQL Version - V12, MsSQL2016
    Referensi Always Encrypted (Mesin Database)
    Langkah-langkah Always Encrypted adalah fitur yang dirancang untuk melindungi data sensitif, seperti nomor kartu kredit atau nomor identifikasi nasional/regional (misalnya nomor jaminan sosial AS), yang disimpan dalam database Azure SQL atau database SQL Server. Always Encrypted memungkinkan klien untuk mengenkripsi data sensitif di dalam aplikasi klien dan tidak pernah mengungkapkan kunci enkripsi ke Mesin Database (SQL Database atau SQL Server). Sebagai hasilnya, Always Encrypted memberikan pemisahan antara mereka yang memiliki data (dan dapat melihatnya) dan mereka yang mengelola data (tetapi tidak boleh memiliki akses)

    Simpan Kunci Kriptografi dengan aman di Perangkat IoT

    Judul Detail
    Komponen Perangkat IoT
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut OS Perangkat - Windows IoT Core, Konektivitas Perangkat - SDK perangkat Azure IoT
    Referensi TPM di Windows IoT Core, Mengatur TPM di Windows IoT Core, Azure IoT Device SDK TPM
    Langkah-langkah Kunci Symmetric atau Certificate Private dengan aman di penyimpanan yang dilindungi perangkat keras seperti TPM atau chip Smart Card. Windows 10 IoT Core mendukung pengguna TPM dan ada beberapa TPM yang kompatibel yang dapat digunakan: TPM (dTPM) Terpisah. Disarankan untuk menggunakan Firmware atau Diskret TPM. TPM Perangkat Lunak hanya boleh digunakan untuk tujuan pengembangan dan pengujian. Setelah TPM tersedia dan kunci disediakan di dalamnya, kode yang menghasilkan token harus ditulis tanpa hard coding informasi sensitif apa pun di dalamnya.

    Contoh

    TpmDevice myDevice = new TpmDevice(0);
    // Use logical device 0 on the TPM 
    string hubUri = myDevice.GetHostName(); 
    string deviceId = myDevice.GetDeviceId(); 
    string sasToken = myDevice.GetSASToken(); 
    
    var deviceClient = DeviceClient.Create( hubUri, AuthenticationMethodFactory. CreateAuthenticationWithToken(deviceId, sasToken), TransportType.Amqp); 
    

    Seperti yang dapat dilihat, kunci utama perangkat tidak ada dalam kode. Sebaliknya, telah tersimpan dalam TPM di slot 0. Perangkat TPM menghasilkan token SAS berumur pendek yang kemudian digunakan untuk terhubung ke IoT Hub.

    Buat kunci simetris acak dengan panjang yang sesuai untuk autentikasi ke IoT Hub

    Judul Detail
    Komponen Gateway IoT Cloud
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut Pilihan Gateway - Azure IoT Hub
    Referensi T/A
    Langkah-langkah IoT Hub berisi Registri Identitas perangkat dan saat menyediakan perangkat, akan menghasilkan kunci Simetris acak secara otomatis. Disarankan untuk menggunakan fitur ini dari Azure IoT Hub Identity Registry untuk menghasilkan kunci yang digunakan untuk autentikasi. IoT Hub juga memungkinkan kunci untuk ditentukan saat membuat perangkat. Jika kunci dibuat di luar IoT Hub selama penyediaan perangkat, disarankan untuk membuat kunci simetris acak atau setidaknya 256 bit.

    Pastikan kebijakan manajemen perangkat diberlakukan yang memerlukan PIN penggunaan dan memungkinkan penghapusan jarak jauh

    Judul Detail
    Komponen Klien Dynamics CRM Seluler
    Fase SDL Penyebaran
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah Pastikan kebijakan manajemen perangkat diberlakukan yang memerlukan PIN penggunaan dan memungkinkan penghapusan jarak jauh

    Pastikan kebijakan manajemen perangkat sudah diberlakukan yang memerlukan PIN/kata sandi/kunci otomatis dan mengenkripsi semua data (misalnya BitLocker)

    Judul Detail
    Komponen Klien Dynamics CRM Outlook
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah Pastikan kebijakan manajemen perangkat sudah diberlakukan yang memerlukan PIN/kata sandi/kunci otomatis dan mengenkripsi semua data (misalnya BitLocker)

    Pastikan kunci penandatanganan digulirkan saat menggunakan Server Identitas

    Judul Detail
    Komponen Server Identitas
    Fase SDL Penyebaran
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi Server Identitas - Kunci, Tanda Tangan, dan Kriptografi
    Langkah-langkah Pastikan tombol penandatanganan digulirkan saat menggunakan Server Identitas. Tautan di bagian referensi menjelaskan bagaimana ini harus direncanakan tanpa menyebabkan pemadaman pada aplikasi yang mengandalkan Server Identitas.

    Pastikan bahwa ID klien dan rahasia klien yang kuat secara kriptografis digunakan di Server Identitas

    Judul Detail
    Komponen Server Identitas
    Fase SDL Build
    Teknologi yang Berlaku Generik
    Atribut T/A
    Referensi T/A
    Langkah-langkah

    Pastikan bahwa ID klien dan rahasia klien yang kuat secara kriptografis digunakan di Server Identitas. Panduan berikut harus digunakan saat membuat ID dan rahasia klien:

    • Buat GUID acak sebagai ID klien
    • Buat kunci 256-bit acak kriptografis sebagai rahasia