1. 개요
바이러스토탈을 통해 악성코드를 검사하고 그 결과를 확인하는 과정에서 Authentihash 라는 단어를 만나게 되었다. 해당 단어 옆 아이콘을 클릭하면 Authenticode에 대한 기술서를 볼 수 있고, 내용을 읽어보면 해당 인증 기술을 이용하여 해시값을 만들 수 있음을 알 수 있다.
2. 내용
Authenticode는 소프트웨어 바이너리의 출처 및 무결성을 확인하는데 사용되는 디지털 서명 형식이다. 공개 키 암호화 표준(PKCS) #7의 서명된 데이터로 소프트웨어 게시자의 신원을 확인하기 위해 X.509 v3 인증서를 사용하여 Authenticode 서명 파일을 결합한 것이다. 이 서명은 "특정 소프트웨어 게시자를 증명", "서명 된 이후 파일이 변경되지 않음" 을 의미하고 "소프트웨어의 품질" 또는 "소프트웨어에 대한 정보 전달" 목적에 의해 운영되지 않는다.
PKCS #7 은 암호 메시지 문법 표준(Cryptographic Message Syntax Standard)로 암호화한 데이터를 표현하는 방식에 대한 표준이다.
Authenticode 시그니처의 사용에 있어 중요한 점은 이 디지털 인증은 .exe .dll 그리고 .sys 파일과 같은 Portable Executable(PE)에만 가능하다. 또한 다음과 같은 윈도우 버전에서만 확인 가능하다.
- Windows Server 2008
- Windows Vista®
- Windows Server® 2003
- Windows® XP
- Windows 2000
PE 파일에서 Authenticode 서명은 PKCS #7 SignedData 구조에 있다. 이 구조는 PE 파일 구조상 옵션 헤더(Optional Header)의 데이터 디렉토리(Data Directories)에서 인증 테이블(Certificate Table)에 포함되어 있다.
PKCS #7 SignedData 구조는 PE 파일의 해시 값, 시그니처를 생성한 소프트웨어 게시자의 개인 키 그리고 법인 소프트웨어 게시자의 서명 키를 결합한 X.509 v3 인증서가 필수적으로 포함된다. 그리고 소프트웨어 게시자의 설명, URL 그리고 Authenticode 타임 스탬프는 선택적으로 포함 가능하다.
타임 스탬프는 TSA(TimeStamping Authority)에 의해 생성된 시그니처를 포함하며 협정세계시(UTC, Universal Time Coordinated) 기준을 따른다. 타임 스탬프에 지정된 시간 이전에 게시자의 서명된 인증서를 참조할 수 있다. 또한 서명된 인증서가 만료되거나 철회 된 이후에도 타임 스탬프에 의해 서명에 대한 참조 기간이 연장된다.
배경색이 있는 부분은 Authentihash 값 생성 시 제외되는 항목, 굵은 글씨체는 Authenticode와 관련된 데이터의 위치를 가리킴
Authentihash의 연산 과정에서 주요 기능은 원래 파일 해시 값과 Authenticode에 등록된 해시 값을 산출 해 비교한다. 두 해시 값이 일치하지 않으면, 서명 된 이후 파일이 수정되었다고 간주된다. Authenticode 해시 생성 방법은 다음과 같다.
- 파일의 체크섬과 옵션 헤더 데이터 디렉토리(Optional Header Data Directories)의 인증서 테이블(Certificate Table) 항목을 생략하고 PE 헤더를 해싱한다.
- PE 세션은 정렬하고 해싱한다.
- 해시 계산에서 속성 인증서 테이블(Attribute Certificate Table)를 생략하고 나머지 데이터를 해싱한다.
3. 참조
'Information Security > Cryptography' 카테고리의 다른 글
S/MIME (Secure for Multipurpose Internet Mail Extensions) (0) | 2016.04.04 |
---|