Skip to content

Secure Hash Algorithms

SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다.

SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.

SHA-0과 SHA-1에 대한 공격은 이미 발견되었다. SHA-2에 대한 공격은 아직 발견되지 않았으나, 전문가들은 SHA-2 함수들이 SHA-1과 비슷한 방법을 사용하기 때문에 공격이 발견될 가능성이 있다고 지적한다. 미국 표준 기술 연구소(NIST)는 SHA-2로 불리는 새로운 암호화 해시 알고리즘에 대한 후보를 공모하였다.

명령행

openssl 명령행 또는 sha256sum를 사용하면 된다.

$ echo -n "0000" | openssl sha256
9af15b336e6a9619928537df30b2e6a2376569fcf9d7e773eccede65606529a0

WARNING

명령행에서 echo를 사용할 경우 개행이 강제로 추가되므로 -n 옵션을 꼭 추가해야 한다.

JavaScript 해싱 속도 비교 MD5 vs SHA-256

  1. MD5는 SHA-256보다 느리며, 보안성이 낮다.
    • MD5는 과거에 사용되던 해시 알고리즘으로, 현재는 암호학적으로 안전하지 않다.
    • SHA-256은 256비트 해시 출력을 제공하며, 더 높은 보안성을 제공한다.
    • 테스트 결과 SHA-256은 MD5보다 처리 속도에서도 더 우수하다.
  2. 테스트는 최신 자바스크립트 런타임을 사용하여 수행되었다.
    • Bun 1.31과 Node.js 23 버전을 사용하여 ARM과 Intel 시스템에서 테스트가 진행되었다.
    • Apple M2, Intel Ice Lake, Amazon Graviton 4 시스템에서의 성능이 비교되었다.
  3. SHA-256은 현대 프로세서에서 더 빠른 성능을 보인다.
    • MD5는 Apple M2 시스템에서 0.7 GB/s, SHA-256은 2.6 GB/s의 처리 속도를 기록했다.
    • Intel 및 ARM 기반 시스템에서도 SHA-256이 MD5보다 높은 성능을 보였다.
    • 현대 프로세서는 SHA-256을 가속화하기 위한 암호화 확장을 제공한다.
  4. MD5는 실질적으로 사용하지 않는 것이 권장된다.
    • 보안 문제가 있는 MD5를 대체할 강력한 대안으로 SHA-256을 사용하는 것이 더 안전하다.
    • SHA-256은 안전성과 성능을 모두 제공하며, 암호화 및 데이터 무결성을 보장한다.

See also

Favorite site