Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 알고리즘
- 생산자 소비자 패턴
- spring cloud
- Resilinece4j
- thread
- zipkin
- 사가 패턴
- TypeScript
- 멀티스레드
- 스프링 배치
- 디자인패턴
- saga pattern
- Parallel Old GC
- 타입스크립트
- 체인 패턴
- The law of Demeter
- Java
- 스레드
- Serial GC
- Spring Cloud Netfilx Eureka
- 디자인 패턴
- spring batch
- MSA
- Action Pattern
- JPA
- 배치
- Transaction Pattern
- Spring Boot Actuator
- java 정렬
- 키클락
Archives
- Today
- Total
PSD( Private-Self-Development )
단방향 암호화 ( HASH ) 와 단점 보완 본문
단방향 암호화 방식 이란?
복호화가 불가능한 암호화 방식
주로 해시 함수를 이용하여 암호화한다.
해시 함수?
- 임의의 길이를 갖는 데이터를 입력받아 고정된 길이의 해시값을 출력하는 함수.
- 키값이 없기 때문에, 같은 입력값을 넣을 경우 같은 출력 값을 가지게 된다.
해시 함수의 특성
역상 저항성
- 해시된 값이 주어져 있을때 계산을 하여 입력된 값을 계산하기가 어려워야 한다.
제2 역상 저항성
- 원본 데이터와 해시 된 값이 주어졌을 때 똑같은 해시값을 반환하는 다른 데이터를 찾아내거나 계산이 불가능해야 한다.
충돌 저항성
- 데이터 A와 데이터 B가 같은 해시값이 나오면 안 된다.
압축 효과
- 원본 데이터의 크기 및 길이가 크더라도 해시 함수를 통해서 만들어진 해시값은 일정한 길이의 데이터여야 한다.
단방향 암호화
- 해시하는 것은 원본 데이터를 뭉갠다 라는 표현을 쓴다.
- 절때 복호화가 불가능하여야 하며 해시값을 가지고 원본 값으로 역산할 수 없어야 한다.
눈사태 효과
- 입력값의 아주 작은 변화로도 해시값이 전혀 다르게 도출되어야 한다.
단방향 암호화 종류
1. SHA-1 ( Secure Hash Algorithm-1 )
- 충돌 쌍 탐색 공격 때문에 SHA-2를 권장하고 있음.
충돌 쌍 탐색 공격 이란?
해시 충돌( 다른 입력 값인데 같은 해시 결과 가 나오는 경우 )
이 일어나는 두 입력값을 찾는 공격이다.
보안적으로 문제가 생긴다.
2. SHA-2( Secure Hash Algorithm-2 )
SHA-256
특징
- 현재 블록체인에서 가장 많이 채택하여 사용되고 있는 암호 방식
장점
- SHA-512보다 해시 생성이 빠르다.
- 안정성 문제도 크게 없다.
- 속도가 빠르다.
단점
- 길이 확장 공격에 취약하다.
SHA-512
단점
- 길이 확장 공격에 취약하다.
- 용량을 너무 많이 차지한다.
3. SHA-3( Secure Hash Algorithm-3 )
특징
- SHA-1과 SHA-2를 대체하기 위한 함수
장점
- SHA-2가 출력할 수 있는 메시지 해시값의 크기를 모두 출력 가능
- 충돌 저항성, 역상 저항성, 제2역상 저항성 만족
- SHA-2가 사용되는 곳에 SHA-3을 바로 적용 가능
- 메모리 효율이 좋다.
단점
- SHA-3을 지원하는 소프트웨어 또는 하드웨어가 사실상 없음
- SHA-1,2 보다 느린 속도
해시 함수의 단점 보완법
무차별 대입 공격, Rainbow table 공격, 충돌 쌍 탐색 공격, 길이 확장 공격 등 과 같이
해시 함수의 보안 문제를 해결하기 위한 보완법이 있다.
1. Key Stretching ( 키 스트레칭 )
- 해시 함수를 N번만큼 반복하는 것
- 무차별 대입 공격을 방지할 수 있다.

2. 솔팅(Salting)
- 암호화 데이터에 특정 데이터를 특정 위치에 추가한 후
해시값을 출력하는 것. - Rainbow Table 공격을 방지하는 효과가 있다.

참조
https://k0102575.github.io/articles/2020-03/hash
https://egg-stone.tistory.com/19
'Backend > 기타' 카테고리의 다른 글
단위테스트( Unit Test ) 와 테스트 주도 개발( TDD ) (0) | 2022.11.14 |
---|---|
Java 서버 와 Node.js 서버 장단점 및 비교 (0) | 2022.11.09 |
인터넷 브라우저에 도메인 주소 입력 시 발생하는 현상 (0) | 2022.11.09 |
비대칭키 암호화 방식( 공개키 암호화 방식 ) (0) | 2022.09.30 |
대칭키 암호화 방식 (1) | 2022.09.30 |