은행은 왜 이렇게 오래된 인증서 알고리즘 / 암호화 알고리즘을 쓰는 걸까
Disclaimer: 작성자 본인은 암호학 전문가가 아닙니다. 이글에선 무엇도 보장하지 않고 이글을 참고해서 하는 일에 대해선 어떤 책임도 지지 않습니다.
국민은행이 모던 브라우저에서 인터넷 뱅킹이 된다기에 시험 해 봄. 근데 들어가자마자 뜨는 워닝이 너무 우울해서 몇 가지를 확인.
인증서가 SHA1 해시를 이용
인증서가 유효한지 확인하기 위해서는 해당 인증서가 유효한지 확인하기 위해 인증서의 해시 값을 구하고, 이를 서명해둔다. 이 때 암호화 해시 함수; cryptographic hash function 을 이용하는데, 여기서는 SHA1 해시 함수를 쓰고 있더라.
현재 구글이나 모질라에서는 SHA1 대신 그 보다 안전한 다름 함수를 쓸 것을 권한다. Bruce Schneier는 2012년에 2015년이면 약 USD 700k 정도면 충돌하는 다른 해시 값을 찾을 수 있다고 추정 하기도 했다. 즉, 현실적으로 저 해시에 해당하는 인증서를 위조할 가능성이 생긴다. 게다가 인증서가 2015년에 생성한 것이던데.
암호화 알고리즘이 구닥다리 (no PFS!)
지원하는 암호화 알고리즘 조합이 키 교환은 RSA만 이용하고 — 그래서 키가 털리면 이전 모든 통신을 복호화해 볼 수 있고 — 메시지 암호화 알고리즘도 AES-128/256-CBC 나 RC4, 3DES-EDE 등을 지원한다. 세션 동안만 유효한 암호화 키 (ephemeral key)를 쓰지 않는다. 으으 지금은 2015년 같은데. 게다가 쓰지말라고한지 2년은 된 RC4?
게다가 아직 SSL v3가 남아있다. 혹시 POODLE이라고 들어는 보셨는지… 다행히 TLS_FALLBACK_SCSV
를 써서 TLS v1 이상을 쓰는 브라우저로 접속하면 당장 문제는 아니긴하겠지만.
그들을 위한 변명 …
SHA1 알고리즘의 대체인 SHA2의 호환성을 확인하자면, 클라이언트가 Windows XP SP3 (!!) 이후면 문제가 없다. (DigiCert의 해당 안내문 ) 아직도 Windows XP SP2 + IE6를 쓴다면 이런 인증서를 써야할 수…는 있다.
RC4의 문제도 실제로 이게 선택되는 조합은 Qualys SSL LABS 결과엔 없다. (그럼 걍 빼지).
SSL v3는 Windows XP + IE6 를 지원하려면 필요하긴 하다.
근데 이것 때문에 FS를 위한 키교환 알고리즘을 못 쓸 이유는 없는 점은 변명의 여지는 전혀 없음. 그리고 이런 사용자 (Windows XP + IE6)는 은행이 책임져 주지도 않는데 차단 할 일이지, 이걸 위해서 다른 사용자가 더 약한 암호화/인증서를 쓸 이유는 안된다.
기왕 모던 브라우저 지원하는 김에 버릴 건 버리고 가는게 맞지 않을까?