취약한 암호 사용

취약한 암호 사용

설명

DES, RC4, ECB 모드, 커스텀 XOR 암호 같은 취약하거나 검증되지 않은 암호화는 안전한 기밀성을 제공하지 못합니다.

잠재적 영향

암호문 복호화, 메시지 변조, 비밀 데이터 노출이 가능합니다.

해결 방법

검증된 라이브러리와 최신 알고리즘을 사용하고, 인증 암호화 모드와 안전한 키 관리를 적용합니다.

예시

변경 전

php
<?php
$ciphertext = openssl_encrypt($data, 'des-ecb', $key);

변경 후

php
<?php
$key = getEncryptionKey();
$iv = random_bytes(openssl_cipher_iv_length('aes-256-gcm'));
$ciphertext = openssl_encrypt($data, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

설명:

  • 변경 전: PHP 코드가 오래된 알고리즘이나 사용자 정의 XOR 방식 암호화를 사용합니다.
  • 변경 후: 검증된 라이브러리의 인증 암호화 모드를 사용하고, 매 암호화마다 새 IV와 안전하게 관리되는 키를 적용합니다.

getEncryptionKey()는 안전하게 생성·보관된 32바이트 키를 반환해야 합니다. 암호화 실패를 처리하고 IV와 인증 태그를 암호문과 함께 저장하며, 복호화 시 태그 검증에 실패한 데이터는 사용하지 마세요.

참조