손상되거나 위험한 암호화 알고리즘

OWASP 카테고리: MASVS-CRYPTO: 암호화

개요

데이터 기밀성과 무결성을 보호하기 위해 암호화가 널리 사용되지만 개발자가 실수로 약하거나 오래된 암호화 알고리즘을 구현하면 심각한 위험이 발생합니다. 이 취약점은 이러한 알고리즘의 고유한 약점에서 비롯되며, 필요한 컴퓨팅 성능이나 지식을 갖춘 악의적인 행위자가 이를 악용할 수 있습니다. 이러한 악용의 결과는 심각할 수 있으며, 무단 액세스, 데이터 유출, 민감한 정보 조작으로 이어질 수 있습니다.

영향

민감한 정보가 노출되거나 수정되거나 위조될 수 있습니다. 손상되거나 위험한 암호화 알고리즘은 취약점으로 이어질 수 있으며 민감한 정보를 복호화하거나 데이터를 조작하거나 합법적인 엔티티를 사칭하는 데 악용될 수 있습니다. 이러한 취약점을 악용하면 데이터 유출 및 재정적 손실부터 평판 손상 및 사용자 신뢰 상실에 이르기까지 다양한 영향을 미칠 수 있습니다.

위험: 취약하거나 손상된 암호화 해시 함수

약하거나 손상된 암호화 해시 함수 (예: MD5 또는 SHA1)를 사용하면 데이터의 보안과 무결성에 심각한 위험이 발생합니다. 해시 함수는 입력 데이터의 고유한 고정 길이 지문 (해시)을 생성하도록 설계되어 데이터 무결성 확인, 비밀번호 저장, 디지털 서명 등 다양한 용도로 유용합니다. 하지만 약하거나 손상된 해시 함수를 사용하면 다음과 같은 여러 취약점이 발생할 수 있습니다.

  • 충돌 공격: 약한 해시 함수는 공격자가 동일한 해시 값을 생성하는 두 개의 서로 다른 입력을 찾는 충돌 공격에 취약합니다. 이를 통해 탐지되지 않고 합법적인 데이터를 악성 데이터로 대체하여 데이터 무결성을 손상시킬 수 있습니다.
  • 정보 유출: 비밀번호가 취약한 알고리즘으로 해싱된 경우 시스템의 정보 유출이 성공하면 사용자 인증 정보가 노출될 수 있습니다. 그러면 공격자가 레인보우 테이블이나 다른 기법을 사용하여 비밀번호를 크래킹하고 계정에 무단으로 액세스할 수 있습니다.
  • 디지털 서명 부인: 디지털 서명에 사용되는 취약한 해시 함수는 위조된 서명을 만드는 데 악용될 수 있으므로 문서나 메시지의 진위성과 무결성을 확인하기가 어려워집니다.

완화 조치

이러한 위험을 완화하려면 SHA-2 또는 SHA-3과 같이 강력하고 잘 검증된 암호화 해시 함수를 사용하고 새로운 취약점이 발견되면 이를 업데이트하는 것이 중요합니다. 또한 비밀번호에 솔트를 추가하고 bcrypt 또는 Argon2과 같은 비밀번호 전용 해싱 알고리즘을 사용하는 등의 보안 관행을 채택하면 데이터 보호를 더욱 강화할 수 있습니다.


위험: 취약하거나 손상된 암호화 함수

취약하거나 손상된 암호화 함수 (예: DES 또는 RC4)를 사용하면 민감한 정보의 기밀성에 심각한 위험이 발생합니다. 암호화는 정보를 읽을 수 없는 형식으로 변환하여 보호하도록 설계되었지만 암호화 알고리즘에 결함이 있으면 이러한 보호를 우회할 수 있습니다.

  • 데이터 유출: 취약한 암호화 알고리즘은 무차별 대입 공격, 알려진 평문 공격, 암호 해독 기법 등 다양한 공격에 취약합니다. 이러한 공격이 성공하면 암호화된 데이터가 노출되어 개인 정보, 재무 기록, 기밀 비즈니스 데이터와 같은 민감한 정보에 무단으로 액세스할 수 있습니다.
  • 데이터 조작 및 변조: 공격자가 데이터를 완전히 복호화할 수 없더라도 암호화 알고리즘이 약하면 탐지되지 않고 데이터를 조작할 수 있습니다. 이로 인해 데이터가 무단으로 수정되어 사기, 허위 진술 또는 기타 악의적인 활동이 발생할 수 있습니다.

완화 조치

암호화 기능에서 강력한 암호화 알고리즘 사용

이러한 위험을 완화하려면 강력하고 적절한 암호화 알고리즘을 사용하고 키 관리 및 암호화 구현에 관한 권장사항을 따라야 합니다. 암호화 알고리즘을 정기적으로 업데이트하고 새로운 위협에 대한 정보를 파악하는 것도 강력한 데이터 보안을 유지하는 데 필수적입니다.

사용할 권장 기본 알고리즘:

  • 대칭 암호화:
    • GCM 모드가 적용된 AES-128/AES-256
    • Chacha20
  • 비대칭 암호화:
    • OAEP 패딩이 적용된 RSA-2048/RSA-4096

암호화 라이브러리의 보안 기본 요소를 사용하여 일반적인 문제 줄이기

적절한 암호화 알고리즘을 선택하는 것이 중요하지만 보안 취약점을 최소화하려면 간소화된 API를 제공하고 보안 기본 구성을 강조하는 암호화 라이브러리를 사용하는 것이 좋습니다. 이 접근 방식은 애플리케이션의 보안을 강화할 뿐만 아니라 코딩 오류로 인해 취약점이 발생할 가능성을 크게 줄여줍니다. 예를 들어 TinkAEADHybrid 암호화라는 두 가지 옵션을 제공하여 암호화 선택을 간소화하므로 개발자가 정보에 입각한 보안 결정을 내리기가 더 쉬워집니다.


위험: 약하거나 손상된 암호화 서명 기능

약하거나 손상된 암호화 서명 함수 (예: RSA-PKCS#1 v1.5 또는 약한 해시 함수 기반 함수)를 사용하면 데이터 및 통신의 무결성에 심각한 위험이 발생합니다. 디지털 서명은 인증, 부인 방지, 데이터 무결성을 제공하여 메시지나 문서가 특정 발신자로부터 시작되었으며 조작되지 않았음을 보장하도록 설계되었습니다. 하지만 기본 서명 알고리즘에 결함이 있으면 이러한 보장이 손상될 수 있습니다.

  • 서명 위조: 취약한 서명 알고리즘은 악의적인 행위자가 위조된 서명을 만들 수 있는 공격에 취약할 수 있습니다. 즉, 탐지되지 않고 합법적인 법인을 사칭하거나, 문서를 조작하거나, 메시지를 변조할 수 있습니다.
  • 서명 부인: 서명 알고리즘이 깨지면 서명자가 문서에 서명하지 않았다고 허위로 주장할 수 있어 부인 방지 원칙이 약화되고 법적 및 물류 문제가 발생합니다.
  • 데이터 조작 및 변조: 서명이 데이터의 무결성을 보호하는 데 사용되는 시나리오에서 약한 알고리즘을 사용하면 공격자가 서명을 무효화하지 않고 데이터를 수정할 수 있으므로 감지되지 않은 변조 및 중요한 정보의 잠재적 유출이 발생할 수 있습니다.

완화 조치

강력한 암호화 서명 알고리즘 사용

이러한 위험을 완화하려면 강력하고 적절한 암호화 서명 알고리즘을 사용하는 것이 중요합니다.

  • PSS 패딩이 적용된 RSA-2048/RSA-4096
  • 보안 곡선이 있는 타원 곡선 디지털 서명 알고리즘 (ECDSA)

암호화 라이브러리의 보안 기본 요소를 사용하여 일반적인 문제 줄이기

올바른 서명 알고리즘을 선택하는 것이 중요하지만 보안 취약점을 최소화하려면 기본적으로 강력한 보안 보장을 제공하는 암호화 라이브러리를 고려하세요. 예를 들어 Tink는 간단하고 포괄적인 API 내에서 보안 곡선이 있는 ECDSA를 기본 옵션으로 제공하여 서명 선택을 간소화합니다. 이 접근 방식은 보안을 강화할 뿐만 아니라 복잡한 구성이나 의사 결정의 필요성을 없애 개발을 간소화합니다.


리소스