최근 수정 시각 : 2023-12-28 21:09:09

SHA

SHA-1에서 넘어옴


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
워크래프트 시리즈에 등장하는 적에 대한 내용은 샤(월드 오브 워크래프트) 문서
번 문단을
부분을
, 중국 상하이 소재의 훙차오 공항의 IATA 코드에 대한 내용은 상하이 훙차오 국제공항 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
'''이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"'''
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#aa3366> 이론
기본 대상 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 기계 · 람다 대수 · 처치-튜링 명제 · 바쁜 비버
오토마타 이론 FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임
계산 복잡도 이론 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법)
정보이론 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어이론 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍) · 메타 프로그래밍 · 형식언어 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^벡터^ · 리스트^연결 리스트^ · 셋(set)^레드-블랙 트리, B-트리^ · 우선순위 큐^, 피보나치 힙^
수학적 최적화 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
볼록 최적화 내부점 방법 · 경사하강법
선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호
대칭키 암호화 방식 블록 암호 알고리즘(AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
공개키 암호화 방식 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}



||<tablealign=center><tablewidth=100%><tablebordercolor=#0066DC><tablebgcolor=#fff,#191919> ||
{{{#!wiki style="margin:0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#3CC>기반 학문수학 (해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학 (환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학 (형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학
SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술기계어 · 어셈블리어 · C(C++) · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍(디자인 패턴) · 해킹 · ROT13 · OTP · IoT · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화
연구 · 기타논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 디자인 패턴 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식)}}}}}}}}}
Secure Hash Algorithm
3f57b4255732fbd8df203466ef5cd5f4c980e545
- https://namu.wiki/w/SHA의 SHA-1값
a0d20951336a0e6a39da2682efff30ab31012e88ea606aea6fdae9b502012fe5
- https://namu.wiki/w/SHA의 SHA-2중 SHA-256값
1e3d31e819d5c890c6d9e48498ba2945f759be742699ad8e70f4b536059e6f38b472f1eea9c0d73aae792371fe38481401b7bef4e18b4a9a1d86056138dcfda2
- https://namu.wiki/w/SHA의 SHA-3값 [1]

1. 개요2. 역사
2.1. SHA-0와 SHA-12.2. SHA-22.3. SHA-3
3. 활용한 소프트웨어
3.1. SHA-13.2. SHA-23.3. SHA-3
4. 지원하는 소프트웨어

1. 개요

1993년부터 미국 NSA가 제작하고 미국 국립표준기술연구소(NIST)에서 표준으로 채택한 암호학적 해시 함수이다.

참고로, SHA는 원본 값이 단, 한 글자, 단 1비트만 바뀌어도 값이 천차만별로 바뀔 수 있다. 보통 이를 가리켜 눈사태 효과라 부른다. [2]

2. 역사

2.1. SHA-0와 SHA-1

1993년 SHA의 표준으로 정의되어 발표되었으며 160 비트의 해시값을 사용한다. 그러나 2년 만에 바로 취약점이 발견되어 이를 개선한 SHA-1이 새로 발표되었고, 이는 널리 사용되었다. SHA-1 역시 160 비트 해시값을 사용한다. 처음 발표된 SHA는 편의상 SHA-0로 표기하여 구분한다.

그러나 2005년도에 한 중국의 대학 연구팀에 의해 해독의 가능성이 제시되었으며, 결국 2008년에 해시 충돌이 발생했으며[3] 2015년에는 주요 브라우저에서도 지원 중단을 예고하는 등 퇴출 수속을 밟고 있다. 그리고 2017년 SHA-1 전체의 해시 충돌이 구글 프로젝트 제로 팀에 의해 밝혀졌다. 구글은 아예 충돌하는 키를 완전히 공개할 예정으로, 구글 정책상 90일 뒤인 5월 말쯤 어떤 방법을 적용했는지 공개가 되면 SHA-1은 그냥 끔살될 예정. 그 이전에 다른 알고리즘으로 안 갈아타면 그대로 망하게 만들겠다는 반협박 수준의 강력한 보안 경고이다. 관련 기사

결국 구글 크롬 브라우저는 2017년 1월에 출시한 56버전부터는 SHA-1 인증서를 사용하는 사이트에 접속시 안전하지 않은 사이트라며 경고 메시지를 띄우도록 했고, 2019년부터는 SHA-1 인증서를 사용하는 사이트는 접속하지 못하도록 차단했다. 파이어폭스 등 다른 브라우저도 2017년부터 SHA-1 인증서를 사용하는 사이트에 접속시 경고 메시지를 띄우는 등의 업데이트를 하며, 2015년 기준 90%이상의 사이트가 사용하던 SHA-1은 더 이상 찾아보기 힘들게 되었다.

2.2. SHA-2

SHA-1 역시 해시 충돌을 이용한 위험성이 발견되어 차세대 버전이 나왔는데, 개선된 버전이 SHA-2 로 2001년에 발표되었다. SHA-2 해시 함수는 8개의 32비트 상태를 업데이트하는 압축 함수를 기반으로 하고 해시 길이에 따라서 224, 256, 384, 512 비트를 선택해서 사용할 수 있으며, 당연히 해시 길이가 길 수록 더 안전하다. 편의상 해시 길이에 따라 SHA-224, SHA-256, SHA-384, SHA-512 등으로 부른다. 일반적으로 SHA-256을 사용한다.

해시 길이가 길어졌기에 그만큼 안전하긴 하지만, 알고리즘의 기본 동작이 SHA-1과 큰 차이가 없기 때문에 완전히 안전하다(=공격 받을 가능성이 없다.)고 장담하긴 어렵다. 해시 함수 특성상 기본 동작(round)이 많아질수록 안정성이 높아져 현재까지 SHA-2에 대해 알려진 충돌 등은 없지만, 만약을 위해 SHA-1하고 기본적인 원리 자체가 아예 다른 SHA-3이 개발되었다.

2.3. SHA-3

2012년 10월에 더욱더 안정성이 높은 방식으로 설계된 SHA-3이 정식 발표되었다.

SHA-2 도 위험성 문제가 제기되자, 충돌 가능성을 피하기 위해서 SHA-1과 2와 전혀 다른 알고리즘인 SHA-3의 개발이 진행되었다. 정확하게는 개발이라기보단, 여러 보안 전문가들과 컴덕후들이 만들어낸 해시 알고리즘 중 몇 개를 추려서 가장 견고한 것에 SHA-3 딱지를 붙이는 공모전에 가깝다.[4] 고려대학교에서도 아리랑이라는 이름으로 출품했지만 탈락했다. 3차 후보까지 남은 건 BLAKE, Grøstl, JH, Keccak, Skein의 5개 알고리즘이다.

2012년 10월 2일자로 Keccak이 SHA-3로 확정되었다. #

3. 활용한 소프트웨어

3.1. SHA-1

  • 비트토렌트는 파일을 BASE32로 바꾼 SHA-1을 해시로 사용한다.
  • 깃(Git)은 파일이나 커밋 등 모든 오브젝트를 SHA-1으로 해시한 식별자를 통해 관리한다. SHA-1을 깬 구글이 "깃(Git) 시스템도 불안하다"고 하였으나 깃을 만든 리누스 토발즈는 "깃은 데이터를 해시하기만 하는 게 아니라, 거기에 타입과 길이 필드를 측량한다"며 동의하지 않았다. #

3.2. SHA-2

  • 대한민국 인터넷뱅킹은 SHA-256을 사용하고 있다.
  • 비트코인은 작업 증명에 SHA-256을 사용한다.
  • TrueCrypt는 키 유도에 SHA-512를 사용할 수 있다. 여러 옵션 중 하나이다.
  • Windows 업데이트는 파일의 디지털 서명에 SHA-256을 사용한다. 2020년 7월까지는 SHA-1도 병용했으나, 이후 서버에 등록된 모든 파일에서 SHA-1 디지털 서명을 제거하였으며, SHA-2를 지원하지 않는 구형 Windows에 대한 업데이트 파일은 아예 서버에서 삭제해버렸다.[5]

3.3. SHA-3

  • 이더리움 - 이더리움은 Keccak256을 사용한다. 다만, Keccak이 SHA-3로 제안될 때 일부 변경된 부분이 있기 때문에 엄밀하게 말하면 이더리움이 SHA-3 표준을 따른다는 표현은 약간 오류가 있다.

4. 지원하는 소프트웨어

  • OpenSSL - SHA1, SHA2, SHA3 지원
  • Libgcrypt

[1] 이것은 엄밀히 말해서 Keccak[c=2d]의 512-bit 해시값이다. Keccak 알고리즘은 이전의 SHA 알고리즘과는 달리 출력 길이가 제한되어 있지 않고, 알고리즘 자체에도 변경 가능한 파라미터가 있기에 어떤 파라미터를 쓰느냐에 따라 얼마든지 결과값이 달라질 수 있다.[2] 눈사태 효과가 없거나 적다면 보안에 치명적이기에, 거의 모든 암호화 알고리즘에서 기본적으로 포함되어 있다. SHA 만의 특성은 아니다.[3] 물론 이건 알려진 것이다. 모든 암호화 알고리즘이 다 그렇지만 암호학의 지하에선 더 빨리 뚫렸을지도 모른다.[4] 물론 이것만 그런건 아니고, 전세계적으로 제일 대표적인 양방향 암호화 표준인 AESNIST의 공모전에서 Rijndael(라인달) 알고리즘이 선정된 것이다. 이런 식으로 암호화 표준은 제시된 여러 알고리즘 중 제일 강력한 하나를 골라서 제정되는 경우가 많다.[5] 정확히는 Windows 2000, Windows XP, Windows Server 2003, Windows Server 2003 R2, Windows Vista이다. Windows 9x 계열과 Windows NT 4.0에 대한 업데이트 서버는 2012년에 이미 중단하였으며, Windows Vista를 기반으로 한 Windows Server 2008은 별도의 SHA-2 지원 패치를 배포하였다.