NFKC 정규화 후 혼동 가능 문자 감지, 어떻게 최적화할까?
유니코드(Unicode)의 혼동 가능 문자(Confusables)는 시각적으로 유사한 문자를 감지하여 가짜 계정(Impersonation)을 방지하는 데 사용됨
NFKC 정규화(Normalization)는 문자열을 표준화하여 저장 및 비교를 용이하게 하지만, 혼동 가능 문자 감지 맵과 충돌하는 경우가 발생함
NFKC 정규화 이후 혼동 가능 문자 감지 맵에서 31개의 불필요한 항목(Unreachable Entries)을 제거하여 맵을 최적화하는 것이 중요함
보안 시스템(Security System) 설계 시, NFKC 정규화와 혼동 가능 문자 감지를 별도의 단계(Separate Steps)로 처리하고, 각 목적에 맞게 적용해야 함
NFKC 정규화와 혼동 가능 문자 간의 상호 작용
본질적으로 NFKC 정규화(Normalization)는 문자열의 표준 표현을 생성하는 반면, 혼동 가능 문자(Confusables)는 시각적 유사성을 기반으로 보안을 강화한다. 특히, NFKC 정규화는 문자 모양을 변경하여 혼동 가능성 감지 맵에서 일부 항목을 무효화한다. 예를 들어, 긴 S 문자(Long S)는 NFKC에 의해 's'로 변환되므로, 'f'로 매핑된 혼동 가능 문자 항목은 더 이상 유효하지 않다. 따라서, NFKC를 먼저 적용한 후 혼동 가능성 검사를 수행하는 시스템에서는 이러한 중복 항목을 제거하여 맵을 최적화해야 한다.
혼동 가능 문자 맵 최적화의 중요성
NFKC 정규화 이후 혼동 가능 문자 맵에서 불필요한 항목(Unreachable Entries)을 제거하는 것은 맵의 효율성을 높이는 데 기여한다. 이러한 최적화는 맵의 크기를 줄여 메모리 사용량을 감소시키고, 검색 속도를 향상시킨다. 또한, 맵의 유지 관리 부담을 줄여 잠재적인 오류 발생 가능성을 낮춘다. 보안 시스템(Security System)의 성능과 신뢰성을 향상시키기 위해, NFKC 정규화와 혼동 가능 문자 감지 맵의 연동 방식을 신중하게 설계해야 한다.
실제 구현에서의 고려 사항
실제 시스템에서 혼동 가능 문자(Confusables)를 사용하는 경우, NFKC 정규화의 적용 여부에 따라 다른 접근 방식을 취해야 한다. NFKC 정규화를 사용하는 경우, 맵에서 NFKC에 의해 처리되는 항목을 제거하여 맵을 정리해야 한다. 반면, NFKC 정규화를 사용하지 않는 경우, 전체 혼동 가능 문자 맵을 그대로 사용할 수 있다. 재매핑(Remapping)을 사용하는 것은 권장되지 않으며, 보안 취약점을 발생시킬 수 있다.
자동화된 혼동 가능 문자 맵 생성
수동으로 혼동 가능 문자 맵을 관리하는 것은 번거롭고 오류가 발생하기 쉽다. 저자는 자동화된 스크립트(Automated Script)를 사용하여 혼동 가능 문자 맵을 생성하고 유지 관리하는 방법을 제시한다. 이 스크립트는 유니코드 데이터베이스에서 혼동 가능 문자 정보를 가져와 NFKC 정규화와 충돌하는 항목을 필터링한다. 또한, 누락된 항목을 추가하여 맵의 정확성을 높인다. 이러한 자동화는 맵의 최신성을 유지하고, 개발자의 유지 관리 부담을 줄여준다.