Home signing
Post
Cancel

signing

전자서명

  • 프로그램 악성 여부 확인
  • 원산지 표시(조작을 검증하는 기술적 장치가 있다)

기본기술

  • 해시함수
    • 해시값 = 지문
    • 바이너리값의 중복 = 충돌
    • 해시값은 원래 바이너리 값으로 복원이 불가
    • MD5(128) , sha2(512)
    • 암호화와는 다르다(복호화 불가)
    • 같은 값은 항상 같은 해시값을 갖는다
  • 공개키 암호화(비대칭키 암호화)
    • 암호화 키가 공개되어도 상관없다 = 공개키
    • 공개되지 않는 키 = 개인키
  • 대칭키 암호화
    • 유명한 방식 : AES

      무결성 확인

    • 해시값을 이용하여 확인
    • 배포하고자 하는 해시값을 변조 당하면 무의미

      진보된 무결성 확인

    • 원본 바이너리로 생성된 해시값을 개인키로 암호화하여, 복호화 키와 함께 배포
    • 생성된 해시값을 암호화하여 나온값 = 서명
    • 원본 바이너리 + 서명 + 복호화 키(공개키)를 만드는 과정 = 코드사인
    • 코드사인된 바이너리를 사용자에게 배포

사용자 입장

  • 코드사인된 바이너리 코드를 획득
  • 원본 바이너리 , 서명, 복호화 키 분리
  • 원본 바이너리로 해시값을 생성
  • 복호화키를 이용하여 서명에서 원본 해시값을 획득
  • 생성된 두 해시값을 비교하여 무결정 판정

취약점

  • 코드사인 이전에 파일 변조시, 신뢰할수 없다.

공인인증서

  • 복호화 키가 포함된 파일
  • 추가적인 정보도 포함 ( 주체(제작자), 주체(제작자)의 공개키, 발급자(공인인증기관), 발급자의 서명, 발급자의 공개키 등등 )
  • 신뢰할 수 있는 공인 인증 기관에 공개키와 사명을 등록(인감도장을 새로 만들어 동사우소에서 등록하는 것과 유사하다)
  • 발급자의 서명 = 인증서에 기록된 정보(발급자의 서명 제외)를 하나로 모은후 해시 함수에 입력하여 해시값을 얻어, 발급자의 암호화키로 해당 해시값을 암호화 결과

진보된 무결성 확인 2

  • 원본 바이너리 + 서명 + 인증서 = 코드사인

사용자 입장

  • 코드사인된 바이너리 코드를 획득
  • 원본 바이너리 , 서명, 인증서 분리
  • 원본 바이너리로 해시값을 생성
  • 복호화키를 이용하여 서명에서 원본 해시값을 획득
  • 생성된 두 해시값을 비교하여 무결정 판정
  • 인증서의 주체확인
  • 발급자 서명을 발급자의 공개키로 복호화하여 해시값을 얻고, 인증서에 기록된 정보들을 해시함수에 입력하여 해시값을 획득하여 비교(인증서 유효성 검사)

ROOT 인증서는 항상 신뢰한다.

  • verisign, kisa 등
  • root 인증서는 윈도우에 내장되어 있다.
  • 보통 인증서 체인은 3단계에서 해결된다.
This post is licensed under CC BY 4.0 by the author.

git tool

oauth

Comments powered by Disqus.

Trending Tags