▲neo 7달전 | parent | favorite | on: GN⁺: Go 1.22 버전의 보안 난수 생성 기능 강화(go.dev)Hacker News 의견 요약해보면 다음과 같음: Go 1.20에서 math/rand 패키지의 Read 함수가 deprecated 되면서, 이를 crypto/rand 대신 잘못 사용한 사례들이 발견됨. 이는 보안에 취약한 결정론적 난수 생성기를 사용하게 되는 실수로 이어짐. Go의 기본 난수 생성기를 CSPRNG(암호학적으로 안전한 의사 난수 생성기)로 바꾸는 것이 보안을 위해 더 좋은 접근임. 명시적으로 PRNG가 필요한 경우에만 선택하도록 하는 것이 바람직함. gosec이나 golangci-lint 같은 정적 분석 도구는 math/rand 사용에 대해 경고를 줌. math/rand/v2 패키지는 ChaCha8 암호를 사용하고 시스템 엔트로피로 시드되어 "안전한" 인상을 주지만, 여전히 보안에 민감한 작업에는 부적합함. 이는 crypto/rand를 사용해야 함. Go 1의 math/rand는 정확히는 additive lagged Fibonacci generator로 볼 수 있음. 새 math/rand는 최악의 경우에도 기존 비보안 난수 생성기의 절반 정도의 속도를 보이며, 대부분의 벤치마크에서는 거의 차이가 없었음. Go는 표준 라이브러리에서 안전성과 성능 사이의 적절한 균형을 잡고 있음. Java의 java.util.Random 같은 실수를 방지하는 개발자 친화적인 접근으로 평가됨. ChaCha8을 쓰는 이유와 AES-GCM 등 하드웨어 가속을 지원하는 블록 암호를 쓰지 않는 이유에 대한 궁금증이 제기됨.
Hacker News 의견
요약해보면 다음과 같음:
gosec
이나golangci-lint
같은 정적 분석 도구는math/rand
사용에 대해 경고를 줌.crypto/rand
를 사용해야 함.math/rand
는 정확히는 additive lagged Fibonacci generator로 볼 수 있음.java.util.Random
같은 실수를 방지하는 개발자 친화적인 접근으로 평가됨.