backend
  • README
  • DOCS
    • Java Docs
    • Servlet Docs
    • JSP Docs
    • DB & SQL Docs
    • Spring Boot Docs
    • Spring Security Docs
    • AWS Docs
  • 설치하기
    • Intellij 설정
  • 자바
    • 01 Java란?
    • 02 자바 시작하기
    • 03 자료형과 연산자
    • 04 제어문
    • 05 메소드
    • 06 클래스 기초
      • Static 보충자료
      • 패키지 보충자료
    • 07 객체지향 프로그래밍
    • 08 클래스 더 알아보기
      • 열거형 ENUM 보충자료
    • 09 클래스와 자료형
      • 다형성 보충자료
      • 제네릭 보충자료
    • 10 컬렉션 프레임워크
      • 컬렉션 프레임워크 보충자료
    • 11 람다식과 함수형 프로그래밍
      • 람다식 보충자료
    • 12 오류 대비하기
      • 오류 보충자료
    • 13 멀티태스킹
      • 멀티태스킹 보충자료
    • 교재보충
      • java.lang
  • 스프링
    • 서블릿, JSP
      • 05 Servlet(서블릿)
        • 서블릿 보충자료
        • 서블릿 추가코드
        • XML, YAML, JSON
      • 06 JSP(자바 서버 페이지)
        • JSP 보충자료
      • 07 JSTL(JSP 스탠다드 태그 라이브러리)
        • JSTL 보충자료
      • 08 Cookie(쿠키), Session(세션)
      • 09 서블릿,필터,리스너
        • 서블릿,필터,리스너 보충자료
      • 11 도서관리 프로젝트 실습
    • Spring Boot
      • 01 스프링 등장 배경, 객체지향
        • 스프링 등장 배경, 객체지향 보충자료
      • 02 IOC(제어의 역전), DI(의존성 주입)
        • IOC 보충자료
        • DI 보충자료
      • 03 스프링 구조
        • 스프링 구조 보충설명
      • 04 테스트코드 실습
      • 05 스프링 빈 설정
        • 스프링 빈 설정 보충자료
      • 06 싱글톤
        • 싱글톤 보충 자료
      • 07 스프링 빈 자동설정
        • 스프링 빈 자동설정 보충자료
      • 08 빈 생명주기
        • 빈 생명주기 보충자료
      • 09 빈 스코프
        • 빈 스코프 보충자료
      • 10 스프링 MVC
        • 스프링 MVC 보충자료
        • 데이터베이스 연동에 필요한 부분
      • 11 Validation(검증)
        • Validation(검증) 보충자료
      • 12 Bean Validation(빈검증)
        • Bean Validation(빈검증) 보충자료
      • 13 예외처리
        • 예외처리 보충자료
      • 14 타입변환
      • 15 JDBC(Java Database Connectivity)
      • 16 커넥션풀
      • 17 트랜잭션
        • 트랜잭션 보충자료
      • 18 JDBC 템플릿 활용
      • 19 MyBatis
      • 20 JPA(Java Persistence API)
      • 22 게시판 프로젝트 실습
    • Spring Security
      • 보안(Security)
      • Spring Security
      • 2. Spring Security 알아보기
        • 보안 위협 실제 사례와 방어 전략
      • 3. Spring Security 기본 동작 흐름
      • 4. Spring Security로 인증 권한 추가하기
        • Spring Security의 인증 및 인가
      • 5. Spring Security에서 세션 관리하기
        • 세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계
        • 해싱 및 해싱알고리즘
        • base64
      • 6. Spring Security 악용 보호
        • SameSite
      • 7. Spring Security로 인가 권한 추가하기
      • 8. Bcrypt(비크립트) 암호화
      • OAuth2 적용하기
  • 네트워크
    • HTTP
    • OSI 7계층
  • DB&SQL
    • 01 Database(데이터베이스)와 SQL 개요
    • 02 관계형 모델
    • 03 집합
    • 04 JOIN 연산
    • 05 MySQL
      • 세이브포인트
      • DBeaver, Mysql 오토커밋 설정 관련
    • 06 SQL 기초
      • 예시데이터 쿼리문
    • 07 SQL 실습
      • 실습 스키마
    • 08 Join 활용
      • 실습스키마
    • 09 SQL 활용
      • 실습스키마
    • 10 정규화
      • 실습 스키마
    • 데이터타입
    • 예시 프로젝트 스키마 구성
  • AWS
    • SSL 연결하기
    • 보충설명
Powered by GitBook
On this page
  • 해싱(Hashing)란?
  • SHA-256과 SHA-512란?
  1. 스프링
  2. Spring Security
  3. 5. Spring Security에서 세션 관리하기

해싱 및 해싱알고리즘

해싱(Hashing)란?

해싱은 임의의 크기를 가진 데이터를 고정된 크기의 데이터로 매핑하는 과정입니다. 해싱의 결과를 해시 값 또는 해시 코드라고 부르며, 이 값은 입력 데이터의 "요약" 또는 "지문"으로 간주됩니다.

해싱은 암호학, 데이터 검색, 데이터 무결성 확인 등 다양한 분야에서 중요한 역할을 합니다.


해싱의 주요 특징

  1. 고정된 출력 크기:

    • 입력 데이터 크기와 상관없이, 해시 알고리즘은 항상 고정된 크기의 출력(해시 값)을 생성합니다.

    • 예: SHA-256은 항상 256비트(32바이트) 출력.

  2. 단방향성:

    • 해시 함수는 단방향 함수로, 해시 값을 이용해 원래 입력 데이터를 역추적하는 것이 사실상 불가능합니다.

    • 이는 비밀번호 저장 등 보안에서 중요한 속성입니다.

  3. 충돌 저항성:

    • 서로 다른 입력 데이터가 동일한 해시 값을 생성하는 경우를 충돌이라고 하며, 좋은 해시 함수는 충돌 가능성이 극히 낮습니다.

  4. 효율성:

    • 해싱은 입력 데이터를 빠르게 처리하며, 해시 값을 계산하는 데 걸리는 시간이 짧습니다.


SHA-256과 SHA-512란?

SHA(Secure Hash Algorithm)는 데이터를 고정된 길이의 해시 값으로 변환하는 암호화 해시 함수입니다. 이 함수는 데이터를 압축해 생성된 해시 값으로 데이터의 무결성을 검증하거나 암호화 키를 생성하는 데 사용됩니다.

SHA-256과 SHA-512는 각각 SHA-2(SHA-256, SHA-384, SHA-512 등)의 변형입니다. SHA-2는 미국 표준 기술 연구소(NIST)에서 설계한 암호화 알고리즘입니다.


1. SHA-256

  • 해시 길이: 256비트(32바이트)

  • 특징:

    • 입력 데이터의 크기에 상관없이 항상 256비트의 고정 길이 해시 값을 반환.

    • 주로 디지털 서명, 블록체인(예: 비트코인)에서 사용.

    • 비교적 적은 리소스를 사용하며, 높은 보안성을 제공.

예시

입력: "Hello, World!"
출력 (SHA-256): 
a591a6d40bf420404a011733cfb7b190
d62c65bf0bcda32b0b380ff2fd58c4a4

2. SHA-512

  • 해시 길이: 512비트(64바이트)

  • 특징:

    • 입력 데이터의 크기에 상관없이 항상 512비트의 고정 길이 해시 값을 반환.

    • SHA-256보다 더 긴 해시 값을 제공해, 더 높은 보안성과 충돌 저항성을 제공.

    • 상대적으로 리소스(메모리, CPU) 소모가 큼.

    • 주로 고보안 환경(예: 보안 인증, 암호화 키 생성 등)에서 사용.

예시

입력: "Hello, World!"
출력 (SHA-512): 
2c74fd17edafd80e8447b0d46741ee24
b7e9525e0d069f037b855ff0d5d7162d
7d293da90a91f37a28f5ff2a509d6e1a
...

SHA-256과 SHA-512의 주요 차이

특징

SHA-256

SHA-512

출력 길이

256비트 (32바이트)

512비트 (64바이트)

보안 수준

보안성 높음

보안성 더 높음

속도

더 빠름

상대적으로 느림

사용 사례

블록체인, 디지털 서명

고보안 환경, 키 생성


SHA 알고리즘의 특성

  1. 단방향성: 해시 값으로부터 원래 데이터를 역추적하는 것이 사실상 불가능.

  2. 충돌 저항성: 서로 다른 입력 데이터가 같은 해시 값을 갖는 확률이 매우 낮음.

  3. 고정 길이 출력: 입력 데이터의 크기와 상관없이 항상 고정된 길이의 해시 값을 반환.


사용 사례

  • 비밀번호 저장: 비밀번호를 직접 저장하지 않고, 해시 값을 저장하여 보안을 강화.

  • 데이터 무결성 확인: 파일의 해시 값을 계산하고 비교하여 파일이 손상되거나 변조되지 않았는지 검증.

  • 암호화 키 생성: 암호화 알고리즘에서 키를 생성하는 데 사용.

  • 블록체인: 트랜잭션 검증 및 블록 연결을 위한 보안 해시 생성.

Previous세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계Nextbase64

Last updated 3 months ago