나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2024-05-26 13:57:09

SHA



파일:나무위키+유도.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>
컴퓨터 과학 & 공학
Computer Science & Engineering
||
{{{#!wiki style="margin:0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#0066DC>기반 학문수학 (해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학 (환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학 (형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학
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은 더 이상 찾아보기 힘들게 되었다. 여담으로 지원 종료된 운영체제에서 프로그램이 정상적으로 동작하지 않는 원인이 해당 해시 지원 문제 때문인 경우가 있다. 윈도우 기준으로 이러한 문제를 꼼수 없이 해결 가능한 운영체제의 마지노선은 연장 지원 기간 막바지에 관련 업데이트를 배포한 Windows 7.

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

3.2. SHA-2

3.3. SHA-3

4. 지원하는 소프트웨어


[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 지원 패치를 배포하였다.