💻
ComputerScience
  • 목차
  • Operating System
    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • CPU 스케줄링
    • 데드락(DeadLock)
    • Race Condition
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션
    • 페이지 교체 알고리즘
    • 메모리(Memory)
    • 파일 시스템
  • Network
    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • TLS/SSL handshake
    • 로드 밸런싱(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort) @mimwin
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS @sujin-kk
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법(Dynamic Programming)
    • 다익스트라(Dijkstra) 알고리즘
    • 비트마스크(BitMask)
  • Database
    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 정규화(Nomalization)
    • 이상(Anomaly)
    • 인덱스(INDEX)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 저장 프로시저(Stored PROCEDURE)
    • 레디스(Redis) @sujin-kk
  • Java
    • Java 컴파일 과정
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • 자바 가상 머신(Java Virtual Machine)
    • Casting(업캐스팅 & 다운캐스팅)
    • 오토 박싱 & 오토언박싱
    • Thread 활용
    • 고유 락(Intrinsic Lock)
    • 문자열 클래스
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • 직렬화(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • 암호화
  • 복호화
  • 대칭키 암호화 방식
  • 비대칭키 암호화 방식
  1. Network

대칭키 & 공개키

PreviousUDPNextHTTP & HTTPS

Last updated 2 years ago

암호화

  • 어떤 내용을 남들이 읽을 수 없도록 하여 비밀이 유지되어야 할 때 사용된다.

  • 암호화를 하기 위해선 키 가 필요하다. 데이터 + 키 = 암호화된 데이터 ( 이때, 키는 문자, 숫자 등 자유롭게 생성 가능. )


복호화

  • 암호화된 데이터를 다시 원래의 데이터로 바꾸는 작업

  • 복호화에도 키가 꼭 필요하다. 암호화된 데이터 + 키 = 데이터

  • 암호화, 복호화 과정에서 사용되는 키가 동일할 수도 있고, 다를 수도 있다.


대칭키 암호화 방식

  • 암호화를 하는 키와 복호화를 하는 키가 동일한 방식

  • 이때 키를 대칭키 라고 한다.

종류 : DES, AES 등

[ 예시 ]

위 예시처럼 대칭키 암호화 방식은 동일한 키로 암호화, 복호화를 모두 한다.

단순한 방식이기에 속도가 빠르지만, 누군가 대칭키를 훔쳐보고 알아낸다면 데이터가 누출될 위험이 크다.

또한 사람이 증가할수록 전부 키 교환이 따로따로 이루어지기 때문에 관리해야 할 키가 많아진다.

대칭키 알고리즘의 약한 보안문제를 해결하기 위해 나온 것이 비대칭키 암호화 방식이다.


비대칭키 암호화 방식

  • 암호화와 복호화에 쓰이는 키가 다른 방식

  • 2개의 키로 암호화, 복호화에 각각 사용된다. ( 공개키와 비밀키라고 부른다. )

  • A, B 두개의 키가 있을때, A 키로 암호화된 데이터는 B키로만 복호화가 가능하고, B키로 암호화된 데이터도 A키로만 복호화가 가능하다.

종류: RSA, Elgamal 등

위 예시에서 두 명 모두 각자의 공개키와 비밀키를 가지고 있다. 이때 공개키는 모두에게 공개된 키를 뜻한다.

전달할 내용을 상대방의 공개키로 암호화하고, 전달받은 내용은 자신의 비밀키로 복호화한다.

키교환이 필요하지 않고, 공개키가 노출되더라도 비밀키를 알지 못해 데이터를 복호화할 수 없어 안전하다.

이 방식은 복잡한 수학으로 이루어져 있어 성능상 속도가 느리다.


[ 예시 ]