[암호학] RSA 적용 : 3) RSA 적용하기 (Node.js)

2022. 5. 2. 16:29
반응형

 

이제 실제 사용하는 프로젝트에 암호화를 적용시켜야 한다.

프로젝트는 Node.js로 작성된 서버가 있으며, 클라이언트는 Angular(Typescript)를 사용하였다.

 

Node.js <-> Angular

import nodeRSA from 'node-rsa'

//...

 const rsaOption : any = {
      encryptionScheme :{
          scheme : "pkcs1",
          hash : "sha256"
      }
  }


  var privateKey = new nodeRSA({b:1024} as any, rsaOption); // 비밀키, b는 Key의 길이 설정
  var publicKey = privateKey.exportKey("pkcs1-public-pem"); //공개키, 인자에는 암호 표준 규약 종류 설정

  app.set('privateKey', privateKey);
  app.set('publicKey', publicKey);

Node.js에서 키를 생성하는 코드이다.

키를 직접 서버에서 생성하거나 인증서에 저장된 것을 가져와 사용한다.

위는 서버에서 직접 공개키와 비밀키를 생성하는 코드이다. node-rsa 패키지를 이용하였으며, 해당 코드로 생성하게 되면 PEM 형식의 공개키가 생성되게 된다.

 

import JSEncrypt from 'jsencrypt';

//...

var key = new JSEncrypt();
key.setPublicKey(PUBLIC_KEY);	//PUBLIC_KEY는 서버에서 제공된 공개키값
const originValue = "TEST"
const encValue = key.encrypt(originValue) || null;	//암호화

Client 단에서 암호화 진행.

PEM 형식의 경우 다음과 같이 암호화를 진행하면 된다.

 

const privateKey = req.app.get('privateKey');	//비밀키
const decryptValue = privateKey.decrypt(encodeValue, 'utf8');

암호화 된 Value가 넘어오면 서버의 비밀키를 통해 복호화를 진행하면 된다.

 

 

결과

암호화가 되어 서버로 전송되었다.

 

서버에서 복호화에 성공하여 로그인 토큰을 발급하는 것에 성공하였다.

반응형

'CS > 보안' 카테고리의 다른 글

[암호학] RSA 적용 : 2) RSA Key 포맷  (0) 2022.05.02
[암호학] RSA 적용 : 1) RSA 키교환 방식이란  (0) 2022.05.02

BELATED ARTICLES

more