한 걸음씩..

[암호학] 공개 키 암호 RSA구현 본문

잡다한 공부방

[암호학] 공개 키 암호 RSA구현

반엘 2013. 7. 15. 10:54

1. RSA암호의 안전성
   1) 부분정보의 문제성
      -> 메시지가 같으면 암호문도 똑같이 나오게 됨
   2) Chosen cipher text attack 취약점
      -> 송신자가 수신자에게 보낼 암호문을 공격자가 가로채어 수신자에게 원래 암호문이 아닌 
         다른 암호문을 보내면 수신자는 자신의 개인키로 복호화 하게 함으로써 원래 암호문을 
         해독할 수 있음
   3) 해독하지 않고도 메시지를 사용자에게 불이익이 가는 해독 법
      -> 직접적으로 날라가는 메시지를 조작해서 변경 한 후 다시보냄
   4) 전자서명을 사용하여 두 개의 문자를 이용, 서명을 위조

2. OAEP(Optimal Asymmetric Encryption padding)
      -> 메시지(msg)과 추가된 임의의 데이터(padding)를 임의의 난수 열과 XOR연산을 
         하고 그 문자열을 Hash 함수를 통해 데이터를 새롭게 만드는 과정

3. RSA의 효율성
   1) Square – and – Multiply(멱승 연산)
   2) Karatsuba Multiplication(고속곱셉연산)
      -> 기존의 곱셈 연산보다 덜 계산할 수 있음.
   3) RSA – CRT
      -> N의 소인수 p와 q로 나누어 연산 후 결과값을 합침.
      -> 기존의 연산보다 약 4배정도 속도 향상 효과
4. 전자봉투방식
      -> 메시지를 비밀키에 의하여 암호화하고 그 비밀키를 수신자의 공개키로 암호화 하는 
         과정을 거쳐 데이터가 전송됨.
   1) PGP
      -> 메시지를 RSA를 통해 (비밀키)암호화를 하고 압축을 한 후 그 메시지를 대칭키로 
         암호화하고 다시 (공개키)암호화 하는 방식.
      ① 평문을 MD5 해쉬 함수화 하고 송신자의 비밀키로 RSA암호화(전자서명)
      ② 기존의 평문과 연산된 데이터를 합쳐서 압축 
         (데이터가 좀 더 잘 섞이고 용량을 줄여 빠르게 전송하기 위해)
      ③ 일회성 비밀키를 가지고 IDEA 알고리즘을 통해 대칭키 암호화
      ④ 일회성 비밀키를 수신자의 공개키로 RSA 암호화
      ⑤ Base64 알고리즘을 통해 ASCII text로 인코딩 하여 전송 
      ※ Base64 : base64는 임의의 바이트 스트림을 화면에 표시할 수 있는 ASCII 문자들로 
         바꾸는 인코딩 방식
2) EFS(Encrypt File System)
      -> Windows 파일 암호화 제품. 전자 봉투 방식을 활용
      ① 난수 생성기를 통해서 입력 키 생성
      ② 입력 키를 통해 DES 암호화
      ③ 입력 키는 공개키로 암호화 시켜서 암호문에 덧붙여놓음
      ④ 복호화 할때는 개인키로 암호화 된 입력 키 를 복호화 한 후에 암호문 복호화
3) Diffie-Hellman 키 합의 방식
      -> 메시지의 암호화, 복호화를 위해 사용되는 키의 분배 및 교환에 주로 사용되는 알고리즘.
      -> 갑돌이와 갑순이는 임의의 난 수 5와 7을 생성하고 그 값을 이용하여 시스템 공개정보의 
         3, 127과 함께 연산하여 116, 28을 얻은 후 서로의 결과값을 바꾸어 자신의 난수 와 함께
        연산 하여 90 이라는 키 생성