Search

암호화

개요

암호화는 정보를 읽을 수 없는 형태로 변환하여, 허가되지 않은 접근으로부터 보호하는 기술이다.
즉, 평문(plaintext)을 암호문(ciphertext)으로 바꿔서 제3자가 내용을 볼 수 없게 하는 것이 목적이다.
암호화는 보안의 핵심 중 하나로, 데이터의 **기밀성(Confidentiality)**을 보장하는 데 사용된다.

암호화

암호화의 필요성

소프트웨어 프로그램은 사용자의 정보, 결제 정보, 인증 토큰 등 민감하고 중요한 정보를 다루게 되는데 이 데이터들을 평문으로 저장하거나 전송한다면
DB 유출 시 데이터 그대로 노출
네트워크 스니핑을 통한 도청
내부 직원의 악의적인 접근
등의 위협이 발생할 수 있다. 따라서 암호화는 선택이 아닌 필수가 되었다.

암호화의 기본 구성 요소

구성 요소
설명
평문 (Plaintext)
암호화 이전의 원래 데이터
암호문 (Ciphertext)
암호화된 결과물, 사람이 읽을 수 없음
키 (Key)
암호화와 복호화에 사용되는 비밀 값
알고리즘 (Algorithm)
암호화/복호화 규칙 (예: AES, RSA 등)
IV (Initialization Vector)
암호화에 무작위성을 부여하는 초기 값 (대칭키 방식에서 사용됨)

암호화의 종류

암호화는 먼저 가장 크게 복호화가 불가능한 단방향 암호화와 복호화가 가능한 양방향 암호화가 존재한다.

양방향 암호화

암호화된 데이터를 원래 상태(평문)으로 복호화할 수 있는 암호화 방식
데이터를 다시 사용할 수 있어야 하는 경우에 사용이 된다.
양방향 암호화는 다시 대칭키 암호화와 비대칭키 암호화로 나뉜다.
1.
대칭키 암호화
하나의 키로 암호화, 복호화 모두 수행
속도가 빠르게 효율적이지만 키가 노출되는 경우 치명적임
대표 알고리즘 : AES, DES 등
[] --> 암호화(평문 → 암호문) [같은 키] --> 복호화(암호문 → 평문)
TypeScript
복사
2.
비대칭키 암호화
공개키(Public Key)와 개인키 (Private Key)로 구성된다.
한쪽 키로 암호화한 데이터는 반대 키로만 복호화가 가능하다
키 공유 문제에 있어서 안전하나 대칭키 암호화방식보다 속도가 느리다.
대표 알고리즘 : RSA, ECC
[공개키] --> 암호화 [개인키] --> 복호화
TypeScript
복사

단방향 암호화

복호화가 불가능한 암호화 방식
입력값을 고정된 길이의 암호문으로 변환
주로 비밀번호 저장, 무결성 검증, 디지털 서명 등에 사용된다.
대표 알고리즘 : SHA-256, SHA-512, bcrypt
[입력값] -> 해시함수 -> [해시값] 복호화 (원래 데이터 복원 불가)
TypeScript
복사