SHA(Secure Hash Algorithm) – 안전한 해시 알고리즘

SHA란?

SHA(Secure Hash Algorithm)는 데이터를 안전하게 보호하기 위한 해시 함수 알고리즘으로, 미국 국립표준기술연구소(NIST)와 미국 국가안보국(NSA)이 개발한 암호화 해시 함수입니다. 주로 비밀번호 저장, 데이터 무결성 검증, 디지털 서명 및 블록체인 기술 등 다양한 보안 분야에서 사용됩니다.

SHA는 다양한 버전이 있으며, 대표적인 알고리즘으로는 SHA-1, SHA-2, SHA-3 계열이 있습니다. 특히 SHA-256은 256비트 길이의 해시 값을 생성하는 강력한 암호화 해시 함수로, 과거 MD5 및 SHA-1이 보안 취약점으로 인해 더 이상 안전하지 않게 된 이후 이를 대체하는 용도로 널리 사용되고 있습니다.

SYN Flooding 공격이란? 👆

SHA의 등장 배경

MD5와 SHA-1의 한계

과거에는 MD5(Message Digest Algorithm 5)와 SHA-1이 널리 사용되었습니다. 하지만 이 두 알고리즘은 점차 보안이 취약하다는 것이 밝혀졌습니다.

  • MD5 (128비트 해시 함수)

    • 1991년 개발된 해시 알고리즘

    • 빠른 연산 속도를 자랑하지만 충돌 공격(Collision Attack)에 매우 취약

    • 2012년 이후부터 보안 목적으로 사용되지 않음

  • SHA-1 (160비트 해시 함수)

    • 1995년 SHA-0의 결함을 수정한 형태로 개발됨

    • 2005년 이후부터 충돌 취약점이 발견되기 시작

    • 2017년 구글과 CWI 암스테르담이 SHA-1 충돌 공격을 성공적으로 수행하여 더 이상 안전하지 않다고 판명됨

이러한 문제로 인해 더욱 안전한 SHA-2 계열이 등장하게 되었으며, SHA-256이 현재 널리 사용되고 있습니다.

Smurf Attack: ICMP 프로토콜을 악용한 서비스 거부(DoS) 공격 👆

SHA-256의 특징

SHA-256은 SHA-2 계열의 대표적인 알고리즘으로, 256비트 길이의 해시 값을 생성합니다. 주요 특징은 다음과 같습니다.

  • 256비트(32바이트) 해시 값 생성: 입력 데이터 크기와 관계없이 256비트(64자리 16진수)의 고정된 해시 값을 반환합니다.

  • 단방향성(One-way Function): 해시 값을 통해 원래의 입력값을 되돌릴 수 없습니다.

  • 충돌 저항성(Collision Resistance): 서로 다른 두 개의 입력이 동일한 해시 값을 가질 확률이 극히 낮습니다.

  • 고속 연산 가능: 높은 보안성을 유지하면서도 비교적 빠른 연산 속도를 제공합니다.

  • 다양한 보안 응용: 디지털 서명, 블록체인, 파일 무결성 검증 등 다양한 분야에서 활용됩니다.

Screened Host Gateway: 네트워크 보안을 강화하는 방안 👆

SHA-256의 내부 동작 원리

SHA-256은 복잡한 비트 연산을 수행하는 알고리즘으로, 다음과 같은 단계를 거쳐 해시 값을 생성합니다.

패딩(Padding)

SHA-256은 입력 데이터 크기를 512비트 블록 단위로 맞추기 위해 패딩을 수행합니다.

  • 데이터 끝에 1을 추가한 후, 0을 채워 512비트의 배수로 만듭니다.

  • 마지막 64비트에는 원래 데이터 길이를 저장합니다.

메시지 스케줄링(Message Scheduling)

  • 512비트 블록을 16개의 32비트 워드(Word)로 나눕니다.

  • 이후 64개의 워드로 확장하는 과정이 진행됩니다.

초기 해시 값 설정

SHA-256은 8개의 32비트 초기 해시 값을 사용하며, 이 값은 다음과 같습니다.

h0 = 0x6a09e667
h1 = 0xbb67ae85
h2 = 0x3c6ef372
h3 = 0xa54ff53a
h4 = 0x510e527f
h5 = 0x9b05688c
h6 = 0x1f83d9ab
h7 = 0x5be0cd19

압축 함수(Compression Function)

  • 64번의 반복 연산을 수행하며, 각 단계에서 8개의 해시 값이 업데이트됩니다.

  • 비트 연산(AND, OR, XOR, 비트 이동 등)을 이용하여 보안성을 강화합니다.

최종 해시 값 출력

모든 블록의 연산이 끝나면 최종 256비트(32바이트) 해시 값을 출력합니다.

Session(세션)이란? 👆

SHA-256 해시 예제

SHA-256을 사용하여 텍스트의 해시 값을 생성하는 예제입니다.

예제 코드 (Python)

import hashlib

text = "Hello, SHA-256!"
hash_object = hashlib.sha256(text.encode())
hex_dig = hash_object.hexdigest()
print("SHA-256 해시 값:", hex_dig)

실행 결과 예시

SHA-256 해시 값: 8c5b3f6034d3d7f8a8f5b977e7b4a9e4a3b1cb62f46d84d1fd2358a8bcd3c312
해시 탐색(Hash Search)이란? 👆

SHA-256의 활용 분야

SHA-256은 보안성이 뛰어나 다양한 분야에서 사용됩니다.

  • 비밀번호 해싱: 사용자의 비밀번호를 직접 저장하는 대신 SHA-256을 이용해 안전한 해시 값으로 저장합니다.

  • 디지털 서명 및 인증서: 문서나 파일의 무결성을 보장하기 위해 사용됩니다.

  • 블록체인: 비트코인 및 여러 블록체인 시스템에서 트랜잭션 무결성을 보장하는 핵심 기술입니다.

  • 파일 무결성 검사: 다운로드한 파일이 변조되지 않았는지 확인하는 용도로 사용됩니다.

  • 전자 투표 시스템: 데이터 변조 방지를 위해 전자 투표 결과를 SHA-256을 이용해 보관합니다.

RDDoS (Reflected Distributed Denial of Service) 공격이란? 👆

결론

SHA-256은 현재 가장 강력하고 안전한 해시 함수 중 하나로, 다양한 보안 시스템에서 표준으로 사용되고 있습니다. MD5와 SHA-1보다 높은 보안성을 제공하며, 암호화, 데이터 보호 및 무결성 보장 등의 분야에서 필수적인 요소로 자리 잡고 있습니다.

앞으로 양자 컴퓨터의 등장에 따라 SHA-256의 안전성이 위협받을 가능성이 있지만, 현재까지는 가장 신뢰할 수 있는 해시 알고리즘 중 하나로 인정받고 있습니다.

SYN Flooding 공격이란?

 

CSMA/CA 패킷 충돌을 피하는 무선 통신 기술 👆
0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] SHA(Secure Hash Algorithm) – 안전한 해시 알고리즘 […]

trackback

[…] SHA(Secure Hash Algorithm) – 안전한 해시 알고리즘 […]