Ответ
Основные цели шифрования данных в информационной безопасности:
-
Конфиденциальность (Confidentiality)
- Что: Обеспечение доступности данных только авторизованным пользователям или системам.
- Как: Преобразование открытого текста (plaintext) в шифрованный текст (ciphertext) с использованием алгоритма и ключа.
- Пример: Шифрование данных на диске (BitLocker) или при передаче по сети (TLS/SSL в HTTPS).
-
Целостность (Integrity)
- Что: Гарантия того, что данные не были изменены несанкционированно во время хранения или передачи.
- Как: Использование криптографических хеш-функций (SHA-256) или кодов аутентификации сообщений (HMAC).
-
Аутентификация (Authentication)
- Что: Подтверждение подлинности источника данных или идентичности сторон, участвующих в обмене.
- Как: Использование цифровых сертификатов и инфраструктуры открытых ключей (PKI) в протоколах типа TLS.
-
Неотрекаемость (Non-repudiation)
- Что: Предотвращение возможности для стороны отрицать факт отправки или получения информации.
- Как: Применение цифровых подписей на основе асимметричного шифрования (RSA, ECDSA).
Пример шифрования на Java с использованием AES:
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AesExample {
public static void main(String[] args) throws Exception {
String plainText = "Hello, Secure World!";
String secretKey = "MySuperSecretKey16"; // Должен быть 16/24/32 байта для AES
// Создание ключа
SecretKeySpec key = new SecretKeySpec(secretKey.getBytes(), "AES");
// Инициализация шифра для шифрования
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
// Шифрование
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Зашифрованный текст: " + encryptedText);
}
}
Важно: В реальных приложениях используйте надежные, случайно сгенерированные ключи и более безопасные режимы (например, AES/GCM/NoPadding), а не ECB.