👨‍💻
프론트엔드 기술 블로그
  • 프론트엔드 기술 저장소
  • React
    • React Hook
      • useRef
      • useReducer
      • useCallback
      • useMemo
      • useState
      • useEffect
      • useContext
      • Custom Hook
  • Javascript
    • 자바스크립트 기본
      • 데이터타입
      • 배열메소드
      • 타입 및 객체 체크
      • this
        • bind, call, apply
      • 프로토타입
      • 클로저
      • 스코프
      • 함수
      • 호이스팅
    • ECMAScript 6
      • let, const
      • 화살표 함수
      • 구조분해할당
      • Promise
      • 템플릿 문자열 표현식
      • 이터레이션
      • 클래스 (Class)
      • 심볼 (Symbol)
      • 제너레이터
  • 객체지향설계
    • 객체 지향 설계 원칙
      • 단일 책임 원칙
      • 개방 폐쇄 원칙
      • 리스코프 치환 원칙
      • 인터페이스 분리 원칙
      • 의존 역전 원칙
  • 브라우저와 자바스크립트
    • Document Object Model
      • DOM API
      • 이벤트 (Event)
  • Node.js
    • 번들러
      • webpack 설정
    • node.js 버전 관리
  • HTTP
    • HTTP 기본
      • 1. 웹과 네트워크 기본
        • 1.1 웹은 HTTP로 나타낸다.
        • 1.2 HTTP 탄생과 성장
        • 1.3 네트워크 기본 TCP/IP
        • 1.4 HTTP와 관계가 깊은 프로토콜 IP/TCP/DNS
        • 1.5 이름 해결 담당 DNS
        • 1.6 각각과 HTTP와의 관계
        • 1.7 URI와 URL
      • 2. 프로토콜 HTTP
        • 2.1 HTTP는 클라이언트와 서버간에 통신을 한다.
        • 2.2 리퀘스트와 리스폰스를 교환하여 성립
        • 2.3 상태를 유지하지 않는 프로토콜 HTTP
        • 2.4 리퀘스트 URI로 리소스 식별
        • 2.5 HTTP 메소드
        • 2.6 메소드 사용
        • 2.7 지속연결로 접속량 절약
        • 2.8 쿠키를 사용한 상태관리
      • 3. HTTP 정보는 HTTP 메시지에 있다.
        • 3.1 HTTP 메시지
        • 3.2 리퀘스트 메시지와 리스폰스 메시지 구조
        • 3.3 인코딩으로 전송 효율을 높이다.
        • 3.4 여러 데이터를 보내는 멀티파트
        • 3.5 일부분만 받는 레인지 리퀘스트
        • 3.6 최적의 콘텐츠를 돌려주는 콘텐츠 네고시에이션
      • 4. 결과를 전달하는 HTTP 상태코드
        • 4.1 상태코드는 서버로부터 리퀘스트 결과를 전달한다.
        • 4.2 2xx 성공
        • 4.3. 3xx 리다이렉트
        • 4.4 4xx 클라이언트 에러
        • 4.5 5xx 서버 에러
      • 5. HTTP와 연계하는 웹 서버
        • 5.1 1대로 멀티 도메인을 가능하게 하는 가상 호스트
        • 5.2 통신을 중계하는 프로그램 : 프록시, 게이트웨이, 터널
      • 7. 웹을 안전하게 HTTPS
        • 7.1 HTTP의 약점
        • 7.2 HTTP+암호화+인증+완전성보호 = HTTPS
  • IDE
    • Webstorm
      • 웹스톰 단축키
      • 웹스톰 소스코드 특정폴더 검색 제외
  • GIT
    • Git 기초 명령어
Powered by GitBook
On this page
  • 7.2.1 HTTP에 암호화와 인증과 완전성 보호를 더한 HTTPS
  • 7.2.2 HTTPS는 SSL의 껍질을 덮어쓴 HTTP
  • 7.2.3 상호간 키를 교환하는 공개키 암호화
  • 7.2.4 공개키가 정확한지 아닌지를 증명하는 증명서

Was this helpful?

  1. HTTP
  2. HTTP 기본
  3. 7. 웹을 안전하게 HTTPS

7.2 HTTP+암호화+인증+완전성보호 = HTTPS

7.2.1 HTTP에 암호화와 인증과 완전성 보호를 더한 HTTPS

HTTPS가 유효한 웹사이트에 접속하면 자물쇠 마크를 볼 수 있다.

7.2.2 HTTPS는 SSL의 껍질을 덮어쓴 HTTP

HTTP통신을 하는 소켓 부분을 SSL이나 TLS라는 프로토콜로 대체하는 것이다.

HTTP HTTP (애플리케이션) TCP SSL IP TCP IP

HTTP는 SSL과 통신하고 SSL이 TCP와 통신하는 것이다. ->HTTPS SSL의 사용으로 암호화, 증명서, 완전성 보호를 이용할 수 있게 된다.

7.2.3 상호간 키를 교환하는 공개키 암호화

SSL은 공개키 암호화 방식을 채용하고 있다. 현대의 암호는 알고리즘이 공개되어 있고 키를 비밀에 부침으로써 안전성을 유지한다. 암호화나 복호화 할때 이 키를 사용한다.키가 없으면 암호를 풀 수 없지만 키를 가지고 있다면 누구나 암호를 풀 수가 있다.

  • 공통키 암호의 딜레마

암호화와 복호화에 하나의 키를 사용하는것이 공통키 암호화 이다. 공통키 암호화는 키를 상대에게 키를 넘겨주어야 한다.

  • 두개의 키를 사용하는 공개키 암호

서로 다른 두개의 키쌍을 사용한다. 한쪽은 비밀키 한쪽은 공개키이다. 암호화는 암호를 보내는 측이 상대의 공개키를 사용해 암호화를 한다. 암호화된 정보를 받은 상대는 자신의 비밀키로 복호화 한다.

  • HTTPS는 하이브리드 암호 시스템

HTTPS는 공통키와 공개키 모두 사용한다. 키를 교환하는 곳에서는 공개키 암호를 사용하고 그 후의 통신은 공통키 암호를 사용한다. 상대적으로 공개키가 느리다.

7.2.4 공개키가 정확한지 아닌지를 증명하는 증명서

공개키를 사용하더라도 공개키가 진짜인지 증명할 수 없다. 중간에 공격자가 공개키를 바꿔쳐도 수신자는 진짜 공개키인지 알 수 있는 방법이 없다. 이를 해결하는데는 인증 기관과 그 기관이 발행하는 공개키 증명서가 이용되고 있다. 인증기관이란 클라이언트와 서버가 모두 신뢰하는 제 3자 기관이다. 인증기관에는 VeriSign사가 있다.

서버의 운영자가 인증기관에 공개키를 제출한다. 인증기관은 제출된 공개키에 디지털 서명을 하고 서명이 끝난 공개키를 만든다. 그리고 공개키 인증서에 서명이 끝난 공개키를 담는다. 서버는 인증기관에 의해서 작성된 공개키 인증서를 클라이언트에 보내고 공개키 안호로 통신한다. 증명서를 받은 클라이언트는 증명기관의 공개키를 사용해서 서버의 공개키를 인증한 것이 진짜 인증기관이라는 것과 서버의 공개키가 신뢰할 수 있다는 것을 알 수 있다.

여기에 사용되는 인증기관의 공개키는 안전하게 전달하기 위해 브라우저가 주요 인증기관의 공개키를 사전에 내장하고 있다.

Previous7.1 HTTP의 약점NextWebstorm

Last updated 2 years ago

Was this helpful?