관리 메뉴

개발하는 동그리

OSI 7계층 / CIA / RSA / RFC 규칙 / JWT 본문

IT 정보/Spring

OSI 7계층 / CIA / RSA / RFC 규칙 / JWT

개발하는 동그리 2022. 8. 29. 01:37
반응형

응용 계층 -> 프리젠테이션 -> 세션 계층 -> 트랜스 계층 -> 네트워크 -> 데이터 링크 -> 물리 계층 (보낼 때)

물리 계층 -> 데이터 링크 -> 네트워크 -> 트랜스 계층 -> 세션 계층 -> 프리젠테이션 -> 응용 계층 (받을 때)


  • 응용 계층 : 프로그램
  • 프레젠 테이션 : 암호화 (암호화, 압축)
  • 세션 계층 : 인증 체크 (상대방 컴퓨터 켜져있는가, 접근 가능한가)
  • 트랜스 포트 : TCP / UDP 통신 결정 (
    • TCP (신뢰성 있음) / 속도 느림  (웹 통신) ⭐⭐
      •  A -> B 안녕
      •  A <- B ACK
      • A -> B 반가워
      • A <-(x) B ( 데이터 유실, 혹은 통신 불량)
      • A -> 반가워
      • A <- B ACK (응답)
    • UDP (신뢰성 없음, 일단 보냄) / 속도 빠름 / 사람이 이해할 수 있는것 
      •  A -> B 안녕
      • A -> B 반가워
  • 네트워크 : IP (WAN) (장거리 통신)
  • 데이터 링크 : LAN  (근거리 통신) 
    • IP 공유기에서 분산되는 위치 찾아줌.
  • 물리 : 광케이블 

CIA (Confidential Integrity and availability)

  • Confidential (기밀성) 
  • Intergrity (무결성) - 문서가 중간에 변경되었을 때
  • availability (가용성) - 문서를 처음그대로 확인가능한가 

 

보안에 대한 이슈!!

  • 1번 문제 : 열쇠 전달이 잘 되었는가!?
  • 2번 문제 : 누구로부터 전달 되었는가!? 

 

RSA (암호화)

  • Public Key : 공개 키
  • Private Key : 비밀 키 (개인 키)
  • 키 한개로 사용 : 시멘트리키 (대칭키)
  • 공개키 & 개인키 : 
    • 공개 키로 전달받고, 개인 키로 확인 
      • 1번 문제 열쇠 전달 문제 해결!! ⭐⭐⭐⭐⭐(암호화)
    • 개인키로 전달하고, 공개키로 확인
      • 전자문서 or 서명(인증) 에 사용 ⭐⭐⭐⭐⭐(전자 서명)
  • A -> B 에게 보낼 때 
    • B의 공개키로 전달하고자 하는 내용을 담고, A 개인키로 한번 더 감싼다. 
    • 이로써 A로 부터 보낸 인증을 확인할 수 있고, B만 전달하고자 하는 내용을 B 개인키를 활용해서 확인 할 수 있다. 

 

JWT

  • RSA(암호화) 사용
  • RFC 규칙 ( 웹통신에서 규정된 약속) = 프로토콜 (각 새로운 네트워크간의 연결마다 약속이 생겨남) 
    • 모든 RFC 문서로 연결된 모든 네트워크가 WWW (World Wide Web) --> 이 약속의 프로토콜이 http 프로토콜
    • HTTP : 벨 연구소에서 시작
  • RFC 7519 로 규정되어 있음!
  • Base64Url 로 인코딩, 복호화 가능 

 

 

  • header / payload / signiture 를 만든다. 
  • header : HS256 으로 서명
  • payload : { username : choonsik, mail : hbs0227@Daum.net }
  • signiture : { Header + Payload + ( ? ) } HS 256으로 암호화
    • HS256 : 해시 -> 복호화 할 수 없는 암호화 
    • HMAC -> 시크릿 키를 포함한 암호화 방식 
  • 로그인 시도시 성공시 서버에서 Json Web Token 을 만든다
    • 각각을 Base64로 인코딩 -> 클라이언트에게 줌 -> 클라이언트는 웹 브라우저의 로컬 스토리지에 저장 -> 다음 서버에 개인정보 요청시 (포함 JWT) -> 서버가 JWT를 받으면 신뢰할 수 있는 토큰인지 검증 (header, payload, signiture ) (보내온 Header와 payload와 서버가 가진 + ? 로 HMAC 해서 비교해서 같으면 인증완료) 

 

 

반응형

'IT 정보 > Spring' 카테고리의 다른 글

@RestControllerAdvice & @ControllerAdvice  (0) 2024.12.12
[Test] Slice Test (Data Access 계층)  (2) 2022.08.18
[Test] Slice Test (API 계층)  (2) 2022.08.18
[Spring] application.yml 설정  (1) 2022.08.18
[Spring] build.gradle 설정  (0) 2022.08.18