SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다.
해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다.
현재 비트코인들의 블록체인 알고리즘 전반에 걸쳐 사용되고있는 SHA(Secure Hash Algorithm)은 미국 표준 기술 연구소(NIST)에 의해 공표된 표준 해시 알고리즘으로 현재 SHA-1 과 SHA-2계열이 많이 쓰이고 있는데요 SHA-0이 가장 먼저 나온 알고리즘이고 SHA-3이 가장 나중에 나온 알고리즘입니다. SHA-2는 세부적으로 SHA-224, SHA-256, SHA-384, SHA-512로 나뉘며 그중에 SHA-256이 상당수 블록체인에서 가장 많이 채택하여 사용하고 있습니다.
이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다.
SHA-256은 256비트로 구성되어 64자리 문자열을 반환하며 이전 시간에 다루었던 MD5는 32자리 문자열을 반환한다는 점과 비교했을 때 해시 값이 2배나 길다는 특징을 가집니다. 단순히 산술적으로 계산했을 때 256비트는 2의 256 제곱만큼 경우의 수를 만들 수 있고 이는 개인용 컴퓨터로 무차별 대입(Brute-Forcing)을 수행해 해시 충돌 사례를 찾으려고 할 때 억겁의 시간이 소요될 정도로 큰 숫자이므로 충돌로부터 비교적 안전하다고 볼 수 있습니다.
SHA-1은 구글 클라우드 서버를 기반으로 수행된 연구 사례에서 약 900경의 해시 연산을 통해 충돌이 발견된 적이 있는데 이러한 측면에서 SHA-1과 근본적으로 크게 다르지 않은 SHA-256이 언제까지나 안전할 것이라고 말하기는 어렵습니다. 하지만 사실상 해시 취약점을 대상으로 하는 양자 컴퓨터가 출시되지 않는 이상 최소 근 10년가량은 안전할 것이라고 판단합니다. 꾸준한 컴퓨터 연산 속도의 향상을 고려해도 SHA-256이 제공하는 해시 알고리즘은 산술적으로 매우 강력하기 때문입니다. 혹여 미래에 SHA-256의 취약점이 발견되더라도 블록체인에는 하드포크(Hard Fork)와 같은 알고리즘 개선 기법들이 존재합니다. 따라서 블록체인의 기반이 되는 해시 알고리즘은 현재로서는 안전하다는 것이 전문가들의 공통된 견해입니다.