본문 바로가기
개인 공부/TIL

TIL : Random VS SecureRandom (19)

by 희조당 2022. 12. 20.
728x90

🛠️ Random과 SecureRandom

난수 생성을 위해서 보통 Random을 사용하는데, SecureRandom을 권장하더라! 왜 그럴까?

🤔 Random

우선 Random은 난수를 만들기 위해 사용하는데, 정말 무작위 숫자를 만들지 않고 의사 난수를 생성한다.

의사 난수란? 무작위의 숫자처럼 보이는 규칙적으로 만들어진 숫자이다.

 

Random을 조금 써본 사람이라면 같은 seed라면 같은 값이 나오는 것을 알고 있을 것이다!

이게 바로 의사 난수라서 그렇다.

😮 SecureRandom

이름에서부터 느껴지듯이 보안성이 더 좋을 것만 같다. 그렇다면 정확하게 어떤 점이 다를까?

1️⃣ 크기 

Random은 48 비트까지 지원하지만 SecureRandom은 128 비트까지 지원한다!

같은 값이 나올 확률이 훨씬 SecureRandom이 낮고 안정성이 높다.

2️⃣ 시드

Random은 시드로 보통 시스템 시간으로 설정한다.

그렇다면 해커가 시드로 설정된 시스템 시간을 알게 된다면 똑같은 값을 만들 수 있다는 말이다.

반면에 SecureRandom은 OS의 임의의 데이터를 시드로 설정한다.

3️⃣ 난수 생성

Random은 Linear Congruential Generator를 사용하여 의사 난수를 생성한다.

하지만 SecureRandom은 SHA1을 사용해서 진짜 난수를 생성한다. (자세한 방법은 생략ㅋ)

 

따라서 보안에 민감한 것에는 이름부터 안전해 보이는 SecureRandom을 사용하자!! 😋😋 

 


-Reference

https://kdhyo98.tistory.com/48

https://stackoverflow.com/questions/295628/securerandom-init-once-or-every-time-it-is-needed

 

😋 지극히 개인적인 블로그지만 훈수와 조언은 제 성장에 도움이 됩니다 😋 

 

댓글