본문 바로가기

보안/프로그램

PARI/GP 시험문제

1번 : PARI 프로그램의 큰 수 (Big Number)의 계산을 지원하는 프로그램을 2개이상 쓰시오.


 - Maple
 - Mathematica
 - NTL
 - Magma
 - FLINT

 

2번 : PARI 프로그램에 기본 내장되어 있는 명령어 allocatemem(N), random(N), isprime(N), factor(N)에 대해 설명하시오

 

 - allocatemem(N) : 연산 전에 초기 메모리의 최대 크기를 설정해줄 수 있다.
 - random(N) : 0부터 N까지의 랜덤한 값 반환
 - isprime(N) : N이 소수일 경우 1 소수가 아닐 경우 0 반환
 - factor(N) : n의 인수를 구할 수 있음

 

3번 : PARI 프로그램에 기본 내장되어 있는 명령어 read, write에 대해 아는 대로 설명하시오


 - write : 연산을 하다보면 숫자가 너무 길어서 화면에 모두 출력이 안되는 경우가 있다. 이때는 파일로 결과를 저장해야한다. 그때 write 명령어를 사용해 파일로 저장하면 된다.
 - read : read또한 write와 사용방법은 동일하다. 파일을 불러 올 때 쓴다. 기본적으로 프로그램이 설치된 경로에서 파일을 불러온다. 중간 중간 연산이 보기 싫으면 세미콜론을 붙인다.

 

4번 : PARI 프로그램에서 10^1000 보다 큰 최초의 소수(Prime Number)를 찾는 방법을 설명하시오

 - nextprime(10^1000)

 

5번 : 다음 PARI를 이용한 프로그램의 결과 값이 무엇인지 구하시오


 - e=0; for(i=1, 20, if(isprime(i), e=e+i)); e
 - 결과 : 77 (모든 소수를 더하는 연산임 2,3,5,7,11,13,17,19)

 

6번 : 다음 PARI를 이용한 프로그램의 결과값이 무엇인지 구하시오


 - lift(Mod(2,11)^(-1))
 - 결과 : 6

 

7번 : Discrete Logarithm Problem이 무엇인지 기술하시오


 - g : generator (0 < g < p)
 - p : prime
 - x : 정수
 - y = g^x mod p 일 때
 - g, y 쌍에 대해서 정수 x를 결정하는 문제
 - y 값은 구하기 쉽지만 그의 역인 mod p 상에서 x = logg(y)를 구하기 힘든다는 것을 이용
 - 이것을 만족시키는 x 를 구하는 문제

 

8번 : Diffie-Hellman Key Exchange에 대해 설명하시오


 - A의 개인키 : xA
 - A의 공개키 : yA = g^xA mod p
 - B의 개인키 : xB
 - B의 공개키 : yB = g^xB mod p
 - 일 때 SK = g^xAxB mod p

 

9번 : RSA 알고리즘에 대해 설명하시오


 - RSA 암호체계의 안정성은 큰 숫자를 소인수 분해하는 것이 어렵다는 것에 기반을 두고 있다.
 - 키의 생성
  - 엄청 큰 수 p와 q를 구한다
  - n = p*q인 n을 구한다
  - 1 < e < phi(n)인 e를 구한다.
  - e의 곱의 역원인 d를 구한다.
  - e*d = 1 (modphi(n))을 만족
  - gcd(e, phi(n)) = 1을 만족 :  e는 phi(n)와 최대 공약수가 1이어야 한다.
 - 암호화
  - 이 때 c=m^e mod (n)
 - 복호화
  - d = m^d mon n 이다.

 

10번 : Logistic Regression이 무엇인지에 대해 설명하라.


 - 이분형(예/아니오) 종속변수에 대하여 한 개 이상의 독립 변수들을 가지고 회귀모형을 만든다.
 - 로지스틱 회기분석은 예 아니오 형태로 되어 있는 종속변수에 대하여, 한개 이상의 독립변수들을 가지고 이를 추측하기 위해 회귀분석을 하는 것이다.
 - 일반적인 회귀분석과 유사한데, 종속변수가 구간 비율척도 변수가 아니라 0과 1의 값을 가지는 이분형 볌주형 변수라는 것이 다르다.