RSA 암호화 로그인 SRC (SpringFramework + RSA)

1
post-thumbnail

⚙ RSA 개념에 대해 알아보자


  1. 사용하는 목적
    WEB 서버에 SSL 설치 없이 로그인처리할때 평문으로 전송할경우 중간에서 정보를 가로채어 가로챈 계정정보를 권한이 없는 사용자가 시스템에 로그인 한후 시스템을 손상시킬수도 있습니다.
    이와 같은 보안 문제가 발생하는 것을 방지하기 위해서 RSA암호화 방식을 사용합니다.
    사실 그냥 SSL을 사용하면 더안전하게 아무런 처리없이 간단하게 사용할수 있지만 사용하는 서비스들에 대해서 전부 인증서를 등록(인증서별로 1년단위로 고정적으로 돈이 많이든다. ㅎㅎ)하여 사용 할수 없으니 가장 쉽고 돈안들이면서 안전하게 로그인 할수있는 방식이다.

  2. RSA 란 ?
    RSA란 암호화와 인증을 할수있는 공개키 암호시스템이다. 이것은 1977년 RonRivest와 Adi Shamir, Leonard Adleman에 의해서 개발되었다.
    RSA 암호화 알고리즘을 통해서 평문을 암호화하여 서버로 전송하여 중간에 계정정보를 가로채더라도 암호화 키가 없으면 해석이 불가능하다.

  3. 기본 작동 원리

  • 서버측에서 RSA 공개키와 개인키(암호키)를 생성하여 개인키는 세션에 저장하고 공개키는 HTML 로그인 폼 페이지에 Input[type=hidden] value 값에 셋팅한다.

  • 로그인 폼은 사용자가 아이디 패스워드를 넣고 전송을 하면 전송하기전에 중간에 자바스크립트가 가로챈다.

  • 입력된 사용자 아이디,패스워드를 서버에서 전달받은 공개키로 RSA 암호화하여 서버로 전송한다.

  • 로그인폼에서 전달받은 사용자 아이디,패스워드를 세션에 저장된 RSA 개인키로 복호화 한다.

  • Database에 저장된 사용자 아이디와 패스워드가 일치하는지 확인한다.

  1. Spring Framework RSA 키생성
    로그인 폼 화면을 출력할때 공개키와 개인키를 생성하여 공개키는 Input hidden에 값을 셋팅하고 개인키는 세션에 저장한다.

⚙ RSA Source Code ( ctrl + wheel 확대 )


1. JAVA에서 RSA를 사용하기위해서는 라이브러리를 Import 시킨다. ( Server )

2. 로그인 처리전이면 로그인폼에 공개키값을 전달한다. "공개키값은 Input[type=hidden] value 값에 셋팅" ( Server )

3. 로그인 페이지에서 서버에서 전달된 공개키를 셋팅한다. ( Client )

4. 사 용자 계정정보를 등록후 로그인 버튼을 클릭하면 서버로 전송되기전에 사용자 계정정보를 암호화후에 서버로 전달한다. ( Client )

5. 로그인 폼에서 암호화처리된 사용자정보를 전송받아 복호화 처리후 . Database에 저장된 사용자 아이디와 패스워드가 일치하는지 확인한다.

profile
ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ 🔥

0개의 댓글