Development/C#
[제프리 리처의 CLR via C#] 강력한 이름의 어셈블리로 조작을 방지하기
오늘도 진이
2021. 3. 30. 12:08
목차
1부. CLR의 기본
3장. 공유 어셈블리와 강력한 이름의 어셈블리
강력한 이름의 어셈블리로 조작을 방지하기
- 비밀 키를 이용하여 어셈블리를 서명하고 어셈블리 안에 공개 키와 서명을 추가하여 CLR이 어셈블리가 최초로 만들어진 이후로 훼손되거나 수정되지 않았음을 판별할 수 있다.
- 어셈블리가 GAC에 설치될 때, 시스템은 매니페스트를 포함하는 파일의 내용을 해시 값으로 계산하여 PE 파일 안에 들어있는 RSA 디지털 서명 값(나중에 공개 키로 역서명(Unsigning)을 해보게 될 값이기도 하다)의 해시 값을 비교해본다.
- 만약 같은 값으로 계산되면, 파일의 내용이 외부에서 훼손되지 않았음을 확인할 수 있다.
- 응용프로그램이 어셈블리에 바인딩할 때, CLR은 참조된 어셈블리의 속성(이름, 버전, 문화권, 공개 키)을 이용하여 GAC 안에서의 어셈블리의 위치를 추정한다.
- 만약 어셈블리가 존재하면, 어셈블리가 들어있는 하위 디렉터리 경로를 가져와서, 매니페스트를 포함하는 파일을 로드할 것이다.
- 이러한 방법으로 어셈블리를 찾는 것은, 해당 어셈블리를 찾는 프로그램이 처음 만들어질 당시에 참조했던 어셈블리와 완전히 일치하는 어셈블리라는 것을 장담하는 것이다.
Uploaded by Notion2Tistory v1.1.0