본문 바로가기
개발일기

[암호학] SHA-256은 안전하지 않다.

by Nhahan 2024. 2. 14.

비트코인 채굴은 SHA-256 hash를 깨는 과정이다. SHA-256 hash를 깨면 보상으로 비트코인을 얻게 된다.

비트코인 채굴 초창기에는 난이도가 낮아 일반적인 그래픽 카드로도 충분히 채굴이 가능했다.

그러나 점점 비트코인 채굴 난이도가 올라가고 일반적인 그래픽 카드로는 채산성이 나오지 않게 되었고, 비트코인 채굴 특화 용도의 주문제작 반도체(ASIC, FPGA)주문제작 반도체를 이용해야 채산성이 나오게 되기에 이르렀다. 이러한 주문제작 반도체를 이용하면 일반적인 그래픽 카드보다 10만배 이상의 속도로 비트코인 채굴이 가능했고, 이는 곧 SHA-256의 보안 취약화를 불러왔다.

 

 

아무튼 요점은 하드웨어의 발전으로 노가다로 SHA-256을 파훼하기 쉬워졌단 것이다.

 

SHA-256 대신

argon2 (blake2를 반복한 hash)

Balloon (sha-3을 여러번)

혹은 귀찮으면 그냥 가장 대중적인 bcrypt를 사용하면 보안적으로 더 안전해진다. 너무 쉬운 방법이잖아..?

 

---

 

PS1

 

SHA-3은 SHA-1, SHA-2와 아예 다른 알고리즘이다. 예를 들어 SHA-256과 SHA-512는 그냥 길이만 다른 동일한 알고리즘이다.

그러나 SHA-2를 대체할 후속 공식 표준 해시알고리즘으로 채택되어서 SHA-3이라고 이름 붙여진 것이다.

 

---

 

PS2

 

RSA와 비슷한 보안 수준을 제공하면서도 짧은 키(데이터 용량 측면에서 이득)를 사용하는 타원곡선 암호(Elliptic curve cryptography, ECC)가 있다. 그러나 인지도 문제(?)로 인해 RSA에 비해 널리 사용되고 있지는 못하고 있다.

 

---

 

PS3

 

HS256과 SHA-256은 다른 것이다

따라서 JWT를 생성할 때 HMAC에 SHA-256을 끼얹은 HS256을 많이 사용하는데, 이는 그대로 사용해도 크게 무리가 없다.

'개발일기' 카테고리의 다른 글

[AWS] ACM 갑자기 안됐던 이유 / 도메인 인증 기간  (0) 2024.05.15
객체지향  (0) 2024.02.14
어쩌면 파괴왕  (0) 2024.01.28
DynamoDB는 어렵다.  (0) 2023.12.24
...  (1) 2023.11.13

댓글