Buffer, Hash, JWT

dev_swan·2022년 3월 2일
0

Nodejs

목록 보기
11/20
post-thumbnail

Buffer

  • 정의
    텍스트를 컴퓨터가 저장하고 있는 형태를 보여주는것.
    byte bit를 컨트롤 할 수 있는것이 Buffer입니다.

Buffer.from()

ingoo라는 텍스트를 컴퓨터가 저장하는 방법

Buffer에서 사용할 수 있는 인코딩

  • ascii (아스키 코드)

  • utf-8 (UTF-8) // 기본 인코딩은 utf-8

  • base64 (Base64) // 64진법

    등등..

인코딩

-정의
데이터를 약속한 규칙에 의해 컴퓨터가 사용하는 0과1로 변환하는것

  • 기본 utf-8 인코딩값

  • base64 인코딩값

사용하는 인코딩 방법에 따라 다르게 표현됩니다.

디코딩

-정의
인코딩과 반대로 사람이 이해할 수 있도록 문자로 바꿔줍니다. 바이트형식을 문자열로 반환해주는것.

암호화

  • 양방향
    규칙이 있고 암호화된 내용을 가지고 다시 원본으로 만들 수 있는것

  • 단방향
    암호화한 내용을 다시 복구화가 안됩니다.

hash

  • 정의
    패스워드 같은것을 저장할때 보안성을 높이기위해 암호화를 하는것, hash는 암호화중에 단방향 암호화입니다.

  • sha256
    hash의 알고리즘중 하나로 내용을 암호화하여 2의 256제곱 만큼의 경우의 수를 만들 수 있습니다. 블록체인에서 가장 많이 사용하는 알고리즘 입니다.

16진수로 반환

hex값으로 반환

salt

  • 정의
    위처럼 단방향 hash에도 보안적인 취약점이 있어 salt를 사용하는데 실제 은닉할 비밀번호 이외에 랜덤한 더미 값들을 더해서 해시 값을 계산하는 방법으로 실제 어느 부분이 진짜 비밀번호이고 어느 부분이 더미 데이터인지 알 수 없게 만드는 방법이다.

salt를 사용할때와 안할때 결과값이 전혀 다르게 나옵니다.

JWT ( Json web token )

  • 정의
    cookie나 session처럼 인증 방식으로 인증에 필요한 정보들을 토큰에 담아 암호화시켜버린것입니다.

  • 장점

  1. 자가수용적이라 필요한 모든 정보를 가지고있습니다.
    토큰에 대한 기본정보(header), 전달할 정보(payload), 토큰이 검증된것을 확인하는 signature를 공통키 개인키 암호화를 사용하여 막아두었기 때문에 보안성이 높아집니다.
  2. session과 다르게 클라이언트 정보를 서버가 가지고 있지 않아도 됩니다.
  • 형식

  • header (헤더)
    토큰 타입과 사용 알고리즘이 들어갑니다.

  • payload (정보)
    토큰에 담을정보가 들어갑니다. 로그인이면 유저 정보가 들어가겠죠?? payload에 비밀번호나 주민등록번호같은 민감한 정보는 넣으면 안됩니다.

  • signature (서명)
    header와 payload의 값을 더하고 비밀키(salt)로 해쉬를 사용해서 생성합니다.

0개의 댓글