1 / 41

제 12 장 난수

제 12 장 난수. 예측 불가능성의 원천. 12.1 주요 내용. 난수가 사용되는 암호 기술 난수의 성질 의사난수 생성기 구체적인 의사난수 생성기 의사난수 생성기에 대한 공격. 12.2 난수가 사용되는 암호 기술. 암호 알고리즘을 조정하는 정보 조각 평문을 암호문으로 전환 암호문을 복호화하는 역할 디지털 서명 구조 키를 이용한 해시 함수 인증. 12.2.1 난수의 용도.

agalia
Download Presentation

제 12 장 난수

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 12장 난수 예측 불가능성의 원천

  2. 12.1 주요 내용 • 난수가 사용되는 암호 기술 • 난수의 성질 • 의사난수 생성기 • 구체적인 의사난수 생성기 • 의사난수 생성기에 대한 공격

  3. 12.2 난수가 사용되는 암호 기술 • 암호 알고리즘을 조정하는 정보 조각 • 평문을 암호문으로 전환 • 암호문을 복호화하는 역할 • 디지털 서명 구조 • 키를 이용한 해시 함수 • 인증

  4. 12.2.1 난수의 용도 • 암호학적으로 안전한 의사난수생성기(Cryptographically Secure Pseudo-Random Number Generator:CSPRNG)는 암호학에서 사용할 수 있을 정도로 충분한 난수 성질을 갖고 있는 난수를 생성하는 의사난수생성기(PRNG)를 말한다.

  5. 난수가 필요한 곳 • 대칭 키의 생성 • 대칭 암호나 메시지 인증 코드에서 사용한다. • 공개 키 쌍의 생성 • 공개 키 암호나 디지털 서명에서 사용한다. • 초기화 벡터(IV)의 생성 • 블록 암호 모드인 CBC, CFB, OFB에서 각각 사용한다. • 난스(nonce)의 생성 • 재전송 공격 방지나 블록 암호의 CTR 모드 등에서 사용한다. • 솔트의 생성 • 패스워드를 기초로 한 암호화(PBE) 등에서 사용한다. • 일회용 패드 • 패딩에 사용되는 열을 생성하는 데 사용한다.

  6. 결국 난수를 사용하는 목적 • 간파 당하지 않도록 하기 위한 것 • 예측 불가능성 • 간파 당하지 않는다는 것

  7. 12.3 난수의 성질 • 난수를 정확하게 정의하는 것은 곤란하다 • 여기에서는 암호 기술에 관련된 성질에 한정해서 이야기한다.

  8. 12.3.1 난수의 성질 • 무작위성 • 통계적인 편중이 없이 엉터리 수열로 되어 있는 성질. • 예측 불가능성 • 과거의 수열로부터 다음 수를 예측할 수 없다는 성질. • 재현 불가능성 • 같은 수열을 재현할 수 없다는 성질. 재현하기 위해서는 수열 그 자체를 보존해 두는 수밖에 없다.

  9. 난수의 성질

  10. 난수의 분류

  11. 12.3.2 무작위성 • 간단히 말하면 「엉터리」로 보이는 성질 • 의사난수열의 통계적인 성질을 조사해서 치우침이 없다면, 그 의사난수열은 무작위하다고 여겨진다. • 무작위성만을 갖는 의사난수는 「약한 의사난수」라고 한다.

  12. 12.3.3 예측 불가능성 • 과거에 출력한 의사난수열이 공격자에게 알려져도 다음에 출력하는 의사난수를 공격자는 알아맞힐 수 없다는 성질 • 예측 불가능성을 갖는 의사난수를 「강한 의사난수」라 한다.

  13. 12.3.4 재현 불가능성 • 어느 난수열과 동일한 수열을 재현할 수 없다고 하는 성질 • 소프트웨어만으로는 재현 불가능성을 갖는 난수열을 만들 수 없다 • 소프트웨어가 생성하는 수열은 언젠가는 반복이 된다. • 다양한 하드웨어로부터 얻어진 정보를 기초로 생성한 수열은 재현 불가능성을 갖는 난수열이 된다 • 재현 불가능성을 갖는 난수를 「진정한 난수」 라고 한다

  14. 12.3.5 무작위성과 예측 불가능성 비교 • 결정론의 우주론적 가정 하에서 본다면 우주에는 무작위성이란 존재하지 않으며 오직 예측 불가능성만 있다. • 수학적으로 정의된 수열을 살펴보면 랜덤한 수열의 한 덩어리가 반복되는 특성을 가지고 있게 된다. • 그러나 우리가 설명할 수 있는 메커니즘에 의해 생성되기 때문에 이와 같은 난수를 의사난수라고 부른다. • 이러한 메커니즘을 모르는 사람들일 볼때에 의사난수는 예측 불가능한 것으로 보인다.

  15. 12.4 의사난수 생성기 • 하드웨어로 난수를 생성할 경우, 열이나 음의 변화 등의 예측이나 재현이 사실상 불가능한 자연 현상을 센서로 감지해서 그 결과를 기초로 난수열을 생성한다. • 이런 하드웨어를 난수 생성기(random number generator; RNG)라 부른다.

  16. 의사난수 생성기(pseudo random number generator; PRNG) • 난수를 생성하는 소프트웨어 • 소프트웨어만으로는 진정한 난수를 생성할 수가 없기 때문에, 「의사」난수 생성기라 부른다

  17. 12.4.1 의사난수 생성기의 구조 • 의사난수 생성기는 「내부 상태」를 가지며, 외부에서 주어진 「종자(Seed)」를 기초로 의사난수열을 생성한다

  18. 의사난수 생성기의 구조

  19. 의사난수 생성기의 내부 상태 • 의사난수 생성기가 관리하고 있는 메모리 값 • 의사난수 생성기는 메모리의 값(내부 상태)을 기초로 해서 계산을 수행하고, 그 계산 결과를 의사난수로서 출력한다. • 그리고 다음 의사난수의 요구에 대비해서, 자신의 내부 상태를 변화시킨다

  20. 의사난수 생성기의 「종자」 • 의사난수 생성기로 의사난수를 생성하기 위해서는 의사난수의 종자(seed)라 불리는 정보가 필요하다. • 의사난수의 종자는 의사난수 생성기의 내부 상태를 초기화하기 위해 이용된다. • 의사난수의 「종자」는 랜덤한 비트 열이다. • 「종자」에 의해 자신만이 사용할 의사난수열을 생성할 수 있다. • 의사난수 생성기는 모두가 공유하지만, 「종자」는 자신만의 비밀로 하지 않으면 안 된다.

  21. 암호 키와 의사난수의 종자

  22. 12.5 구체적인 의사난수 생성기 • 엉터리 방법 • 선형합동법 • 일방향 해시 함수를 사용하는 방법 • 암호를 사용하는 방법 • ANSI X9.17

  23. 12.5.1 엉터리 방법 • 복잡하게만 한 알고리즘을 사용해서 수의 열을 생성시키면, 대부분의 경우는 짧은 주기(짧은 수열의 반복)에 빠지게 된다. • 암호 기술에서 사용하는 난수는 예측 불가능성을 가질 필요가 있으므로 주기가 짧아서는 안 된다.

  24. 12.5.2 선형합동법 • 가장 많이 사용되는 의사난수 생성기 • 무작위성을 갖는 의사난수열을 간단히 생성할 수 있다. • 「예측 불가능성」은 갖지 못한다. • 암호 기술에 사용할 수는 없다

  25. 선형합동법에 의한 의사난수 생성기

  26. 12.5.3 일방향 해시 함수를 사용하는 방법 • 일방향 해시 함수(예를 들면 SHA-1)를 사용해서 예측 불가능성을 갖는 의사난수 열(강한 의사난수)을 생성하는 의사난수 생성기를 만들 수 있다

  27. 의사난수 생성기의 절차 (1) 의사난수의 종자를 사용해서 내부 상태(카운터)를 초기화한다. (2) 일방향 해시 함수를 사용해서 카운터의 해시 값을 얻는다. (3) 그 해시 값을 의사난수로서 출력한다. (4) 카운터를 1 증가시킨다. (5) 필요한 만큼의 의사난수가 얻어질 때까지 (2)~(4)를 반복한다.

  28. 일방향 해시 함수를 사용해서 의사난수 생성기를 만든다

  29. 12.5.4 암호를 사용하는 방법 • 암호를 사용해서 「강한 의사난수」를 생성하는 의사난수 생성기를 만들 수 있다(그림 12-7) • AES와 같은 대칭 암호나 RSA와 같은 공개 키 암호 중 어느 것을 사용해도 상관없다.

  30. 의사난수 생성기의 절차 (1) 내부 상태(카운터)를 초기화한다. (2) 키를 사용해서 카운터를 암호화한다. (3) 그 암호문을 의사난수로서 출력한다. (4) 카운터를 1 증가시킨다. (5) 필요한 만큼의 의사난수가 얻어질 때까지 (2)~(4)를 반복한다.

  31. 암호를 사용해서 의사난수 생성기를 만든다

  32. 12.5.5 ANSI X9.17

  33. ANSI X9.17의 방법으로 의사난수 생성기를 만든다

  34. 의사난수 생성기의 절차 (1) 내부 상태를 초기화한다. (2) 현재 시각을 암호화해서 「뒤섞기 역」을 만든다. (3) 내부 상태와 뒤섞기 역의 XOR을 취한다. (4) 절차(3)의 결과를 암호화한다. (5) 절차(4)의 결과를 의사난수로서 출력한다. (6) 절차(4)의 출력과 뒤섞기 역의 XOR을 취한다. (7) 절차(6)의 결과를 암호화한다. (8) 절차(7)의 결과를 새로운 내부 상태로 한다. (9) 절차(2)~(8)을 필요한 만큼의 의사난수가 얻어질 때까지 반복한다.

  35. 12.6 난수와 의사난수의 차이점 • 의사난수란 정확히 말해서 난수처럼 보이는 수이지만 실제로는 정확한 의미로서 난수가 아닌 수이다. • 의사난수 생성기를 통해 생성되는 난수는 통계적으로는 무작위성을 가지고 있지만 입력되는 자료가 같으면 출력되는 결과도 항상 같게 되는 인과관계가 분명한 존재한다.

  36. 의사난수의 장점 • 생성하기 쉽다 • 동일한 난수를 생성하고 싶을 경우에 입력 값만 동일하게 주게 되면 된다. • 반복적으로 사용할 수 있고 소프트웨어를 검사하거나 수정할 때 매우 유용하다.

  37. 12.6.1 난수의 역사 • 1927년 영국의 케임브리지 대학 출판사에서는 Leonard H.C Tippet가 개발한 41,600 개의 숫자로 이루어진 난수표를 발표 • 1947년에는 RAND 회사에서 룰렛 바퀴를 모사한 전자식 기계를 이용하여 난수를 생성하였다. • 1955년에 편차가 100,000인 정규분포를 갖는 Million Random Digits 를 출판하였다. • John von Neumann은 컴퓨터에 기초한 난수 생성의 창시자 • 1951년에 Derrick Henry Lehmer가 선형합동법

  38. 12.6.2 난수와 암호학 • 암호학적인 면에서 살펴보면 의사난수(하드웨어적으로 만들어졌건 소프트웨어적으로 만들어졌건 간에)를 사용하는 것이 사실은 안전하지 못하다. • 암호 시스템을 설계하는 사람과 사용자는 모두 다 난수의 무작위성을 매우 신중하게 다루어야 한다. • 의사난수의 패턴을 찾아내는 것이 옛날보다 훨씬 쉬워졌다는 것이다. • 결국 난수를 더욱 더 신중하게 선택해야 한다는 것이 우리가 암호학을 배우면서 깨우쳐야 할 중요한 사실이다.

  39. 12.7 의사난수 생성기에 대한 공격 • 암호에 비하면 의사난수 생성기는 두드러지지 않는 존재가 아니다 • 하지만 의사난수 생성기도 공격당한다 • 그러나 의사난수 생성기는 「키를 만든다」라고 하는 중요한 역할을 하고 있기 때문에, 빈번히 공격의 대상이 된다.

  40. 12.7.1 종자에 대한 공격 • 의사난수의 「종자(Seed)」는 암호의 「키」에 필적하는 중요성을 갖는다. • 의사난수의 종자가 공격자에게 알려져 버리면, 그 의사난수 생성기가 생성하는 의사난수열은 모두 공격자에게 알려지게 된다 • 재현 불가능성을 갖는 「진정한 난수」를 종자로 할 필요가 있다.

  41. 12.7.2 랜덤 풀에 대한 공격 • 난수가 필요할 때 그 자리에서 진정한 난수를 만들어내는 것이 아니라, 「랜덤 풀」이라 불리는 파일에 랜덤한 비트 열을 비축해 두는 방법이 있다. • 랜덤풀에 대한 공격을 대비해야 한다

More Related