본문 바로가기

📘 Computer Science

(9)
해시(Hash)와 암호화(Encryption)의 차이점? 결론을 먼저 말해보면 둘 다 암호화 기법이지만, 해시(Hash)는 단방향 암호화 기법이며, 암호화(Encryption)는 양방향 암호화 기법이다. 즉, Hash는 평문 데이터를 암호화된 데이터로 바꿀 수 있는 단방향 암호화 기법이고, Encryption은 평문을 암호화된 데이터로 바꾸는 암호화와 암호화된 데이터를 평문 데이터로 바꿀 수 있는 복호화가 존재합니다. 1. Hash 해시 알고리즘은 특정 입력 값에 대해서 항상 동일한 결과 값을 리턴하게 됩니다. 해시 입력 값은 다르지만, 해시 결과 값은 동일할 수 있습니다. (여기서 중복이 적게 생길수록 좋은 해시 함수입니다.) 해시만 적용하는 것으로 완벽한 보안이 될까? 사실 어떻게 보안을 해도 어떤 천재 해커나 집요한 해커들에게 뚫릴 가능성이 Zero는 아..
[네트워크] HTTPS와 SSL/TLS HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말합니다. 1. SSL/TLS (Secure Socket Layer, Transport Layer Security Protocol) SSL은 1 버전부터 시작해서 2, 3 그리고 TLS 1.0, TLS 1.3까지 버전이 업그레이드되며 마지막으로 TLS로 명칭이 변경되었지만, 보통 SSL/TLS로 불립니다. SSL/TLS는 전송 계층에서 보안을 제공하는 프로토콜입니다. 클라이언트와 서버가 통신할 때 이 프로토콜을 통해서 제3자가 메시지에 접근할 수 없도록 해줍니다. (인터셉터 방지) SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교..
[운영체제] 프로세스와 스레드 1. 프로세스 (Process) 운영체제로 부터 자원을 할당받은 작업의 단위를 말합니다. (1) 프로그램과 프로세스 프로그램은 윈도우에서는 exe파일, 맥북에서는 dmg 파일을 의미합니다. 프로그램은 프로그래밍 언어(C, Java 등)로 코드를 작성하면 개발할 수 있습니다. 즉, 프로그램은 말그래도 코드 덩어리를 말합니다. 이런 코드 덩어리(프로그램)를 실행시키면 프로세스가 된다. 정리해 보면 프로세스는 프로그램이 작동되고 있는 상태를 말합니다. 프로그램이 실행되기 위해서는 운영체제(OS)가 메모리를 할당해줘야 합니다. 이렇게 운영체제에게 메모리 공간을 할당받고, CPU도 할당받아서 프로그램의 코드가 실행되면 프로세스가 됩니다. (2) 프로세스의 상태 상태 설명 생성 (new) 프로세스가 생성되고 아직 ..
[네트워크] PDU (Protocol Data Unit) 1. PDU (Protocol Data Unit)이란? 네트워크의 계층과 계층 사이에 데이터가 전달될 때 한 덩어리의 단위를 PDU라고 합니다. PDU는 헤더와 페이로드로 구성되어 있고, 계층마다 부르는 명칭이 다릅니다. (1) 헤더 (Header) 각 계층마다 필요한 정보 및 기능이 담겨있습니다. 제어 관련 정보들이 포함되어 있습니다. (송신) 상위 계층에서 전달된 PDU에 자신의 계층에서 만든 헤더를 추가해서 하위 계층으로 전달합니다. (수신) 각 층에서 생성한 헤더 정보는 각 층에서 해결합니다. (2) 페이로드 (Payload) 송신 측에서 보내고자 하는 실제 데이터를 의미합니다. 택배를 예로 들면 박스, 송장, 포장지 등은 페이로드에 속하지 않고, 받기로 한 택배물이 페이로드라고 생각하면 됩니다.
[네트워크] 네트워크 프로토콜 표준화 1. 네트워크 프로토콜이란? 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 말합니다. 쉽게 생각해 보면 장치와 장치 사이에 데이터 통신을 해야 하는데, 미리 정해놓은 어떤 규약(약속)에 따라서 통신을 하게 됩니다. 이때 이 규약(약속)을 네트워크 프로토콜이라고 합니다. 2. 프로토콜의 표준화가 필요한 이유? 모든 송신자와 모든 수신자가 표준화된 프로토콜을 지키기만 한다면 서로 통신이 가능하도록 해줍니다. 하지만 프로토콜이 표준화되어 있지 않다면, 특정 송신자는 자신의 프로토콜과 일치한 특정 수신자에게만 데이터를 송신할 수 있게 됩니다. 3. 프로토콜의 종류 많이 들어본 프로토콜 위주로 정리해보면 TCP, IP, UDP, HTTP 등이 있습니다. 여기서 마지막에 붙은 'P'가 Proto..
[데이터베이스] 조인의 원리 1. 중첩 루프 조인 (NLJ, Nested Loop Join) 중첩 for 문과 같은 원리로 조건에 맞는 조인을 하는 방법을 말합니다. Index에 의한 Random Access 비용이 많이 증가하기 때문에 대용량 데이터를 다루기에는 적절하지 않습니다. 중첩 루프 조인의 작동 # CS 전공지식 노트 226 page for each row in t1 matching reference key { for each row in t2 matching reference key { if row satisfies join conditions, send to client } } 위에 있는 코드는 중첩 루프 조인을 사용하여 t1 테이블과 t2 테이블을 조인하는 의사 코드입니다. t1 테이블에서 행을 한 번에 하나씩 읽고..
[데이터베이스] 관계와 키 1. 관계 하나의 데이터 베이스에는 여러 개의 테이블이 존재합니다. 여러 개의 테이블들은 서로 관계를 가지고 있고, 이런 관계를 '관계 화살표'를 이용하여 표현합니다. 여러 가지 관계의 종류에 대해서 알아봅시다. (1) 1 : 1 관계 유저 한 명에게는 하나의 유저 이메일이 존재한다고 해봅시다. 그럼 유저와 유저 이메일은 1 : 1 관계를 가지게 됩니다. 1 : 1 관계를 사용하면 두 개의 테이블로 나누어 테이블 구조를 더 쉽게 이해할 수 있도록 해준다는 장점이 있습니다. (2) 1 : N 관계 위에서 만들었던 유저 테이블이 존재하고, 만약 이 유저가 구매할 상품들을 장바구니에 담는다고 해봅시다. 한 명의 유저는 여러 개의 상품을 장바구니에 담을 수 있습니다. 이때는 유저와 상품이 1 : N 관계를 가지..
[운영체제] 프로세스의 메모리 구조 (JVM 메모리 구조) 운영체제는 프로세스가 실행될 때 해당 프로세스가 필요로 하는 적절한 메모리를 할당하게 됩니다. 프로세스에게 할당되는 메모리 구조에 대해서 알아보고자 합니다. 1. 프로세스의 메모리 구조 그림에서 보면 바로 알 수 있듯이 스택 영역과 힙 영역은 크기가 동적으로 변하는(화살표가 존재) 구조를 가지고 있고, 데이터 영역과 코드 영역은 정적인 구조라고 볼 수 있습니다. 하나씩 어떤 역할을 하는지 알아봅시다. (1) 스택 영역 (Stack Area) 스택 영역은 함수(메서드), 함수에 인자로 들어가는 매개변수(Parameter), 함수 안에 있는 지역변수(Local Variable)가 저장되는 영역입니다. 컴파일 시에 크기가 결정되고, 동적인 구조를 가지고 있습니다. 위 그림에서 볼 수 있듯이 위쪽에 있는 주소부..