✊ 필오의 개발일지
Back to Posts
2019년 12월 1일

HTTPS 이해를 위한 디지털 암호학

HTTPS 이해를 위한 디지털 암호학

최근 인증서 관련 이슈를 만난적이 있었는데, 이번 장을 통해서 조금이나마 이해가 될 수 있게 되었다 :)


HTTP를 안전하게 만들기

HTTP와 디지털 암호화 기술을 결합해야한다.

다음을 제공해 줄 수 있는 HTTP 보안 기술이 필요하다.

  1. 서버인증: 클라는 자신이 위조된 서버가 아닌 진짜 서버와 소통하고 있음을 알 수 있어야 함.
  2. 클라 인증: 서버는 자신이 가짜가 아닌 진짜 사용자와 소통하고 있음을 알 수 있어야 한다.
  3. 무결성: 클라와 서버는 그들의 데이터가 위조되는 것으로부터 안전해야 한다.
  4. 암호화: 클라와 서버는 도청에 대한 걱정 없이 서로 대화할 수 있어야 한다.
  5. 효율: 알고리즘은 빨라야 한다.
  6. 편재성 Ubiquity: 프로토콜은 거의 모든 클라와 서버에서 지원되어야 한다.

    편재성은 자원을 뜻할때 주로 쓰이는 성질이다. 자원의 민족주의. 도처에 존재하는 성질이라고 이해하면 됨

  7. 관리상 확장성: 누구든, 어디서든, 즉각적인 보안 통신을 할 수 있어야 한다.
  8. 적응성: 현재 알려진 최선의 보안방법을 지원해야 한다.
  9. 사회적 생존성: 사회의 문화적, 정치적 요구를 만족시켜야 한다.

HTTPS



디지털 암호학

  1. 암호: 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘
  2. : 암호의 동작을 변경하는 숫자로 된 매개변수
  3. 대칭키 암호 체계: 인코딩과 디코딩에 같은 키를 사용하는 알고리즘
  4. 비대칭키 암호 체계: 인코딩과 디코딩에 다른 키를 사용하는 알고리즘
  5. 공개키 암호법: 비밀 메세지를 전달하는 수백만 대의 컴퓨터를 쉽게 만들 수 있는 시스템
  6. 디지털 서명: 메세지가 위조 혹은 변조되지 않았음을 입증하는 체크섬
  7. 디지털 인증서: 신뢰할 만한 조직에 의해 서명되고 검증된 신원 확인 정보

1. 비밀코드의 기술과 과학

암호법 cryptography는 메세지 인코딩과 디코딩에 대한 과학이자 기술이다.

비밀 메세지 / 도청, 변조 방지 / 저자 증명


2. 암호 cipher

2.1 암호 기계

2.2 키가 있는 암호

2.3 디지털 암호

C = E(P,e) P = D(C,d)

3. 대칭키 암호법

3.1. 키 길이와 열거 공격 Enumeration Attack

3.2. 공유키 발급하기

3.3. 대칭키 만들어보기

echo 'this is the plain text' > plaintext.txt; openssl enc -e -des3 -salt -in plaintext.txt -out ciphertext.bin
  1. ‘this is the plain text’ 문자열이 들어간 plaintext.txt가 만들어진다
  2. plaintext.txt 안의(-in) 내용들을 des3방식으로 암호화를 하고, ciphertext.bin이라는 파일로 산출할(-out) 것이다 라는 뜻.
  3. 비밀번호를 요구하는 input이 나온다. => 요게 대칭키!

이런식으로 암호화된다.

openssl enc -d -des3 -in ciphertext.bin -out plaintext2.txt;
  1. ciphertext.bin 안의 내용을 des3 방식으로 복호화(디코딩)(-d) 하여서 plaintext2.txt 파일에 산출할 것이다 라는 뜻.

4. 공개키 암호법

4.1 RSA (Ribest Shamir Adelman)

4.2 혼성 암호 체계와 세션 키


5. 디지털 서명

5.1 서명은 암호 체크섬이다.

예시

노드A가 노드B에게 메세지를 보내고, 그것을 서명하는 전체 플로우.

  1. 노드 A는 가변 길이 메세지를 정제하여 고정된 길이의 digest로 만든다.
  2. 노드 A는 그 digest에 서명 함수를 적용한다. (서명함수: 사용자의 개인 키를 매개변수로 하는 함수)
  1. 한번 서명이 계산되면, 노드 A는 그것을 메세지의 끝에 덧붙이고, 메세지와 그에 대한 설명을 둘다 노드 B에 전송한다.
  2. 메세지를 받은 노드 B가, 만약 그 메세지를 쓴 것이 정말로 노드 A이며, 위조되지도 않았다는 것을 확인하길 원한다면, 노드 B는 서명을 검사할 수 있다.

6. 디지털 인증서

6.1 인증서의 내부

  1. 대상자 이름 (사람, 서버, 조직 등)
  2. 유효 기간
  3. 인증서 발급자 (누가 이 인증서를 보증하는가)
  4. 인증서 발급자의 디지털 서명

6.2 X.509 v3 인증서


X.509 위키피디아 설명 

6.3 서버 인증을 위해 인증서 사용하기

  1. 웹사이트의 이름과 호스트 명
  2. 웹 사이트의 공개키
  3. 서명 기관의 이름
  4. 서명 기관의 서명

출처 Network-3:HTTPS란? 



참고자료

Previous다이제스트 인증(2) - 실제 다이제스트 인증과 보안
Next다이제스트 인증 (1) - 다이제스트 인증과 특징

Related

© 2025 Felix