개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. 암호화 알고리즘이란 무엇인가요?
  • Q. 레인보우 테이블에 대해 조금 더 자세히 설명해주세요.
  • Q. 솔트가 뭔가요?
  1. 알고리즘과 자료구조

암호화 알고리즘

Q. 암호화 알고리즘이란 무엇인가요?

암호화 알고리즘은 데이터를 안전하게 보호하기 위해 정보를 변환하는 수학적 절차입니다. 이를 통해 원래의 데이터를 읽을 수 없도록 변환하여, 인가되지 않은 사용자가 접근하지 못하도록 합니다. 대표적으로 대칭키 암호화와 비대칭키 암호화가 있습니다. 또한, 암호화 알고리즘은 해시 함수와 함께 사용될 수 있으며, 이 경우 레인보우 테이블 공격에 대한 방어가 중요합니다. 레인보우 테이블은 미리 계산된 해시 값의 목록으로, 공격자가 비밀번호를 쉽게 찾아낼 수 있도록 도와줍니다. 따라서, 안전한 암호화 알고리즘을 선택하고, 솔트(salt)를 추가하여 해시 값을 생성함으로써 레인보우 테이블 공격에 대한 저항력을 높이는 것이 중요합니다.

Q. 레인보우 테이블에 대해 조금 더 자세히 설명해주세요.

레인보우 테이블은 해시 값을 미리 계산하여 저장한 테이블로, 비밀번호를 해시로 변환한 후 이를 역으로 찾아내는 공격 방법입니다. 이 테이블은 일반적으로 대량의 비밀번호와 해당 비밀번호의 해시 값을 포함합니다. 공격자가 레인보우 테이블에 접근할 경우, 해시 값을 역으로 찾아내어 원래 비밀번호를 쉽게 찾아낼 수 있습니다. 따라서, 레인보우 테이블 공격을 방지하기 위해 솔트(salt)를 사용하여 해시 값을 생성하는 것이 중요합니다. 솔트를 사용하면, 동일한 비밀번호라도 다른 해시 값을 생성하게 되며, 레인보우 테이블 공격을 방지할 수 있습니다.

Q. 솔트가 뭔가요?

솔트(salt)는 암호화할 때 원래 비밀번호에 추가하는 임의의 문자열입니다. 이를 통해 동일한 비밀번호라도 다른 해시 값을 생성하게 되며, 레인보우 테이블 공격을 방지할 수 있습니다. 예를 들어, 사용자가 "password123"라는 비밀번호를 사용할 경우, 솔트를 추가하여 "password123" + "randomsalt"와 같은 형태로 암호화할 수 있습니다. 이렇게 하면, 동일한 비밀번호라도 다른 해시 값을 생성하게 되며, 레인보우 테이블 공격을 방지할 수 있습니다.

Previous스택(Stack)과 큐(Queue)NextLinkedList

Last updated 7 months ago