하드코딩된 암호화 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가 사용되도록 합니다.

참조

Last updated