Cryptology Academy · 강의

SHA-1 및 SHA-2 계열 이해하기

SHA-1의 약점과 SHA-256 및 SHA-512의 차이를 이해합니다.

레슨 3/413개 단계

SHA-1 및 SHA-2 계열 이해하기은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

SHA-1과 SHA-2는 NSA가 설계한 MD5의 후속 해시 함수입니다. SHA-1은 현재 퇴출되었습니다. SHA-256과 SHA-512는 대부분의 애플리케이션에서 여전히 업계 표준으로 사용됩니다.

SHA-1 개요

SHA-1은 160비트(20바이트) 해시를 생성합니다. NSA가 설계했으며 1995년에 공개되었습니다. 예: SHA1('hello') = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

SHA-1 구조

SHA-1은 80개의 라운드를 각각 20개인 4개의 단계로 나누어 사용합니다. 각 단계에서는 서로 다른 논리 함수(Ch, Parity, Maj)를 사용합니다. XOR과 회전을 사용해 입력 워드 16개를 80개로 확장합니다.

SHA-1 충돌: SHAttered(2017)

2017년 Google과 CWI Amsterdam은 실용적으로 구현 가능한 최초의 SHA-1 충돌인 SHAttered 공격을 만들어 냈습니다. 내용은 다르지만 SHA-1 해시는 동일한 PDF 두 개였습니다. 비용은 약 6500 GPU 연산년이었습니다.

SHA-2 계열

SHA-2에는 SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256이 포함됩니다. 모두 Merkle-Damgård 구조를 사용합니다. SHA-256이 가장 널리 사용되는 변형입니다.

SHA-256 구조

SHA-256은 512비트 블록에 64개의 라운드를 적용합니다. 각각 32비트인 상태 워드 8개(a,b,c,d,e,f,g,h)를 유지합니다. 각 라운드에서는 Ch, Maj, Σ0, Σ1 함수를 사용해 입력 워드를 혼합합니다.

Python에서의 SHA-256

import hashlib msg = b'hello' digest = hashlib.sha256(msg).hexdigest() print(digest) # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

SHA-512와 SHA-256 비교

SHA-512는 64비트 워드로 80개의 라운드를 수행해 512비트를 생성합니다. 64비트 하드웨어에서는 더 빠르지만 더 큰 다이제스트를 생성합니다. 256비트 보안 수준이 필요할 때 SHA-512를 사용하십시오.

SHA-3(Keccak)

SHA-3는 대안적인 설계로 2015년에 표준화되었습니다. Merkle-Damgård 대신 스펀지 구조를 사용하므로 길이 확장 공격에 영향을 받지 않습니다.

SHA-2에 대한 길이 확장 공격

SHA-256(secret || message)은 취약합니다. Hash(message)를 알고 있는 공격자는 Hash(message || padding || extra)를 계산할 수 있습니다. 이것이 HMAC이 이중 해시 구조를 사용하는 이유입니다.

무엇을 사용해야 할까요

SHA-256: 범용 용도, TLS, 인증서, HMAC. SHA-512: 더 높은 보안 여유가 필요한 애플리케이션. SHA-3: 길이 확장을 걱정할 필요가 없는 새로운 프로토콜. 새로운 설계에는 SHA-1이나 MD5를 절대 사용하지 마십시오.

간단한 확인

SHA-3는 어떤 구조를 사용하기 때문에 길이 확장 공격의 영향을 받지 않습니까?

복습

SHA 계열의 발전 과정을 이해하셨습니다. 다음으로 체크섬, HMAC, Git의 SHA 사용 등 해시의 실용적인 활용을 살펴보겠습니다.
무료로 시작

AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
67
레슨
261

자주 묻는 질문

“SHA-1 및 SHA-2 계열 이해하기” 강의는 무료인가요?

네 — “SHA-1 및 SHA-2 계열 이해하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“SHA-1 및 SHA-2 계열 이해하기”에서 뭘 배우나요?

SHA-1의 약점과 SHA-256 및 SHA-512의 차이를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“SHA-1 및 SHA-2 계열 이해하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 좋은 해시 함수의 조건
  2. MD5: 역사, 용도 및 폐기된 이유
  3. SHA-1 및 SHA-2 계열 이해하기
  4. 해시 활용: 체크섬, HMAC 및 Git
← Cryptology Academy(으)로 돌아가기