ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 완벽 가이드 14장 보안 HTTP
    Web Dev/7. 네트워크 2021. 2. 28. 15:55
    728x90
    • HTTP 만으로 기밀데이터가 있는 요청을 웹상에서 하는 것은 어렵다
      • 이를 위해 HTTP와 디지털 암호화 기술을 결합해야한다
    • HTTPS
      • HTTP를 안전하게 만드는 방식 중에서 가장 인기 있는 것
      • HTTPS를 사용하면 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다. HTTPS는 HTTP 하부에 전송 레벨 암호 보안 계층을 제공함으로써 동작
    • 공개키 암호법
      • 한쌍의 호스트가 하나의 인코딩/디코딩 키를 사용하는 것이 아니라, 두개의 비대칭 키를 사용한다
      • 인코딩 키는 공개되어있어 누구나 평문을 암호화 할 수 있으나, 이를 해독하는 것은 디코딩 키를 가진 호스트만 할수있다. 
      • 키의 분리를 통해 메시지의 인코딩은 누구나 할수 있되, 메시지 디코딩은 소유자만 할 수 있다는 것이 장점디아. 
      • 대칭키의 경우보다 적은 수의 키가 필요하다
      • 거대한 공개 키 인프라(PKI)표준화 작업을 통해 표준화된 공개키 기술 묶음을 만들고 있고, 이를 통해 보안 프로토콜의 전세계의 모든 컴퓨터 사용자에게 적용하게 하는 것을 가능하게 했다.
    • RSA 알고리즘ㅁ
      • 공개키 암호화의 핵심 세가지는 아래의 세개가 털려도 비밀키를 계산하지 못하게 하는 것이다. 
        • 공개키(공개되서..)
        • 가로채서 얻은 암호문(네트워크 스누핑 해가지고...)
        • 메시지랑 암호문(인코더에 해커가 임의로텍스트를 넣고 실행해서 획득하는 것)
      • MIT에서 개발한 RSA로 이를 해결할 수 있따. 
      • 암호를 크래킹해서 개인키를 찾아내는건 computer science분야에서 가장 어려운 문제중하나와 맞먹는다. 이거 할줄알면 대박난다. 
    • 근데 공개키 암호화가 조금 느린 느낌이있다고 한다. 그래서 대칭과 비대칭을 혼합해서 사용한다. 
      • 의사소통 채널을 수립할때는 편리하도록 보안/편리성을 위해 공개키 암호화를 사용하고
      • 이렇게 안전하게 만들고나면 무작위로 대칭키를 생성해서 교환함(공개키로 채널을 생성했으니 털릴확률이 확떨어짐)
      • 그리고 나서는 데이터를대칭키를 통해서 암호화해서 사용한다.
      • 즉 대칭키를 교환할때 공개키 암호화 방식을 적용한다. 
    • 디지털 서명
      • 암호체계는 메시지를 암호화하고 해독하는 것뿐 아니라, 누가 메시지를 썼는지 알려주고 그 메시지가 위조되지 않았음을 증명하기 위해 메시지에 서명하게 하는데도 이용할 수 있다. 
      • 서명 암호 체크섬이다. 
    • 서버 인증을 위해 인증서 사용하기
      • 사용자가 HTTPS를 통한 안전한 웹 트랜잭션을 시작할 떄, 최신 브라우저는 자동으로 접속한 서버에서 디지털 인증서를 가져온다
      • 만약 서버가 인증서를 갖고 있지 않다면 보안 커넥션은 실패한다
      • 서버인증서가 가지고 있는 내용
        • 웹사이트의 이름과 호스트명
        • 웹사이트의 공개키
        • 서명 기관의 이름
        • 서명 기관의 서명
      • 브라우저가 인증서를 받으면 서명 기관을 검사한다. 신뢰할만한 서명 기관이면 브라우저는 해당 서명의 공개키를 이미 알고있고, 브라우저는 서명을 검증한다
    • HTTPS의 세부사항
      • HTTP의 가장 유명한 보안버전이다
      • 널리 구현되었으며 주류 상용 브라우저와 서버에 구현되어있다
      • HTTPS를 통해 웹기반 전자상거래의 고속 성장을 이끌고 있다. 
      • HTTPS는 그냥 보안 전송 계층을 통해서 전송되는 HTTP이다
        • HTTP는 그냥 TCP 계층을 거쳐서 인터넷으로 데이터를 쏘는데
        • HTTPS는 보내기전에 SSL/TLS 계층(보안계층)으로 데이터를 보내서 거기서 암호화 한번하고 데이터를 네트워크상으로 내보낸다. 
    • 현재 보안 HTTP는 선택적이라, 웹서버로 요청을 보낼때, 웹서버한테 HTTP의 보안 프로토콜 버전을 수행한다고 말해줘야하는다, 이는 URL의 스킴(http, https)이걸로 한다. 
      • 웹브라우저등의 클라이언트는 웹리소스에 대한 트랜잭션 수행을 요청하면 우선 스킴을 검사한다
      • 그냥 http면 서버의 80포트로 연결하고, 그냥 원래 하던대로 http명령을 전송한다
      • https면 443포트로 연결하고, 서버랑 바이너리 포맷으로 된 몇몇 SSL 보안 매개변수를 교환하면서 핸드셰이크를 하고,암호화된 HTTP명령을 보낸다. 
    • 보안 HTTPS 트랜잭션은 항상 서버 인증서를 요구한다
    • stackoverflow.com/questions/2645009/binary-protocols-v-text-protocols
     

    binary protocols v. text protocols

    does anyone have a good definition for what a binary protocol is? and what is a text protocol actually? how do these compare to each other in terms of bits sent on the wire? here's what wikipedia...

    stackoverflow.com

    • 프락시를 통한 보안 트래픽 터널링
      • 클라이언트는 종종 그들을 대신하여 웹서버에 접근해주는 웹 프락시 서버를 이용한다. 
      • 그런ㄴ데 클라이언트가 서버로 보낼 데이터를 서버의 공개키로 암호화하면 프락시는 더이상 HTTP헤더를 읽을 수가 없다
      • 그러면 이 프락시는 요청을 어디로 보내야하는지 알수가 없다
      • 이를 해결하기 위한 인기있는 기법은 HTTPS SSL 터널링 프로토콜이다. 이를 통해 클라이언트는 먼저 프락시에게 자신이 연결하고자하는 안전한 호스트와 포트를 말해준다. 클라이언트는 이내용을 프락시가 읽을 수 있도록 암호화가 시작되기 전의 평문으로 말해준다.
      • HTTP connect라 불리는 새로운 확장 매서드를 이용해서 평문으로 된 종단 정보를 전송하기 위해 사용하고, 프락시에게 희망하는 호스트와 포트번호로 연결응ㄹ 해달라고 말해준다. 그러고 나면 클라이언트와 서버사이에서 데이터가 직접적으로 오갈수있는 터널ㅇ이 생성된다. 이러고나면 클라이언트는 프락시로부터 응답을 받고, 제대로 커넥션이 생성됬다면, 이제 뭔가를시작한다. 

    댓글

Designed by Tistory.