본문 바로가기
TIL/코드스테이츠 TIL

코드스테이츠 소프트웨어 엔지니어링 부트캠프 95

by 안뇽! 2021. 10. 22.
반응형

어제 오늘 배운 인증/보안 이론,

해싱 :

암호화 알고리즘으로 데이터를 아무도 알아볼 수 없는 무작위 문자열로 변환하는 작업,
이론상으로는 해독이 가능하지만 아주 오래걸리고 복잡하므로 사실상 불가능하다고 여겨진다.

  • 입력받은 데이터를 고정된 길이의 무작위 데이터로 변환한다.( 가끔 희박한 확률로 같은 값이 나오기도 한다)
  • input->output 이 늘 동일한 순수함수이다.
  • input데이터의 사소한 변화에도 output데이터는 완전히 다른 값이 되어야한다.
  • hashing 작업은 서버에서 이루어져야 한다. 브라우저는 공격에 취약하다.

Sort :

해싱 알고리즘으로 암호화를 아무리 완벽하게 하여도 빈틈이 있다.
이때 원본데이터에 '별도의 값'을 첨가하여 암호를 절대 해독하지 못하도록 함

  • 로그인, 회원가입등 매번 다른 random값이어야 한다.
  • 절대 재사용 되면 안된다.
  • DB에 hashing된 비번과 더불어 sort값이 저장된다. -> 인증은 hashing 값을 비교한다.웹서버와 사용자의 웹 브라우저간 통신을 암호화 할 때 쓰는 프로토콜
  • SSL/TLS

개인키와 공개키를 교환해서 보안세션생성 -> 통신 암호화

TLS가 SSL 보다 복잡한 암호화를 하기 때문에 더 안전하다.

ngrok : 급하게 개발환경을 외부에 공개해야 할 때 간편한 환경에서 https로 보여줌

쿠키 : http의 무상태성을 보완해준다.

  • 사용헤더 :
    • set-cookie

쿠키는 클라이언트에 저장되기 때문에 보안에 취약하다.

서버는 일방적으로 클라이언트에 쿠키를 저장하는데, response에 set-cookie 헤더를 사용한다.

쿠키 사용 예시 : 장바구니, 로그인상태 유지, 팝업 30일간 보지 않기, 사용자 맞춤 광고 등등

토큰 기반 인증 : 서버의 부담을 클라이언트에 나눠준다.

클라이언트에서 인증정보를 보관하고, 토큰은 암호화된다.

  • JWT(JSON Web Token) : JSON 포멧으로 사용자에 대한 속성을 저장하는 웹 토큰
    • header : 어떤 종류의 토큰인가? 어떤 알고리즘으로 암호화 하는가?
    • payload : 유저 정보, 권한 부여 받았는지?, 기타 필요한 정보, (단 비밀번호같은 민감한 정보는 담지 않는다)
    • Signature : Header. Payload를 base64로 인코딩한 값과 salt 조합으로 암호화 한 값.

  • 토큰 기반 인증 장점
    • 무상태성&확장성 :
      • 서버는 토큰만 확인하고, 클라이언트 정보는 알 필요가 없음
      • 클라이언트는 요청을 보낼때 토큰을 헤더에 포함시키기만 하면 된다.
    • 안정성 : 암호화된 토큰 사용. 암호화된 키를 노출할 필요가 없다.
    • 어디서나 생성 가능 : 토큰을 꼭 서버가 만들 필요도 없고, 외주를 맡기는것도 가능하다.
    • 권한 부여에 용이하다
반응형