안녕하세요? 허니입니다. 인증 정보 취약한 코딩에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.


사용자 정보에 대한 암호화 시 HTML 혹은 Base64 등 일반 사용자가 쉽게 디코딩 할 수 있는 인코딩 방식을 사용하여 사용자 개인정보 및 계정정보 암호화 시 쉽게 디코딩 되어 사용자 정보가 노출될 수 있는 취약점입니다. 중요정보를 암호화 하기 위해 사용되는 방법이 인코딩(또는 암호화)를 하는데 취약한 인코딩 방법(예:base65) 및 암호화 알고리즘(예:RC2, RC4, RC6, MD4, MD5, SHA1, DES등)을 사용할 경우, 공격자가 해독이 가능하여 중요정보가 노출될 수 있습니다.

 

 대응방법
사용자 개인정보 및 중요정보는 SSL 등 암호화 방식을 통해 데이터 전송을 해야 하며, 사용자 인증에 따른 쿠키 사용 시 사용자 정보 및 계정, 패스워드는 쿠키에 사용하지 말아야 합니다. 개인정보 등 중요정보를 보호하기 위해 사용하는 암호알고리즘 [참고] 적용 시, IT보안인증 사무국이 안전성을 확인한 검증필 암호모듈을 사용한다.

 

[참고] 패스워드 생성 보안로직 권고사항

분류

내용

최소 안전성 수준

11비트

블록암호

ARIA(키 길이 :128/192/256), SEED(키 길이 : 128)

블록암호 운영모드

기밀성

ECD, CBC, CFB, OFB, CTR

기밀성/인증

CCM, GCM

해쉬함수

SHA-224/256/384/512

메시지 인증코드

HMAC 기반 해쉬함수

HMAC

블록기반

CMAC, GMAC

난수발생기

HMAC 기반 해쉬함수

HASH_DRBG, HMAC_DRBG

블록기반

CTR_DRBG

공개키 암호

- RSAES(공개키 길이) 2048, 3072

- RSA-OAEP에서 사용되는 해쉬 함수: SHA-224/256

전자서명

RSA-PSS, KCDSA, ECDSA, EC-KCDSA

키 설정 방식

DH, CEDH

시스템 파라미터

RSA-PSS

(공개키 길이) 2048, 3072

KCDSA, DH

(공개키 길이, 개인키 길이) (2048, 224), (2048, 256)

ECDSA, EC-KCDSA, ECDH

(FIPS) B-233, B-283 OFIPS) K-233, K-283 (FIPS) P-224, P-256

 

안전하다고 알려진 암호화 알고리즘(SEED)를 사용하여 암호화 진행할 경우 다음과 같이 진행합니다.(JAVA)

Try
{
Cipher c=Cipher.getInstance(“SEED/CBC/PKCS5Padding”);
c.init(Cipher.ENCRYPT_MODE, k);
rslt = c.update(msg);
}
Catch (InvalidKeyException e) {

 

 

+ Recent posts