Skip to content

Latest commit

 

History

History
123 lines (72 loc) · 5.02 KB

자동로그인기능_보안이슈_고민.md

File metadata and controls

123 lines (72 loc) · 5.02 KB

자동 로그인 기능 보안 이슈 고민

작성일자 : 2022-01-12


이슈 내용

  • 자동 로그인 기능은 쿠키 value 사용해서 인증을 한다.
  • 쿠키 자체가 보안에 취약하다는 문제가 있다.
  • 쿠키 value 값으로 user 테이블의 기본키인 userSeq를 사용하고 있다. 기본적인 쿠키 보안 설정을 해도 악의적인 사용자가 쿠키값에 일정 숫자를 다르게 입력하면 다른 사용자의 권한으로 로그인할 수 있는 문제가 있다.



해결방법

  • 쿠키 옵션 setHttpOnly, setSecure 설정을 true로 한다.

    • setHttpOnly : XSS(Cross Site Scripting) 공격 차단, 자바스크립트로 쿠키 조회를 막는다.

    • setSecure : Https 로 통신하는 경우에만 웹브라우저가 쿠키를 서버로 전송하는 옵션이다. Https는 HTTP protocol의 암호화된 버전이다.

  • 쿠키 value에 암호화를 적용하여 저장하고 클라이언트에게 전달할 수 있도록 해야한다.

  • 회원의 비밀번호를 암호화할 때 사용한 Bcrypt은 단방향 방식으로 암호화만 가능하다. Bcrypt로 쿠키 value를 복호화하여 로그인 처리를 할 수 없었다.

  • 고급 암호 표준 알고리즘인 AES256은 양방향 방식으로 서버에 키만 가지고 있으면 암호화/복호화를 할 수 있다. 이러한 이유로 쿠키 value를 암호화할 때는 Bcrypt 대신 AES256를 적용하기로 하였다.

  • AES256의 단점은 AES256은 키가 유출되면 보안의 의미가 사라지기 때문에 키에 대한 정보 저장에 안정성 확보가 필요하다.



https 동작 방식

README 이미지_3


HTTPS는 TCP 위에 SSL/TLS 층을 추가하여 암호화, 인증 그리고 무결성 보장을 통해 더 안전하게 만들어주는 프로토콜입니다.

SSL은 대칭키 공개키 둘다 사용함



SHA vs AES


  • AES(Advanced Encryption Standard)

    • 블록 암호 알고리즘 - 평문을 블록 단위로 암호화하는 대칭키 암호 시스템
    • 패딩 - 암호화하기 위해서는 평문을 우선 블록 크기의 배수로 만들어준다.
    • DES를 대체한 암호 알고리즘으로 대칭키 알고리즘이다.
    • 블록 크기는 128비트이고, 키 길이에 따라 128, 192, 256비트로 분류
    • 키 크기에 따라 10/12/14회 Round 수행
    • 라운드키의 수 = N+1 개



  • SHA(Secure Hash Algorithm )

    • HASH 함수를 적용한 단방향 암호화 알고리즘으로 복호화가 불가능

    • 최초 개발된 함수는 SHA-0로, SHA-0을 변형한 함수는 SHA-1로, 그 후에 발표된 SHA-224, SHA-256, SHA-384, SHA-512를 묶어 SHA-2 라고 한다.

    • SHA-1이 가장 많이 사용되고, TSL, SSL, IPSec, SSH에서 사용

    • SHA 는 MD5 보다는 느리지만 강화된 보안을 제공한다.

    • SHA-256 암호화 방법은 주로 사용자의 패스워드에 사용 => E-mail 주소나 연락처, 이름 등은 서비스 상에서 안내 등을 위해 평문으로 만들 필요가 있지만 패스워드는 평문으로 만들 필요가 없는 정보로 분류



  • 양방향 암호화

    대칭키 암호화(비밀키 암호화)

    • 암호화키와 복호화 키가 같은 암호화
    • 빠른 암복호화하는 장점이 있지만, 비밀키가 외부에 노출되면 기밀성이 확보되지 않는 단점이 있다.
    • 알고리즘의 종류에는 AES, DES, 3DES, SEED, ARIA 등이 있다.

    비대칭키 암호화(공개키 암호화)

    • 서로 다른 두 개의 키, 공개키와 개인키를 사용하여 암호화하고 복호화
    • 공개키로 암호화하고 개인키로 해독 (개인키와 공개키의 위치를 바꿔 실행하면 전자서명이 된다.)
    • 개인키를 가진 사람만이 공개키를 통해 암호화된 메세지 해독 가능
    • 처리 속도는 느리나, 키 교환이 용이하다는 장점이 있다.
    • 알고리즘의 종류에는 RSA, DSA 등이 있다.

    스트림 기반과 블록 기반 암호화 알고리즘

    • 스트림 기반 암호화는 비트 단위로 암호화 하는 방식 ex) LFST, MUX Generator

    • 블록기반 암호화는 블록 단위로 암호화 하는 방식 ex) DES, AES, SEED


  • 단방향 암호화

    HASH함수

    • 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미

    • 비밀번호에 사용

    • 암호문을 평문으로 되돌릴 수 없다.

    • 입력한 비밀번호가 맞는지 확인하기 위해 복호화 과정을 거치지 않고, 입력한 비밀번호를 다시 암호화하여 저장된 비밀번호와 같은지 비교

    • 알고리즘의 종류에는 SHA시리즈, MD5 등이 있다.



참고 : https://www.crocus.co.kr/1230
https://mysterico.tistory.com/30
https://jusungpark.tistory.com/34
https://www.youtube.com/watch?v=wPdH7lJ8jf0