하드코딩된 암호화 IV
Use of Hardcoded Cryptographic Initialization Value
설명
하드코딩된 암호화 IV(Initialization Vector)을 사용하면 암호화된 데이터의 예측 가능성이 높아져 보안이 취약해집니다. IV는 각 암호화 작업마다 무작위로 생성되어야 합니다. 하드코딩된 IV를 사용하면 동일한 IV가 반복적으로 사용되기 때문에 암호화된 데이터 패턴을 분석하여 쉽게 해독될 수 있습니다.
잠재적 영향
데이터 유출: 공격자가 암호화된 데이터를 해독하여 민감한 정보에 접근할 수 있습니다.
데이터 변조: 무결성이 손상되어 데이터가 변조될 수 있습니다.
패턴 분석: 동일한 IV가 반복적으로 사용되어 패턴 분석이 가능해집니다.
해결 방법
무작위 IV 생성: 각 암호화 작업마다 무작위로 생성된 IV를 사용합니다.
보안 라이브러리 사용: 검증된 보안 라이브러리를 사용하여 IV를 안전하게 관리합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
# Unsafe AES encryption with hardcoded IV
from Crypto.Cipher import AES
key = os.getenv("ENCRYTION_KEY").encode()
cipher = AES.new(key, AES.MODE_CBC, b'This is an IV456') # 하드코딩된 IV
plaintext = b'This is a secret message.'
ciphertext = cipher.encrypt(plaintext)안전한 코드
설명:
취약한 코드: 하드코딩된 IV를 사용하여 암호화 데이터의 예측 가능성이 높아집니다.
안전한 코드: 무작위로 생성된 IV를 사용하여 각 암호화 작업마다 다른 IV가 사용되도록 합니다.
참조
OWASP: Cryptographic Storage
Last updated