SHA는 안전한 해시 알고리즘을 뜻하는 Secure Hash Algorithm의 줄임말이야 !

해시 함수는 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매하는 함수를 뜻해, 간단하게 말해서 이런거야.

해쉬 함수, 위키피디아, 2021-01-20, https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98

 

 이 사진에서 보이듯 Keys들이 보이지? John Smith, Lisa Smith, Sam Doe 글자 수가 제멋대로(가변)인 이름(Keys)들이 해시 함수를 거치고 나면, 고정되고, 유일한 숫자(해시 값)으로 반환되게 돼.

 

 이 알고리즘의 장점은 무슨 값들을 해시 함수에 넣든, 고정된 길이에 중복되지 않는 값들을 가져올 수 있다는 점이야. 만약 네가 비밀번호를 키 값을 해시 값으로 바꾸어 가지고 있다면, 다른 그 누구도 너의 원래 비밀번호를 알 수 없어. 단 하나의 비트 값만 달라져도, 해시 값의 대부분이 바뀔 수 있거든. 이러한 비밀스러움 덕분에 비밀 번호가 맞는 지 확인할 때와 같이 보안, 로그인 등에 주로 사용돼.

 

 물론 뚫릴 가능성도 없지는 않아. 복권 1등에 당첨되는 확률이 우스울 정도로 아주 아주 아주 작은 확률로 말이야. 지금 소개할 SHA1은 그래. 이 SHA1은 다른 SHA들보다 유명해서, TLS, SSL, PGP, SSH, IPSec과 같이 많은 보안 프로토콜과 프로그램에서 사용되었어. 하지만 이 친구는 지금도 보기 드물고, 앞으로도 보기 드물꺼야. 해시 충돌이 발견되어, 사라져가고 있어. 해시 충돌이란 각 각의 키 값에서 동일한 해시 값이 나오는 것을 말해 .

 

해쉬 함수, 위키피디아, 2021-01-20, https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98

 

 이러한 문제 덕분에, SHA2인 SHA-256/224, SHA-512/384와 같이. 이러한 해시 충돌을 최대한 방지하기 위한 해시 알고리즘들이 나왔어. 여기서 256/224, 512/384의 차이는 해시 길이의 차이인데, SHA-256보다 SHA-512를 비교하면 SHA-512가 더 안전해. 왜냐하면 해시 값의 길이가 길수록 더욱 안전해지거든, SHA-256의 경우의 수는 2^256인데 반해, SHA-512는 2^512만큼 경우의 수를 가지고 있어. 

 

+ Recent posts