CS

HTTPS, RESTful

index.ys 2023. 7. 22. 00:32

HTTPS

  • 기존의 http사이트에 보안성을 추가함 ex) 로그인시 아이디와 비번을 입력하고 네이버 서버로 전송시 http로 요청시 제 3자가 정보를 볼 수 있었음

HTTPS역할

  • https는 입력한 중요한 정보를 서버로 보낼때 보낸 정보를 암호화하여 서버로 전송하는 역할
  • 데이터를 보내는 정보가 안전한 사이트로 전송되는지 확인하는 역할 = 사이트를 검증하는 역할

내가 사이트에 보내는 정보들을 제3자가 확인할 수 없도록함

  • 대칭키 요청을 보내는 쪽받는 쪽이 같은 키를 가짐, 데이터 전송시 가지고 있는 키로 데이터 암호화 => 대칭키를 가지고 알고리즘 복호화하여 데이터 해석
  • 대칭키를 제 3자가 확인하면 대칭키의 의미가 없어짐
  • 비대칭키(공개키) A키로 암호화하면 B키로 복호화 , B키로 암호화하면 A키로 복호화
  • 사용자는 네이버의 공개키를 가지고 있음
  • CA에서 인증키를 발급받아 사용 , 브라우저에는 CA에서 발급한 공개키가 내장되어 있음

HTTPS 작동 과정

  • HTTPS는 HTTP요청 및 응답을 SSL 및 TLS에 결합
  • 사용자 브라우저 주소에 https://로 url 설정 후 서버에 요청
  • 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성 검증시도 클라이언트 -> 서버
  • 서버는 공개키(비대칭키) 가 포함된 SSL 인증서를 클라이언트로 전송 서버 -> 클라이언트
  • 서버에서 전송된 인증서가 인증되면 브라우저가 공개키를 사용하여 세션키가 포함된 메세지를 암호화 하고 전송
  • 서버는 프라이빗키를 사용하여 메세지를 해독하고 세션 키를 검색 => 세션키를 암호화하고 브라우저에 승인 메세지를 전송
  • 브라우저와 웹서버 모두 동일한 세션 키를 사용하여 메세지를 안전하게 교환하도록 전환
  • 여기까지 과정이 최초 https요청시 발생하는 과정 이후 서버와 주고받는 요청과 응답은 암호화 되어 제3자가 조회할 수 없음 최초 https 연결시에는 세션키공유 => 공개키 사용
  • https 연결 이후에는 대칭키를 사용하여 데이터를 암호화 하고 복호화 하는 과정을 빠르게 수행

RESTful API

  • REST스러운 API?
  • 웹이 최초에 데이터를 주고 받는 형식은 각자가 쓰는 데이터 형식과 프로토콜이 각자다름
  • 서버와 클라이언트 간의 결합도가 높아짐 => 서버의 변경이 클라이언트에 심각한 영향을 미침
  • 기존 www는 서버와 클라이언트간의 결합도가 높음 => 표준 통신형식이 존재하지 않았음
  • 자원을 어떻게 표현할지, 어떻게 관리할지 표준이 부재 ex) /new-user  => a  !==   /new/user  => b
  • 한페이지 안의정보가 많아지고 복잡해져 자원관리가 어려워짐 => 페이지의 한부분만 변경해도 페이지 전체를 변경해야함 (html 파일을 다시 요청함)

WWW의 문제점

  • 클라이언트와 서버 간 결합도가 높다
  • 자원관리가 어렵다.

REST

  • REST는 웹을 위한 제약조건의 집합을 의미

제약조건

  • 클라이언트 - 서버구조 => 서버는 클라이언트로 데이터만 전송하면 끝
  • 무상태성 => 요청은 상태를 가지지않음, 서버는 클라이언트가 이전에 무슨 요청을 보냈는지 모름
  • 캐시가능성 => 서버는 자원이 캐시 가능한지 명시해야 한다는 제약조건 
  • 계층형 시스템 => 계층형 시스템을 적용해야 한다는 제약조건
  • 주문형 코드 => 필요에 의해 기능을 확장할 수 있도록 해야한다는 제약조건 가장 중요하면서도 지키기 어려움 ex) 플러그인
  • *균일한 인터페이스 => 개발을 할 때 클라이언트와 맞닿아 있는 부분을 쉽고 일반적으로 설계하라는 제약조건
  • *자원의 식별 => 
  • *자기서술적 데이터 => html은 명세가 존재함, 해당 메세지를 해석하기 위한 방법이 존재한다는 것

요약

  • www의 등장으로 전세계에서 웹이라는 공간을 통해 데이터를 주고 받을 수 있게됨 => 폭발적인 사용량 증가로 인해 몇가지 문제 발생 =>  문제 해결을 위해 REST 등장
  • REST란 제약조건의 집합으로서 optional한 제약조건을 제외하고 5가지 이상의 제약조건을 모두 만족하면 RESTful하다라고 함
  • 클라이언트 - 서버구조, 무상태성, 캐시 가능성, 계층형 시스템, 주문형 코드 *균일한 인터페이스
  • 균일한 인터페이스 제약조건이 가장 지키기어려움
  • 실제 대부분의 RESTful API를 작성하는 것은 어려움 개발비용 대비 기대효과가 낮고 제약조건이 많아 RESTful을 지키기 어려움