Proven by Intelligence
보이지 않는 안전을 인텔리전스로 증명하다.
기술 인사이트를 만나보세요.

3. SHA : Secure Hash Algorithm
SHA는 Secure Hash Algorithm의 약자입니다.
우리말로 표현하면 “안전한 해시 알고리즘”입니다.
대표적으로 다음과 같은 종류가 있습니다.
SHA-1
SHA-256
SHA-384
SHA-512
이 중 SHA-1은 오래된 방식이고 현재는 보안상 사용이 권장되지 않습니다.
4. Hash란 무엇인가?
Hash는 데이터를 고정된 길이의 값으로 변환하는 기술입니다.
예를 들어 다음과 같은 문장이 있다고 하자.
Hello
이 값을 SHA-256으로 계산하면 긴 문자열 형태의 Hash 값이 나온다.
Hello
↓
SHA-256
↓
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
중요한 특징은 같은 데이터를 넣으면 항상 같은 Hash 값이 나온다는 것입니다.
하지만 데이터가 조금이라도 바뀌면 Hash 값은 완전히 달라집니다.
예를 들어 다음 두 문장은 사람이 보기에는 거의 비슷합니다.
Hello
hello
하지만 Hash 값은 완전히 달라집니다.
이 특징 때문에 Hash는 데이터가 위변조되었는지 확인하는 데 사용됩니다.
5. Hash는 암호화인가?
Hash는 흔히 단방향 암호화라고 설명되지만, 엄밀히 말하면 복호화가 불가능한 단방향 변환 함수에 가깝습니다.
일반적인 암호화는 다음 구조를 가집니다.
평문
↓
암호화
↓
암호문
암호문
↓
복호화
↓
평문
하지만 Hash는 다릅니다.
원본 데이터
↓
SHA-256
↓
Hash 값
Hash 값에서 원본 데이터를 다시 복원하는 것은 불가능해야 합니다.
즉 다음은 가능합니다.
1234
↓
SHA-256
↓
03ac674216f3...
하지만 다음은 불가능해야 합니다.
03ac674216f3...
↓
???
↓
1234
이것이 Hash의 단방향성입니다.
6. Hash의 쉬운 비유
Hash는 사람의 지문과 비슷합니다.
사람마다 지문이 다르듯이 데이터마다 Hash 값이 다릅니다.
파일 하나를 다운로드했다고 가정해보면..
제공자가 원본 파일의 Hash 값을 함께 공개합니다.
원본 파일 Hash =
ABC123
사용자가 파일을 다운로드한 뒤 다시 Hash를 계산합니다.
다운로드 파일 Hash =
ABC123
값이 같다면 파일이 변조되지 않았다고 볼 수 있습니다.
반대로 다음처럼 값이 다르면 문제가 있는 것입니다.
원본 파일 Hash =
ABC123
다운로드 파일 Hash =
XYZ999
이 경우 파일이 중간에서 변경되었거나 손상되었을 가능성이 있습니다.
TLS에서도 Hash는 통신 과정에서 데이터가 위변조되지 않았는지 검증하는 데 사용됩니다.
