728x90

Computer Science

    [네트워크] 토큰 기반 인증(+JWT), 서버(세션)기반 인증

    토큰(Token) 기반 인증 클라이언트가 서버에 접속 시 서버에서 해당 클라이언트에게 인증의 의미로 '토큰'을 부여 -> 인증(Authentication) 클라이언트는 또 다시 서버에 요청을 보낼 때 발급받은 토큰을 요청 헤더에 심어 전송 서버는 헤더 내 토큰을 열어 자신이 제공한 토큰이 맞는지 확인하여 인증 과정 처리 -> 인가(Authorization) 💡용어 정리 - 인증(Authentication): 자신이 누구인지 증명하고 검증하는 과정 (로그인) - 인가(Authorization): 인증 작업 이후에 인증된 사용자에 대한 자원 접근 확인 및 허가 절차 (권한 확인) 장점 토큰 정보를 클라이언트 측에서 저장하기 때문에 stateless(무상태)하며, 서버 확장에 용이 (서버 부담 X) 토큰은 한..

    [네트워크] SSL/TLS 핸드쉐이크 - TLS 1.3

    SSL과 TLS TLS(Transport Layer Security)는 SSL(Secure Socket Layer)의 상위 버전 표현이라고 할 수 있다. SSL은 SSL 1.0부터 시작해 SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.3까지 버전 업데이트가 되면서 SSL의 명칭이 TLS로 변경된 것이다. 이 포스트에서는 TLS 3.0을 기반으로 설명하며 명칭은 TLS로 통일한다. TLS는 전송계층에서 보안을 제공하는 프로토콜이다. HTTPS 통신 시 주로 사용되며, 클라이언트와 서버가 통신할 때 TLS를 통해 제3자가 메시지를 도청하거나 위조, 변조하지 못하도록 한다. TLS는 다음과 같은 기능 및 역할을 가진다. 암호화: 제3자와 주고받는 데이터를 숨김 인증: 통신의 대상이 신뢰할 수 있는..

    [보안] 대칭키와 비대칭키(공개키) 암호화 + 디지털 인증서

    대칭키 암호화 암복호화에 사용되는 키가 동일한 방식 장점: 암호화 속도 빠름, 대용량 데이터 암호화에 적합, 기밀성 제공 단점: 키 배송 문제 발생 - 키 교환 시 탈취 위험, 사람이 증가할수록 키 관리 어려움, 낮은 확장성, 무결성/인증/부인방지 제공 X Session Key(세션키), Secret Key(비밀키), Shared Key(공유키), 단용키라고도 함 대표적 알고리즘 : 공인인증서의 암호화방식으로 유명한 SEED, DES, 3DES, AES, ARIA, 최근 주목받고 있는 암호인 ChaCha20 비대칭키 암호화 암복호화에 사용되는 키가 서로 다른 방식 (공개키와 개인키) 장점: 키 분배 필요 X, 기밀성/인증/부인방지 기능 제공 단점: 암호화 속도 느림, 무결성 제공 X 암호 모드: 공개키로..

    [네트워크] HTTP/1.X, HTTP2, HTTP3 버전 차이, 특징

    ※ HTTP 개요: https://zu-techlog.tistory.com/60 [네트워크] HTTP와 HTTPS 프로토콜 HTTP (Hyper Text Transfer Protocol) 웹 상에서 클라이언트와 서버 간에 요청(request)과 응답(response)으로 정보를 주고 받을 수 있는 프로토콜 TCP와 UDP 사용, 80번 포트 사용 비연결(Connectionless) 클라이언트가 zu-techlog.tistory.com HTTP 버전 - HTTP/1.X, HTTP2, HTTP3 HTTP/1.0 한 연결당 하나의 요청을 처리하도록 설계 서버에게 요청 시 매번 연결과 해제의 과정을 반복해야 했기에 RTT가 오래걸린다는 문제 RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리..

    [네트워크] TCP/IP 흐름제어와 혼잡제어

    흐름제어 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 송신측의 전송량이 수신측의 처리량보다 클 경우 수신측의 큐가 용량을 넘어 전송된 패킷의 손실이 일어날 수 있기 때문에 송신측의 패킷 전송량을 제어함 수신측이 송신측에게 현재 자신의 상태를 피드백하는 형태 1. Stop and Wait 매번 전송한 패킷에 대해 확인 응답(ACK)을 받아야만 그 다음 패킷을 전송 구조 상 비효율적 2. Sliding Window 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 패킷을 전송할 수 있게하여 데이터 흐름을 동적으로 조절 송신측은 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 수신측으로부터 확인 응답(ACK)가 오면 윈도우를 옆으로 옮겨가며 다음 패킷들을 전송 동작 방식 송신측에서 ..

    [네트워크] HTTP 상태/응답 코드 정리

    HTTP Status Code HTTP 상태 코드는 클라이언트가 보낸 요청(request)이 성공적으로 처리되었는지 그 상태를 응답(response)을 통해 알려주기 위해 활용된다. 이러한 응답은 5개의 그룹으로 나뉘어지며, 상태 코드를 표시하는 3자리 수 중 가장 앞자리 수가 바로 응답의 종류를 의미한다. 상태 그룹 역할 1XX Informational Response 조건부 응답 현재 요청까지 처리했다는 전송 프로토콜 수준의 임시적 응답 2XX Success 성공 클라이언트의 요청이 성공적으로 처리 3XX Redirection 경로 재지정 요청 처리를 완료하기 위해 클라이언트의 추가적인 조취 필요 4XX Client Error 클라이언트 오류 요청 내용이 잘못되는 등 클라이언트로 인한 오류 발생 5X..

    [네트워크] REST, REST API, RESTful 알아보기

    REST 자원을 이름으로 구분하여 해당 자원의 상태 및 정보를 주고 받는 모든 것을 의미 웹의 기존 기술과 HTTP 프로토콜을 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일 네트워크 상에서 Client와 Server 사이의 통신 방식 HTTP URI를 통해 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD를 적용하는 것 REST 구성 요소 자원(Resource) URI로 표시 모든 자원에 대한 고유 ID(URI)가 존재하고, 이 자원은 Server에 존재 Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청 행위(Verb) HTTP 프로토콜의 Method 사용 표현..

    [디자인패턴] Factory Method 패턴 - 하위 클래스에서 인스턴스 작성하기

    ※ Java 언어로 배우는 디자인 패턴 입문(영진닷컴) 도서를 바탕으로 작성된 내용입니다. Factory Method(펙토리 메소드) 패턴 소개 Template Method 패턴을 인스턴스 생성의 측면에 적용한 패턴 아래의 Factory Method 패턴 구조에서는 Creates가 Template Method에 해당 인스턴스를 만드는 방법을 상위 클래스에서 결정하지만 구체적인 클래스 이름까지 결정하지 않으며 구체적인 내용은 모두 하위 클래스에서 수행 상위 클래스에서는 공정(설계)만 선언, 하위 클래스에서 공정의 구체적인 동작을 구현 예제 프로그램 - ID카드 공장 - Product 클래스 (Product.java) 추상 클래스로 구현된 Product(제품)의 역할 package framework; pub..

728x90