난수 발생기 만들 때 특히 보안에 신경 써야 한다.
실제로 외국의 어떤 도박 사이트에서 텍사스 홀덤 포커 게임 프로그램이 델파이로 짜진 게 있었는데
델파이에서 시드 값을 초기화하는 Randomize 구문이 자정으로부터 경과한 밀리세컨드 수 가지고 시드를 초기화한단 말야?
포커에서 트럼프 섞는 경우는 수학적으로 56! 이지만 Randomize 구문에서는 시드 값을 32비트를 사용하니
경우의 수가 2^32로 확 줄어들고 자정으로부터 경과한 밀리세컨드 수를 시드로 쓴다는 게 알려지면
하루 동안의 밀리세컨드 수 = 24 * 3600 * 1000 = 86,400,000 경우 밖에 안 나온다는 걸 알 수 있게 됨.
그래서 저 모든 경우에 대해서 나오는 패를 다 미리 계산해 놓은 다음 화면에 나오는 패를 미리 구해 놓은 패들이랑
비교해서 한 5 패만 까면 그 다음부터 모든 패의 순서를 다 알게 되었던 사례가 있음. 실제로 그걸로 해킹 프로그램도 만들어 졌고.
이 경우는 돈이 왔다갔다 하는 도박 프로그램인 만큼 더 피해가 막심했지.
댓글 0