[면접스터디] 4주차 10/19 수

Hyeseong Kim·2022년 10월 19일
0

스터디

목록 보기
4/8

양방향 암호화와 단방향 암호화의 차이

1. 단방향 암호화

암호화된 데이터에 대한 복호화가 불가능한 암호화 방식.
대표적으로 HashMAC이 있다.

Hash

  • 임의의 길이 메시지로부터 고정길이의 해시값을 계산한다. 단방향 암호화이기 때문에 해시값으로부터 메시지를 역산할 수는 없으며 이를 일방향성을 갖는다라고 말한다.
  • 메시지가 다르면 해시값도 달라지는 특성으로 인해 해시함수를 무결성 확인의 용도로 사용하기도 한다.
  • 대표적인 알고리즘으로 MD5, SHA-256/512등이 있다.

MAC (Message Authentication Code)

  • 임의 길이의 메시지와 송수신자가 공유하는 키를 기반으로 하는 고정 길이의 출력값을 계산하는 함수로 출력한 값을 MAC라고 한다.
  • 메시지 인증 코드는 메시지의 무결성을 확인하고 메시지에 대한 인증을 할 때 사용된다.
  • MAC알고리즘은 메시지와 키를 이용해 MAC값을 구하고 송신자는 메시지에 MAC값을 끼워 보낸다.
  • 수신자는 받은메시지와 본인의 키로 MAC알고리즘을 통해 MAC값을 구하고 송신자가 보낸 MAC값과 일치하는지 확인한다.
  • 이를 통해 메시지의 데이터 인증과 더불어 무결성을 보호한다.

2. 양방향 암호화

암호화된 데이터에 대한 복호화가 가능한 암호화 방식.
대표적으로 대칭키, 공개키 암호화 방식이 있다.

대칭키

대칭키는 암복호화키가 동일하며 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있게 한다.
대표적인 알고리즘으로 DES, 3DES, AES, SEED, ARIA 등이 있다.

  • 장점
    • 공개키 암호화 방식에 비해 속도가 빠르다.
  • 단점
    • 키를 교환해야하는 문제(키 배송 문제)가 발생한다.
    • 키를 교환하는 중에 키가 탈취될 수 있는 문제가 있다.
    • 사람이 증가할수록 전부 키를 따로따로 교환해야 하므로 관리해야할 키가 방대해진다.
    • 키의 사전 공유에 의한 해결, 키 배포센터에 의한 해결, Diffie-Hellman 키 교환에 의한 해결, 공개키 암호 방식 사용으로 해결

공개키

키가 공개되어있기 때문에 키를 교환할 필요가 없어지며 공개키는 모든 사람이 접근 가능한 키이고 개인키는 각 사용자만이 가지고 있는 키이다.

  • 장점
    • 공개키는 공개되어 있기 때문에 키교환이나 분배를 할 필요가 없어진다.
    • 개인키를 가지고 있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로 일종의 인증기능도 제공한다.
  • 단점
    • 대칭키 암호화 방식에 비해 속도가 느리다.

브라우저 렌더링 원리와 사용자에게 보이는 순서에 대해서 설명하시오

1. 브라우저 렌더링 원리

HTTP 모듈 또는 파일 시스템으로 전달 받은 resource stream을 읽는 과정인 1. Loading 과정을 거치고, HTML 마크업을 처리하고 2. DOM Tree를 빌드하며, CSS 마크업을 처리하고 3. CSSOM Tree를 빌드합니다. 생성한 DOM 및 CSSOM 트리를 결합하여 4. 렌더링 트리를 형성하며, 렌더링 트리에서 각 노드의 형태를 계산하여 Box-Model을 생성하는 5. Layout 과정을 거치고, 개별 노드를 화면에 페인트하는 6. Paint 과정을 거쳐 렌더링이 이루어집니다.

2. 사용자에게 보이는 순서

웹페이지는 다른 도메인 페이지로 이동하려고 할 때 발생하는 Prompt for unload 과정을 시작으로 Redirect부터 Response 까지의 과정에 해당하는 네트워크 통신 과정을 거칩니다.

세부적인 과정을 설명하면, 해당하는 URL로 HTTP 요청을 보내는 Redirect, 이미 캐싱된 응답을 확인하여 재사용하는 AppCache 과정을 거치고, DNS를 통해 도메인을 IP주소로 변환한 다음, IP 주소를 통해 TCP 통신으로 서버에 연결하여 Request, Response의 과정을 거칩니다. 응답을 받은 후에는 파일을 파싱하고 렌더링하는 Processing 과정을 거치고 마지막으로 화면에 보여주는 Load 과정을 수행합니다.

DB 트랜잭션의 개념과 그 특징들에 대해서 설명해보세요

데이터베이스의 상태를 변환시키는 하나의 논리적인 작업 단위를 구성하는 연산들의 집합

  • 하나의 트랜잭션은 commit 되거나, rollback 된다.

트랜잭션의 성질

  • 원자성 (Atomicity), All or nothing

    • 트랜잭션의 모든 연산들은 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 상태를 보장해야 한다.
  • 일관성 (Consistency)

    • 트랜잭션은 완료 후에도 데이터베이스가 일관된 상태로 유지되어야 한다.
  • 독립성 (Isolation)

    • 하나의 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때 까지 다른 트랜잭션이 참조하지 못한다.
  • 지속성 (Durability)

    • 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다.

교착 상태란?
참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ndb796&logNo=221243161017

Load Balancer에 대해 설명하시오

서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술.
클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 준다.

로드 밸런싱은 주로 서버 구축 및 활용 시에 고려한다. 처음에 구축했던 서버가 수용할 수 있는 범위보다 더 큰 트래픽으로 기존 서버를 사용할 수 없게 되는 경우가 있다. 이 때 서버 트래픽을 분산시키기 위해 사용한다.

방법
https://velog.io/@awt0311/%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%8B%B1

0개의 댓글