[암호학] 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 |