가비지 콜렉션은 비 결정적이므로 안전한 난수 생성에 사용되지 않는 이유는 무엇입니까?


13

/ dev / random은 엔트로피의 좋은 소스이며 일반적으로 사용되는 것입니다. 최소한 Java에서는 GC를 읽는 것처럼 가비지 수집 데몬이 비 결정적으로 실행되는 것으로 보입니다. . 이것이 사실이라면 왜 가비지 수집 타이밍을 변수 / dev / random 대신 엔트로피 소스로 사용하지 않습니까?


7
표준 C 라이브러리의 rand () 함수에 대한 일부 문서를 살펴보십시오. 그들은 임의의 숫자로 보이는 것을 제공하지만 보안에는 사용할 수 없다고 구체적으로 말합니다. 일반적인 가비지 수집기는 아마도 같은 범주에 속할 것입니다. 보안을 위해 하나를 사용하려는 경우 암호로 안전한 가비지 수집기를 사용해야합니다.
DXM

15
비결정론적인 것은 여전히 ​​높은 예측 가능할 수있다
ratchet freak

7
이 경우 "비 결정적"은 설명이 좋지 않습니다. 가비지 수집기는 완전히 결정론적인 시스템이며 해당 시스템의 상태와이를 사용하는 프로그램의 상태를 완전히 알고 있으면 결과를 결정적으로 예측할 수 있습니다.
로봇 고트

4
@DXM 당신은 암호로 안전한 가비지 콜렉터에 대한 좋은 구현을 알고 있습니까? ;)
AJMansfield

7
"무작위 숫자를 생성하는 산술적 방법을 고려하는 사람은 물론 죄의 상태에있다."
Mark Adler

답변:


58

"지정되지 않음"과 "임의"는 완전히 다른 개념입니다.

가비지 수집기의 정확한 작동은 지정되어 있지 않으며 가비지 수집기 (일반적으로 VM에 의해 구현되지만 반드시 그런 것은 아님)에 달려 있습니다.

따라서 가비지가 수집 될 특정 (즉, 결정 론적) 시간이 없습니다.

그러나 주어진 구현은 일부 규칙을 따르며 동일한 프로그램의 두 번의 후속 실행에서 매우 유사한 가비지 수집 패턴을 가질 가능성이 높습니다.

따라서 가비지 수집기에서 제공 하는 실제 엔트로피 는 매우 낮습니다 ( 실제로 엔트로피로 사용할있는 부분을 찾는 것이 까다로울 수 있습니다).

비교하자면 HashMap, Java에서 A 는 멤버에 대한 검색 순서를 보장하지 않습니다 (기본적으로 지불 할 가치가없는 오버 헤드를 추가하기 때문에 보장). 그러나 A에 대한 주어진 구현하고 주어진 삽입 세트 / 당신이 할 수 제거 확실히 결과 순서를 계산한다. 주어진 주문에 대한 보장이 없다고해서 주문이 무작위라는 것을 의미하지는 않습니다.


20
컴퓨터가 실제로 결정적이지 않은 작업을 수행하면 컴퓨터가 고장 났다고 말하는 것이 공정한 진술이라고 생각합니다.
Schilcote

결정적이지 않다는 것은 현재 프로그램 외부의 어떤 상태에 의존한다는 것을 의미 할 수 있는데, 그 자체가 결정 론적이지만 프로그램 자체와는 완전히 관련이 없으므로 프로그램이 실행될 때마다 다를 수 있습니다.
asmeurer

@asmeurer 나는 그런 문맥에서 이러한 용어를들은 적이 없다고 생각합니다. 사실, 나는 당신이 무엇을 의미하는지 잘 모르겠습니다. 외부 입력 (가장 유용한 프로그램)을 취하는 모든 프로그램은 "일부 외부 상태에 의존하지만"결정적이지 않습니다.
us2012

2
@Schilcote : 일부 최신 CPU에는 비 결정적 (진정한) RNG가 하드웨어로 구현되어 있습니다. 이것들은 양자 수준 물리학에 이르기까지 비결정론 적입니다.
MSalters

2
@Schilcote 특수한 RNG 명령어 (Intel의 RDRAND 및 RDSEED)가 없어도 컴퓨터는 완전히 결정적이지 않습니다. 일부 타이밍은 완전히 지정되지 않았으며 온도와 같은 외부 요인에 따라 달라질 수 있습니다.
코드 InChaos

8

첫째, 우리는 단순한 단어 조작으로 추론의 함정에 빠지지 않도록 조심해야합니다. 예를 들어, NFA는 "비결정론 적 유한 오토 마톤"이기 때문에 난수를 얻기 위해 이것을 사용하지 않는 이유는 무엇입니까? 이 경우 NFA에서 "비 결정적"이 의미하는 것이 아니기 때문입니다. 실제로 NFA를 시뮬레이션 할 때 주어진 입력에서 시뮬레이션의 동작은 완벽하게 결정적입니다.

"결정적"은로드 된 문구입니다. 컴퓨터 프로그래머 나 컴퓨터 과학자에게 비 결정적 행동은 단지 "정확한 행동을 결정하는 것은 생각하기가 복잡하다"는 것을 의미하며 프로그램 입력을 포함하여 너무 많은 요소에 의존합니다.

그러나 이것이 암호 시스템을 공격하려는 동기를 가진 사람에게는 결정적이지 않다는 것을 의미하지는 않습니다. 때로는 환경 적 요소와 입력이 고정 될 수 있으며 반복 가능한 패턴이 "비 결정적"동작에서 나타납니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.