국제표준 또는 검증필 프로토콜로 등재된 안전한 암호 알고리즘을 선정하고 충분한 암호키 길이, 솔트, 충분한 난수 값을 적용한 안전한 암호연산 수행방법을 설계
(보안기능) 취약한 암호화 알고리즘 사용
(보안기능) 충분하지 않은 키 길이 사용
(보안기능) 적절하지 않은 난수 값 사용
(보안기능) 부적절한 인증서 유효성 검증
(보안기능) 솔트 없이 일방향 해쉬함수 사용
앞서 MD5라는 암호화 알고리즘 역시 SHA1과 같은 용도로 활용됐었지만 이란을 대상으로 한 미국, 이스라엘 첩보기관이 수행한 사이버첩보활동에 악용된 ‘플레임(Flame)’ 악성코드가 이러한 MD5에 대한 충돌공격을 활용해 각종 정보를 수집하는데 악용됐다
SHA1이 두 가지 서로 다른 정보를 입력했을 때, 같은 해쉬값을 만들어 낼 수 있는 시점이 온다는 것이다.
이를 악용한 공격을 '충돌공격(collision attack)'이라고 부른다. 이런 시점이 되면 더 이상 SHA1을 활용한 해쉬값은 안전하다고 보기 어렵다.
① 『암호이용안내서』에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용
② 복호화 되지 않는 암호화를 수행하기 위해 해시함수를 사용하는 경우 안전한 해시 알고리즘과 솔트 값을 적용하여 암호화해야 한다.
③ 난수 생성 시 안전한 난수 생성 알고리즘을 사용
① 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용
NIST 알고리즘 안전성 유지기간 및 최소 키 길이 권고
국·내외 사용 권고 알고리즘
대칭키 암호 알고리즘(블록암호)
국내 : SEED,HIGHT,ARIA,LEA
미국 : AES, 3TEDA
해시함수
국내
SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256,
SHA3-224, SHA3-256, SHA3-384, SHA3-512
LSH-224, LSH-256, LSH-348, LSH-512, LSH-512/224, LSH-512/256
미국
SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
SHA3-224, SHA3-256, SHA3-384, SHA3-512
공개키 암호 알고리즘
암·복호화용 : 국내(RSAES), 미국(RSA)
키공유 : 국내(DH, ECDH), 미국(DH, ECDH, MQV, ECMQV)
전자서명용
국내
RSA-PSS
KCDSA
ECDSA
EC-KCDSA
미국
RSA
DSA
ECDSA
② 해시함수는 사용목적에 따라 메시지인증/키 유도/난수생성용과 단순 해시(메시지압축) /전자서명용으로 구분
③ FIPS 140‐2 인증을 받은 암호모듈의 난수생성기와 256비트 이상의 시드를 사용하여 난수를 생성
난수의 무작위성을 보장하기 위해 이전 난수생성 단계의 결과를 다음 난수생성 단계의 시드로 사용하는 의사난수생성기를 이용
SW개발자들은 환경설정 파일에 저장된 패스워드를 보호하기 위하여 간단한 인코딩 함수를 이용하여 패스워드를 감추는 방법을 사용하기도 한다.
base64와 같은 지나치게 간단한 인코딩 함수를 사용하면 패스워드를 안전하게 보호할 수 없다.
검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화 할 수 있게 된다.
예측 가능한 난수를 사용하는 것은 시스템의 보안약점을 유발한다. 예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능
패스워드 저장 시 일방향 해쉬함수의 성질을 이용하여 패스워드의 해쉬값을 저장한다. 만약 패스워드를 솔트(Salt)없이 해쉬하여 저장한다면, 공격자는 레인보우 테이블과 같이 가능한 모든 패스워드에 대해 해쉬값을 미리 계산하고, 이를 이용한 전수조사로 패스워드를 찾을 수 있게 된다.