← 질문 목록
#362깊이 0

무작위 값은 어디서 만들어야 안전한가?

인프라 · 보안심화암호화인증·인가

운영체제가 모아 둔 예측하기 어려운 원천에서 만든다. 시각이나 순번을 씨앗으로 쓰면 그 수열이 재현된다.

  1. 시각만으로 씨앗을 정한다
  2. 그다음은 만든 때를 아는 공격자에게 씨앗 후보가 몇 초 폭으로 좁아진다입니다. 그다음

    만든 때를 아는 공격자에게 씨앗 후보가 몇 초 폭으로 좁아진다
  3. 그다음은 그 범위를 전부 돌려 본다입니다. 그다음

    그 범위를 전부 돌려 본다
  4. 그다음은 같은 수열을 재현해 토큰을 맞힌다입니다. 그다음

    같은 수열을 재현해 토큰을 맞힌다

씨앗에 예측하기 어려운 값이 섞이면 이 재현이 안 된다. 위험한 것은 씨앗이 시각이나 순번뿐이고 만드는 방법도 뻔할 때다.

주의

흔히 쓰는 난수 함수는 빠르고 고르게 퍼지도록 만들어졌지, 맞히기 어렵게 만들어지지 않았다. 몇 개만 보면 다음 값을 계산할 수 있는 것도 있다.

그래서 언어마다 보안용 난수가 따로 있다. 세션 토큰과 비밀번호 재설정 링크처럼 맞히면 안 되는 값은 이쪽으로 만든다.

길이도 함께 본다. 원천이 좋아도 짧으면 전부 시도해 볼 수 있다. 맞히면 안 되는 토큰은 충분히 길게 잡는다.

순번이나 사용자 번호를 그대로 쓰면 다음 값을 그냥 셀 수 있다. 주소에 순번이 드러나면 남의 자원을 순서대로 훑을 수 있다.

보안 값에는 예측하기 어려운 난수가 필요하다. 화면 배경을 고를 난수와 세션 토큰을 만들 난수는 요구가 다르다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

무작위 값은 어디서 만들어야 안전한가?