본문 바로가기
Programing/Theory

RSA 암호화 기법

by 슈퍼와이비 2013. 6. 29.
반응형

이론적인 내용을 살펴보면 아래와 같습니다.

* 공용키 시스템(Public Key System)

  • 서로 다른 키로 데이터를 암호화하고, 해독하는 비대칭 암호화 기법이다.
  • 암호키는 공개하고 해독키는 비밀로 함으로써 누구나 암호문을 만들어 송신 또는 저장할 수 있으나, 해독키를 가진 사람만이 해독할 수 있다.
  • 키의 분배가 용이하고, 관리해야 할 키의 개수가 적다.
  • 암호화/복호화 속도가 느리며 알고리즘이 복잡하고 파일의 크기가 크다.
  • 공용키 암호화 기법을 이용한 대표적인 암호화 방식에는 RSA(Riverst Shamir Adleman)가 있다.


* 암호화키(공개키)와 해독키(복호화키, 개인키) 만들기

1. 두개의 소수를 선정합니다. 첫번째 소수를 p, 두번째 소수를 q라고 지정하겠습니다.

p, q가 키를 만드는 씨드값이 됩니다.

p=19 
q=23


2. p 와 q의 곱을 구하고 (p-1)과 (q-1)의 곱을 구합니다.

r1 = 19 * 23 = 437

r2 = (19-1) * (23-1) = 396


3. 해독키를 만듭니다. r1보다 작고 2보다 큰 소수중 r2와 서로수인 수를 구합니다. 

note : r2보다 작은 소수로 진행하겠습니다.

r2보다 작은 소수로 257을 선정했습니다. 이 키가 개인키가 됩니다.


4. 암호화키를 구합니다.

개인키 * d mod r2 = 1 이 성립하는 d를 구합니다.

257 * d % 396 = 1

d = 1037

note : 아래 루프로 d를 구합니다.

var i = 1000;

while ( 1==1 ){

    i++;

    if ( (257 * i) % 396 == 1 ) {

        console.log(i);

        break;

    }

}


5. 암호화키와 해독키를 정리합니다.

해독키 : 257

암호화키 : 1037

나누기 값 : 437


6. 암호화및 복호화 하기

암호화할 임의의 평문 n을 지정합니다. n = 2

n ^ 암호화키 mod r1 으로 암호문을 만듭니다.

2 ^ 1037 % 437 = 376


암호문 ^ 해독키 mod r1 으로 암호문을 복호화합니다.

376 ^ 257 % 437 = 2


자바스크립트의 경우 대칭키를 사용하면 키가 스크립트상에 노출되기때문에 기껏 암호화한 것이 무색해집니다. 

그래서 스크립트상에서는 비대칭키를 사용하여 암호화를 하는게 좋습니다.

스크립트단에서 공개키로 암호화하고 서버단에서 해독키(개인키)로 복호화를 합니다.

반응형