전자서명
- 프로그램 악성 여부 확인
- 원산지 표시(조작을 검증하는 기술적 장치가 있다)
기본기술
- 해시함수
- 해시값 = 지문
- 바이너리값의 중복 = 충돌
- 해시값은 원래 바이너리 값으로 복원이 불가
- MD5(128) , sha2(512)
- 암호화와는 다르다(복호화 불가)
- 같은 값은 항상 같은 해시값을 갖는다
- 공개키 암호화(비대칭키 암호화)
- 암호화 키가 공개되어도 상관없다 = 공개키
- 공개되지 않는 키 = 개인키
- 대칭키 암호화
- 유명한 방식 : AES
무결성 확인
- 해시값을 이용하여 확인
- 배포하고자 하는 해시값을 변조 당하면 무의미
진보된 무결성 확인
- 원본 바이너리로 생성된 해시값을 개인키로 암호화하여, 복호화 키와 함께 배포
- 생성된 해시값을 암호화하여 나온값 = 서명
- 원본 바이너리 + 서명 + 복호화 키(공개키)를 만드는 과정 = 코드사인
- 코드사인된 바이너리를 사용자에게 배포
- 유명한 방식 : AES
사용자 입장
- 코드사인된 바이너리 코드를 획득
- 원본 바이너리 , 서명, 복호화 키 분리
- 원본 바이너리로 해시값을 생성
- 복호화키를 이용하여 서명에서 원본 해시값을 획득
- 생성된 두 해시값을 비교하여 무결정 판정
취약점
- 코드사인 이전에 파일 변조시, 신뢰할수 없다.
공인인증서
- 복호화 키가 포함된 파일
- 추가적인 정보도 포함 ( 주체(제작자), 주체(제작자)의 공개키, 발급자(공인인증기관), 발급자의 서명, 발급자의 공개키 등등 )
- 신뢰할 수 있는 공인 인증 기관에 공개키와 사명을 등록(인감도장을 새로 만들어 동사우소에서 등록하는 것과 유사하다)
- 발급자의 서명 = 인증서에 기록된 정보(발급자의 서명 제외)를 하나로 모은후 해시 함수에 입력하여 해시값을 얻어, 발급자의 암호화키로 해당 해시값을 암호화 결과
진보된 무결성 확인 2
- 원본 바이너리 + 서명 + 인증서 = 코드사인
사용자 입장
- 코드사인된 바이너리 코드를 획득
- 원본 바이너리 , 서명, 인증서 분리
- 원본 바이너리로 해시값을 생성
- 복호화키를 이용하여 서명에서 원본 해시값을 획득
- 생성된 두 해시값을 비교하여 무결정 판정
- 인증서의 주체확인
- 발급자 서명을 발급자의 공개키로 복호화하여 해시값을 얻고, 인증서에 기록된 정보들을 해시함수에 입력하여 해시값을 획득하여 비교(인증서 유효성 검사)
ROOT 인증서는 항상 신뢰한다.
- verisign, kisa 등
- root 인증서는 윈도우에 내장되어 있다.
- 보통 인증서 체인은 3단계에서 해결된다.
Comments powered by Disqus.