분류: 보안기능 / 취약한 암호화 알고리즘 사용, 충분하지 않은 키 길이 사용, 적절하지 않은 난수 값 사용, 부적절한 인증서 유효성 검증, 솔트 없이 일방향 해쉬함수 사용
가. 항목명
암호연산
나. 취약점 설명
취약한 암호화 알고리즘 사용: 지나치게 간단한 인코딩 함수를 사용하면 비밀번호 안전하게 보호 못함
충분하지 않은 키 길이 사용: 검증된 암호화 알고리즘 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있음
적절하지 않은 난수 값 사용: 예측 가능한 난수를 사용하는 것은 시스템 취약점을 유발한다.
솔트 없이 사용하는 일방향 해시함수: 솔트 없이 해시하여 저장하면 공격자는 레인보우 테이블에서 해시값을 미리 계산하고 이를 이용한 전수조사로 비밀번호를 찾을 수 있다.
다. 보안대책
① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행하는 경우 KISA 암호이용안내서 정의하고 알고리즘, 암호키 사용
② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는경우 안전한 알고리즘와 솔트값 적용
③ 난수 생성 시 안전한 생성 알고리즘 사용
라. 설계시 고려사항
① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행하는 경우 KISA 암호이용안내서 정의하고 알고리즘, 암호키 사용
② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는경우 안전한 알고리즘와 솔트값 적용
③ 난수 생성 시 안전한 생성 알고리즘 사용
- FIPS 140-2 인증 받은 암호모듈의 난수 생성기와 256비트 이상의 시드를 사용하여 난수 생성
마. 진단기준 및 세부사항
① 안전한 암호 알고리즘 사용하여 설계
- 대칭키 암호화 알고리즘: SEED, ARIA, AES
- 비대칭키 암호화 알고리즘: RSA, KCDSA, ECC
② 안전한 암호화 길이
- 대칭키 암호화 알고리즘 키길이 128 비트이상
- 비대칭키 암호화 알고리즘 키길이 2048 비트 이상
③ 암호화 기능 설계 시 안전한 암호화 알고리 사용
- SHA-2 계열(SHA-224, 256, 384, 512)
③ 안전한 난수 생성 알고리즘 사용
- JAVA - java.security.SecureRandom, java.util.Random와 같은 안전한 API 사용
- C - randomize(seed) 함수
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |
'보안 > SW보안약점 진단원' 카테고리의 다른 글
[설계보안] 보안기능-중요정보 저장 (0) | 2022.06.25 |
---|---|
[설계보안] 보안기능-암호키 관리 (0) | 2022.06.25 |
[설계보안] 보안기능-중요자원 접근통제 (0) | 2022.06.25 |
[설계보안] 보안기능-비밀번호 관리 (0) | 2022.06.24 |
[설계보안] 보안기능-인증 수행 제한 (0) | 2022.06.24 |