유틸리티 소개

콘텐츠 어드레서블 스토리지 IPFS와 깃이 해시를 주소로 쓰는 이유

IPFS 주소가 이상하게 길고 복잡한 문자열인 이유를 아시나요? 그게 바로 콘텐츠의 해시값이기 때문입니다.

콘텐츠 어드레서블이란

일반적인 주소는 "어디에 있는지"(위치)를 가리킵니다. 반면 콘텐츠 어드레서블은 "무엇인지"(내용)를 가리킵니다. 파일 내용을 해시한 값이 곧 주소가 되는 거죠.

Git의 활용

Git에서 커밋, 트리, 블롭은 모두 SHA-1 해시로 식별됩니다. 파일 내용이 같으면 해시도 같아서, 중복 저장을 피할 수 있죠. 해시 생성기로 파일 내용의 해시를 만들어보면 Git이 내부적으로 하는 일을 이해할 수 있습니다.

IPFS의 활용

IPFS에서는 같은 파일을 여러 노드가 갖고 있어도 해시가 같으니 아무 노드에서나 받으면 됩니다. 위치 독립적인 분산 저장의 핵심 원리입니다.

해시와 보안의 관계

해시는 보안에서 중요한 역할을 하지만, 만능이 아닙니다. 해시 생성기로 만든 해시값은 원본 데이터를 숨기는 데는 좋지만, 짧거나 예측 가능한 입력은 무차별 대입으로 찾아낼 수 있습니다. 예를 들어 4자리 PIN을 해시해도 10,000가지 경우의 수만 시도하면 원본을 찾을 수 있죠. 그래서 비밀번호 해싱에는 솔트(salt)를 추가하고, bcrypt처럼 의도적으로 느린 알고리즘을 씁니다.

레인보우 테이블 공격

미리 계산해둔 해시-원본 쌍을 이용한 공격입니다. 솔트를 사용하면 각 사용자마다 다른 해시가 생성되어 이 공격을 무력화할 수 있습니다. 요즘 프레임워크들은 솔트를 자동으로 처리해주지만, 직접 구현할 때는 반드시 솔트를 포함시켜야 합니다.

결론적으로, 해시 함수는 현대 컴퓨팅의 핵심 기술입니다. 보안, 데이터 관리, 성능 최적화 등 다양한 분야에서 활용되며, 올바르게 사용하면 시스템의 신뢰성을 크게 높일 수 있습니다.