[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-setevaya-bezopasnost-chem-otlichaetsya-shifrovanie-dannykh-at-rest-i-in-transit":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1203,"chem-otlichaetsya-shifrovanie-dannykh-at-rest-i-in-transit",24,"setevaya-bezopasnost","Сетевая безопасность","🔒","Чем отличается шифрование данных at rest и in transit?","Шифрование at rest — защита данных, хранящихся на диске (БД, файлы, бэкапы). Шифрование in transit — защита данных во время передачи по сети от отправителя к получателю. Оба вида шифрования обязательны в production-средах.\n\n### Шифрование in transit (при передаче)\n\nПротоколы:\n- TLS 1.2 \u002F 1.3 — основной протокол для HTTPS, межсервисных вызовов\n- mTLS — взаимная аутентификация\n- SSH — для административного доступа\n\nПримеры конфигурации:\n\n```yaml\n# Spring Boot: подключение к PostgreSQL через SSL\nspring:\n  datasource:\n    url: jdbc:postgresql:\u002F\u002Fdb-master:5432\u002Fbanking?ssl=true&sslmode=verify-full&sslrootcert=\u002Fcerts\u002Fca.crt\n\n# Spring Boot: подключение к Kafka через SSL\nspring:\n  kafka:\n    ssl:\n      trust-store-location: classpath:truststore.jks\n      trust-store-password: ${KAFKA_TRUSTSTORE_PASSWORD}\n    security:\n      protocol: SSL\n```\n\n### Шифрование at rest (при хранении)\n\n### 1. Шифрование на уровне диска (Full Disk Encryption)\n\n```bash\n# LUKS (Linux Unified Key Setup)\nsudo cryptsetup luksFormat \u002Fdev\u002Fsdb\nsudo cryptsetup luksOpen \u002Fdev\u002Fsdb encrypted_data\nsudo mkfs.ext4 \u002Fdev\u002Fmapper\u002Fencrypted_data\n```\n\n### 2. Шифрование на уровне базы данных\n\n```sql\n-- PostgreSQL: шифрование столбцов с помощью pgcrypto\nCREATE EXTENSION pgcrypto;\n\nINSERT INTO clients (name, card_number) VALUES (\n    'Иванов',\n    pgp_sym_encrypt('4111111111111111', 'encryption_key')\n);\n\nSELECT name, pgp_sym_decrypt(card_number::bytea, 'encryption_key')\nFROM clients;\n```\n\n### 3. Шифрование на уровне приложения (Application-Level Encryption)\n\n\u003Cdetails>\u003Csummary>Пример AES-256-GCM шифрования в Java\u003C\u002Fsummary>\n\n```java\npublic class EncryptionService {\n    private static final String ALGORITHM = \"AES\u002FGCM\u002FNoPadding\";\n    private static final int TAG_LENGTH = 128;\n    private static final int IV_LENGTH = 12;\n\n    public byte[] encrypt(byte[] data, SecretKey key) throws Exception {\n        byte[] iv = new byte[IV_LENGTH];\n        SecureRandom.getInstanceStrong().nextBytes(iv);\n\n        Cipher cipher = Cipher.getInstance(ALGORITHM);\n        cipher.init(Cipher.ENCRYPT_MODE, key, new GCMParameterSpec(TAG_LENGTH, iv));\n        byte[] encrypted = cipher.doFinal(data);\n\n        return ByteBuffer.allocate(iv.length + encrypted.length)\n            .put(iv).put(encrypted).array();\n    }\n\n    public byte[] decrypt(byte[] encryptedData, SecretKey key) throws Exception {\n        ByteBuffer buffer = ByteBuffer.wrap(encryptedData);\n        byte[] iv = new byte[IV_LENGTH];\n        buffer.get(iv);\n        byte[] cipherText = new byte[buffer.remaining()];\n        buffer.get(cipherText);\n\n        Cipher cipher = Cipher.getInstance(ALGORITHM);\n        cipher.init(Cipher.DECRYPT_MODE, key, new GCMParameterSpec(TAG_LENGTH, iv));\n        return cipher.doFinal(cipherText);\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### 4. Шифрование через Vault Transit Engine\n\n```bash\n# Шифрование данных через Vault (ключ не покидает Vault)\nvault write transit\u002Fencrypt\u002Fpayment-key \\\n    plaintext=$(echo -n \"4111111111111111\" | base64)\n\n# Расшифрование\nvault write transit\u002Fdecrypt\u002Fpayment-key \\\n    ciphertext=\"vault:v1:AbcDef...\"\n```\n\n### Что шифровать\n\n| Данные | At rest | In transit |\n|--------|---------|-----------|\n| Номера карт (PAN) | AES-256, маскирование | TLS 1.2+ |\n| Персональные данные (ПДн) | AES-256 | TLS 1.2+ |\n| Пароли | Bcrypt\u002FArgon2 (хеширование, не шифрование!) | TLS 1.2+ |\n| Резервные копии БД | AES-256 | TLS\u002FSSH |\n| Логи | Шифрование диска | TLS (syslog-TLS) |\n\nТребование PCI DSS: данные карт обязательно должны быть зашифрованы и при хранении, и при передаче.\n\n> **На собеседовании:** интервьюер ожидает чёткое разделение at rest и in transit, знание TLS для transit и AES-256 для rest. Частая ошибка — путать хеширование паролей (Bcrypt) с шифрованием (AES) и не упомянуть Vault Transit Engine.","","middle",[15],"network-security",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Чем отличается шифрование данных at rest и in transit? — Gymterview","Шифрование at rest — защита данных, хранящихся на диске (БД, файлы, бэкапы). Шифрование in transit — защита данных во время передачи по сети от отправителя к по","Шифрование at rest — защита данных, хранящихся на диске (БД, файлы, бэкапы). Шифрование in transit — защита данных во вр",[15,13],"Шифрование at rest — защита данных, хранящихся на диске (БД, файлы, бэкапы). Шифрование in transit — защита данных во время передачи по сети от отправителя к получателю. Оба вида шифрования обязательны в production-средах.",true]