유형 | 보안기능 |
설계항목 | 암호연산 |
설명 | 국제표준 또는 검증필 암호모듈로 등재된 안전한 암호 알고리즘을 선정하고 충분한 암호키 길이, 솔트, 충분한 난수 값을 적용한 안전한 암호연산 수행방법을 설계한다. |
보안대책 | ① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행해야 하는 경우 한국인터넷진흥원의 '암호이용안내서'에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용해야 한다. ② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는 경우 안전한 해시 알고리즘과 솔트값을 적용하여 암호화해야 한다. ③ 난수 생성 시 안전한 난수 생성 알고리즘을 사용해야 한다. |
연관된 구현단계 기준 | 취약한 암호화 알고리즘 사용 충분하지 않은 키 길이 사용 적절하지 않은 난수 값 사용 부적절한 인증서 유효성 검증 솔트 없이 일방향 해쉬 함수 사용 |
취약점 개요
사례1 : 취약한 암호알고리즘 사용
환경설정 파일에 저장된 비밀번호를 보호하기 위하여 base64와 같은 지나치게 간단한 인코딩 함수를 사용하면 비밀번호를 안전하게 보호할 수 없다.
사례2 : 충분하지 않은 키 길이 사용
검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 된다.
사례3 : 적절하지 않은 난수 값 사용
예측 가능한 난수를 사용하는 것은 시스템의 보안약점을 유발한다.
사례4 : 솔트 없이 사용하는 일방향 해시함수
비밀번호 저장 시 일방향 해시함수의 성질을 이용하여 비밀번호의 해시값을 저장한다. 비밀번호를 솔트(salt)없이 해시하여 저장하면 공격자는 레인보우 테이블과 같이 가능한 모든 비밀번호에 대해 해시값을 미리 계산하고, 이를 이용한 전수조사로 비밀번호를 찾을 수 있게 된다.
설계 시 고려사항
① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행해야 하는 경우 한국인터넷진흥원의 '암호이용안내서'에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용해야 한다.
② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는 경우 안전한 해시 알고리즘과 솔트값을 적용하여 암호화해야 한다.
해시함수는 사용 목적에 따라 메시지인증/키 유도/난수 생성용과 단순 해시(메시지 압축)/전자 서명용으로 나눠며, 사용 목적과 보안강도에 따라 선택하여 이용한다.
③ 난수 생성 시 안전한 난수 생성 알고리즘을 사용해야 한다.
FIPS 140-2 인증을 받은 암호모듈의 난수 생성기와 256비트 이상의 시드를 사용하여 난수를 생성한다. 난수의 무작위성을 보장하기 위해 이전 난수생성 단계의 결과를 다음 난수생성 단계의 시드로 사용하는 의사난수생성기를 이용한다.
진단 세부사항
요구사항 ① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행해야 하는 경우 한국인터넷진흥원의 '암호이용안내서'에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용해야 한다.
- 안전한 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용하도록 설계되어 있는지 확인
. 대칭키 암호화 알고리즘 : SEED, ARIA, AES 등 (키 길이 128 비트 이상)
. 비대칭키 암호화 알고리즘 : RSA, KCDSA, ECC 등 (키 길이 2,048 비트 이상)
요구사항 ② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는 경우 안전한 해시 알고리즘과 솔트값을 적용하여 암호화해야 한다.
- 일방향 암호화 수행을 위한 해시함수 사용 방법이 안전하게 설계되어 있는지 확인
. SHA-2 계열(SHA-224, SHA-256, SHA-384, SHA-512)
- 해시함수로 암호화된 데이터 크랙을 점검하는 테스트 계획이 수립되어 있는지 확인
요구사항 ③ 난수 생성 시 안전한 난수 생성 알고리즘을 사용해야 한다.
- 난수 생성을 위해 안전한 난수 생성 알고리즘을 사용하도록 설계되어 있는지 확인
. Java 프로그램 개발 : java.security.SecureRandom, java.util.Random과 같은 안전한 API 사용
. C 프로그램 개발 : randomize(seed) 함수
- 생성된 난수의 안전성을 점검하는 테스트 계획이 수립되어 있는지 확인
'Cert > 소프트웨어(SW) 보안약점 진단원' 카테고리의 다른 글
설계단계 보안설계 기준 - 중요정보 전송 (0) | 2024.08.26 |
---|---|
설계단계 보안설계 기준 - 중요정보 저장 (0) | 2024.08.26 |
설계단계 보안설계 기준 - 암호키 관리 (0) | 2024.08.26 |
설계단계 보안설계 기준 - 중요자원 접근통제 (0) | 2024.08.26 |
설계단계 보안설계 기준 - 비밀번호 관리 (0) | 2024.08.23 |