Scrypt

이정훈·2024년 7월 2일
0

웹 보안

목록 보기
4/11

Scrypt란?

암호학에서 scrypt는 패스워드 기반 키 도출 해싱 함수입니다.
2009년에 Colin Percival이 만들었는데 주된 용도는 무차별 대입 공격을 어렵게 만드는 것입니다.
이는 Scrypt가 메모리 및 CPU 자원을 많이 소비하도록 설계가 되어 있어 가능합니다.

Scrypt 작동 방식

scrypt의 큰 메모리 요구 사항은 알고리즘의 일부로 생성되는 큰 벡터의 의사 난수 비트 문자열에서 비롯됩니다. 이 벡터가 생성된 후, 벡터의 요소들은 의사 난수 순서로 접근되어 결합하여 도출된 키를 생성합니다. 기본적인 구현 방식에서는 이 벡터 전체를 RAM에 저장해야 필요할 때마다 접근할 수 있습니다.

벡터의 요소들이 알고리즘적으로 생성되기 때문에, 각 요소는 필요할 때마다 생성될 수 있으며, 메모리에는 한 번에 하나의 요소만 저장하여 메모리 요구 사항을 크게 줄일 수 있습니다. 그러나 각 요소의 생성은 계산적으로 비용이 많이 들도록 설계되어 있으며, 요소들은 함수 실행 동안 여러 번 접근되는 것이 기대됩니다. 따라서 메모리 요구 사항을 없애기 위해 속도에서 상당한 트레이드 오프가 발생합니다.

이러한 시간-메모리 트레이드 오프는 컴퓨터 알고리즘에서 종종 존재합니다: 속도는 더 많은 메모리를 사용함으로써 증가될 수 있으며, 메모리 요구 사항은 더 많은 연산을 수행하고 더 오랜 시간이 걸리도록 하여 감소될 수 있습니다. scrypt의 아이디어는 이러한 트레이드 오프를 어느 방향으로든 비용이 많이 들도록 만드는 것입니다. 따라서 공격자는 많은 자원을 필요로 하지 않는 구현을 사용할 수 있지만(따라서 제한된 비용으로 대규모 병렬 처리가 가능), 이 구현은 매우 느리게 작동합니다. 아니면 빠르게 작동하지만 메모리 요구 사항이 매우 커서 병렬화 비용이 증가하는 구현을 사용할 수 있습니다.

Scrypt가 적용되는 곳

Scrypt는 여러 암호화폐에서 작업 증명 알고리즘으로 사용되고 있습니다.

profile
기록으로 흔적을 남깁니다.

0개의 댓글

관련 채용 정보