무작위 번호 취약점은 무엇입니까?

따라서 컴퓨터와 예측이 결정적이다. 컴퓨터, 그리고 자신의 진정한 난수를 생성할 수없습니다.

외부 입력의 부재에서 컴퓨터에만 사이비 - 임의의 숫자를 생성할 수있습니다.

난수 취약점을 때 프로그램은 난수를 생성하는 방법을 사용하는 중 하나가 발생합니다 :

  1. 안 무작위
  2. 예측

좋은 난수를 생성하려면, 컴퓨터가 두 가지를해야합니다 :

  1. 좋은 난수 생성 알고리즘
  2. 무작위 번호 생성 알고리즘을위한 무작위과 씨앗 unpredicatable

무작위 번호 취약점 예

다음 코드 스니펫을 고려 :

  x = 랜드 (); 

이 코드와 함께 설립되었습니다 srand 난수 나쁜 씨앗이 있기 때문에 당신이있을 때 () 호출 전에 생성된 랜드 (), 그것은 기본적으로 씨앗으로 값이 1을 사용합니다. 누가 1의 씨앗 ()과 마찬가지로 방금 당신이 쓴 같은 임의의 숫자를 얻을 것이다 랜드 통화 같은 컴파일러와 같은 기계에 할사람.

다른 코드 스니펫을 살펴 봅시다 :

  srand (시간 (0)); 
  x = 랜드 (); 

이 코드는 씨앗으로 현재 시간 ()를 호출 srand 않습니다. 그러나,이 코드가 여전히 불안 때문에 :

  1. 왜냐하면 그것은 작은 범위 내에서 예측 시스템이 시간은 아주 나쁜 씨앗이다.
  2. 그 쪽은 ANSI C 랜드 () 좋은 난수를 생성하지 않는 자체가 기능을 수행합니다.

의 제 3의 코드 스니펫을 살펴보자 :

  srandom (시간 (0)); 
  x = 무작위 (); 

이 코드는 BSD와 ()와 srandom 무작위로 사용하는 () 함수는 자신의적으로 ANSI C 전임자보다 훨씬 더 무작위 숫자를 생성합니다. 그러나,이 코드는 아직 시간이 사용하는 ()은 씨앗이 번호를 생성합니다. BSD와 리눅스 시스템에 임의의 숫자는 훨씬 더 나은 소스는 / dev / 임의의 장치입니다.

씨앗 번호와 랜덤 넘버 취약점

좋은 씨앗 번호 등 사용자의 키 입력이나 마우스의 움직임을 예측할 수없는 사건에서 왔습니다. 이러한 임의성 완벽한 소스는없습니다. Human behavior is somewhat predictable and computer hardware can buffer keyboard and mouse interrupts, reducing their randomness.

기타 수많은 난수 생성기를 다양한 플랫폼과 개발 환경을 위해 사용할 수있습니다. 그것은 매우 좋은 하나 만들고, 심지어는 더 많은 경우는 난수 생성기를 당신이 정말 숫자를 무작위로 생성하는 생성과 예측할 수없는 어려운 결정하기 어렵다. 대부분의 애플 리케이션을위한 최선의 경로는 공개 cryptanalysis의 대상이되고있다는 기존의 무작위 숫자 생성기를 구현하는 것입니다.

취약점은 해커가 임의의 숫자에 관심의 암호화 기능을 입력 값을 결정할 때 활용될 수있다. 이 cryptanalysis에 활용하실 수있습니다.

함수의 부적 절한 사용 ()와 무작위 () 임의의 숫자 취약점의 원인은 무엇인가 랜드 정상 부른다.

난수 생성에 대한 추가 정보 소스

,은 RFC 1750년 읽어 난수 생성 - 임의성 추천 보안에 대한 자세한 내용은.

"사람이 순수하게 산술 수단으로 임의의 숫자를 생산하려고 시도하는 것은 물론, 죄악의 상태에서." - 존 폰 노이만.
안전한 코드 작성 건물 보안 소프트웨어 시큐어 코드입력중 보안 프로그래밍 요리책
Amazon.com에서 보안 프로그래밍에 이러한 우수 도서 구매


상위 5 개 무료 네트워킹 툴

스크랩 무작위 번호 취약점은 무엇입니까?

최신 블로그 게시물


영어 영어 독일어 독일어 스페인어 스페인어 프랑스어 프랑스어 이탈리아어 이탈리아어 포르투갈어 포르투갈어 러시아어 러시아어 네덜란드어 네덜란드어
그리스어 그리스어 힌디어 힌디어 일본어 일본어 한국어 한국어 중국어 중국어 중국어 (간체) 중국어 (간체) 아랍어 아랍어

저작권 2009년 테크 - 자주 묻는 질문. 판권 소유. 개인 정보 보호 정책.