Skip to main content

V6.1.3 Data Classification

Requirement:#

Verify that regulated financial data is stored encrypted while at rest, such as financial accounts, defaults or credit history, tax records, pay history, beneficiaries, or de-anonymized market or research records.

Explanation:#

Требование гласит, что регулируемые финансовые данные должны храниться в зашифрованном формате. Это относится к чувствительной информации, такой как финансовые счета, неплатежи или кредитная история, налоговые записи, история заработной платы, бенефициары, а также деанонимизированные записи о рынке или исследованиях.

Регулируемые финансовые данные содержат очень чувствительную информацию, на которую распространяются юридические и нормативные требования. Хранение этих данных в зашифрованном формате обеспечивает дополнительный уровень защиты от несанкционированного доступа или утечки данных. Шифрование гарантирует, что даже если данные будут скомпрометированы, они останутся неразборчивыми без соответствующих ключей расшифровки.

Remediation:#

1. Identify and Classify Regulated Financial Data#

Начните с определения и классификации регулируемых финансовых данных, которые подпадают под действие данного требования. Сюда входит такая информация, как финансовые счета, кредитная история, налоговые записи, история заработной платы, бенефициары, а также любые деанонимизированные записи о рынке или исследованиях.

2. Select Appropriate Encryption Algorithms and Key Management#

Выберите надежные алгоритмы шифрования и обеспечьте использование безопасных методов управления ключами. Алгоритм шифрования должен быть проверенным в отрасли и соответствовать нормативным стандартам. Использование соответствующих процедур управления ключами включает безопасную генерацию, хранение и обращение ключей шифрования.

3. Implement Encryption at Rest#

Шифруйте регулируемые финансовые данные, когда они хранятся в базах данных, файловых системах или любых других носителях. Этого можно достичь с помощью библиотек шифрования, функций шифрования баз данных или шифрования на уровне файлов. Убедитесь, что шифрование применяется до записи данных в хранилище и что данные остаются зашифрованными, когда они активно не используются.

4. Protect Encryption Keys#

Защитите ключи шифрования с помощью надежных средств контроля доступа и методов управления ключами шифрования. Используйте надежные механизмы хранения, такие как аппаратные модули безопасности (HSM) или системы управления ключами, для защиты ключей шифрования от несанкционированного доступа.

Примеры:#

В этом примере таблица financial_data в базе данных MySQL настроена нашифрование данных. База данных обрабатывает шифрование и дешифрование автоматически: Encrypting Financial Data in a Database (MySQL) using Transparent Data Encryption (TDE)

ALTER TABLE financial_data ENCRYPTED=YES;

В этом примере финансовые данные считываются из файла, шифруются с помощью алгоритма AES-256 в режиме Cipher Block Chaining (CBC) с PKCS5Padding, а затем записываются обратно в файл в зашифрованном виде: Encrypting Financial Data in a File System using AES-256 and Java

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
// Generate a secure AES-256 key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256);
SecretKey secretKey = keyGenerator.generateKey();
// Initialize the encryption cipher
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// Read the financial data from a file
byte[] data = Files.readAllBytes(Path.of("financial_data.txt"));
// Encrypt the data
byte[] encryptedData = cipher.doFinal(data);
// Write the encrypted data back to the file
Files.write(Path.of("financial_data_encrypted.txt"), encryptedData, StandardOpenOption.CREATE);

Additional:#

CWE - CWE-311: Отсутствует шифрование конфиденциальных данных (4.10) (mitre.org)