윈도우 인증 시스템
윈도우는 로그인 시 윈도우 로그인 프로세스인 winlogon을 실행한다. winlogon은 msgina.dll이라는 GINA(Graphical Identification aNd Authentication) 프로그램을 구동하여 검증 위해서 아이디를 LSA(Local Security Authority)에 전달한다. NTLM(NT Lan Manager) 값과 SAM에 저장된 NTLM 값을 비교하여 같으면 SRM에게 권한을 부여한다. winlogon은 단순히 로그인 기능만 하는것이 아닌 윈도우 스테이션과 데스크탑 보호, 표준 SAS(Secure Attention Sequence), SAK(Secure attention key) 인식, SAS 루틴 디스패칭, 사용자 프로필 로딩, 사용자 쉘에 대한 보안 할당, 화면 보호기 제어, 다중 네트워크 제공의 역할을 한다.
GIGN(Graphical Identification aNd Authentication)은 윈도우(2000, XP, 2003)에서 [ctrl + alt + delete] 입력시 나오는 화면이다. 대화형으로 구성된 로그인 프로그램이며 로그인과 관련된 프로세스들을 연결해준다. winlogon에서 GIGN에 있는 msgina.dll을 로딩하고 사용자가 입력한 계정과 암호를 LSA에게 전달하는 역할을 한다. GIGN은 윈도우 비스타 이후로 사용되지 않는다.
SAS(Secure Attention Sequence), SAK(Secure attention key)는 우리가 윈도우에서 로그인 할 때의 화면에서 일어는 작업들이다. 패스워드를 입력하는 화면에서 사용자가 설정한 패스워드 조합을 입력 시 SAS, SAK는 사용자가 설정한 패스워드와 일치하는지 확인하는 절차를 거친다. 이후 패스워드가 일치하는 것을 확인했으면 로그인을 허용하여 시스템의 자원들을 사용할 수 있게 해준다. 로그인 화면에서 로그인이 완료되기 전까지는 모든 프로세스를 중지하기 때문에 로그인 스푸핑이 불가능하도록 설계되어 있다.
LSA(Local Security Authority)는 윈도우 로컬, 원격 시스템에서 로컬 보안 정책과 사용자 인증을 담당한다. SRM에서 작성한 감사로그, 사용자 로그온 기록을 남기며 로컬 보안 정책은 파일 접근 권한을 검사한다. LSA에서 NTLM모듈을 실행하여 계정을 검증한다. 윈도우 NT의 핵심 보안 요소이며 윈도우 XP, 2000, NT에서 사용된다.
NTLM(NT Lan Manager)는 윈도우에서 제공하는 인증, 암호화 모듈이다. Challenge-Response의 인증 방식을 사용한다. Challenge-Response는 접근을 요청한 사용자가 미리 설정해둔 답을 알고있는지 질문을 하는 것이다. 즉 로그인 시 지정해둔 패스워드를 알고있는지 시스템에서 물으면 그에 대한 답을 주고 맞으면 허가하고 틀리면 요청을 거부하는 형태이다. NTLM은 NT해시와 LM해시로 나눠지고 각각 v1과 v2가 있다. LMv1은 DES 방식을 이용한 암호화를 진행한다. 암호 길이에 최대 14자라는 제한이 있다는 단점이 있다. NTv1은 암호 길이에 대한 제한을 없애고 md4 해시를 이용하여 암호를 저장한다. 이후 v2 에서는 LM, NT 둘다 동일한 암호 알고리즘을 사용한다. HMAC-MD5와 MD4를 이용한 해시 암호화를 진행한다. 최근에는 NTLM을 사용하지 않는다.
SAM(Security Account Manager)는 사용자 계정 정보를 저장하는 역할을 한다. 리눅스에서 '/etc/shadow'와 같은 역할을 한다. 윈도우 XP, 비스타, 7 까지 사용된다. 리눅스의 shadow파일과 같이 계정의 패스워드를 해시하여 보관한다. 해시는 NTLM 암호화 모듈에서 수행하는 암호화 알고리즘을 이용한다.
SRM(Security Reference Monitor)는 사용자에게 고유 SID를 부여하고 SID에 권한을 부여한다. 윈도우 커맨드에서 [whoami /user]를 입력하면 SID를 확인할 수 있다.
인증 프로세스 과정, 역할