암호화(Encryption)에 대해서

2025. 7. 12. 13:43·보안
728x90
반응형
암호화는 크데 2가지 범주로 나뉘며, 각 방식의 목적와 사용법이 다름니다.

암호화란?

암호화(Encryption)란, 민감한 데이터를 보호하기 위해 알 수 없는 형태로 변환하는 보안 기술입ㄴ디ㅏ. 권한이 없는 사용자는 용을 이해할 수 없으면, 복호화 키 없이는 원래 데이터로 되돌릴 수 없습니다.


암호화의 분류

구분 설명 키 사용 방식 주요 특징 사용 예
단방향 암호화 (해싱) 복호화 불가능한 암호화 없음 (키 없음) 입력 → 암호값만 생성 비밀번호 저장
양방향 암호화 복호화 가능한 암호화 키 사용 (공개/비공개) 암호화 ↔ 복호화 가능  

단방향 암호화(해싱, Hashing)

단방향 암호화는 해싱 기반으로 입력값에 대해 고정된 크기의 해시값을 생성하는 방식으로 SHA-256, SHA-516, bcrypt, PBKDF2 etc… 이 있습니다.
복호화가 불가능함으로 유출되어도 문제없는 민감한 데이터를 다룰 때 사용됩니다. 예로 비밀번호가 있습니다.

String hashed = SHA256.hash("myPassword");

양방향 암호화

암호화된 데이터를 다시 원래대로 복호화 가능해야하는 경우에 사용합니다. 읽어야 하는 민감 정보에만 사용됩니다. 예로 주민번호나 개인 응답지 등이 될 수 있습니다.
그래서 무엇보다 더 주의를 두어야하는 기법입니다.
여기서 더 2가지 대칭키와 비대칭키 방식으로 나뉩니다.

대칭키 암호화(Secret Key 기반)

암호화와 복호화에 같은 키를 사용하는 것입니다. 빠르고 간단하나 키가 유출되면 모든 데이터가 위험합니다.
가장 널리 사용되는 알고리즘은 AES이며 실무에서도 내부 시스템에서만 사용된다면 적어도 사용할 만합니다.

비대칭키 암호화(공개키/개인키 기반)

공개키로 암호화하고 개인키로 복화화하는 방식으로 네트워크를 타는 기반에 많이 사용됩니다. 그래서 주로 인증/전자서명에 사용되며 RSA 알고리즘을 주로 사용합니다.


실무 적용 예시

대상 적용 암호화 설명
비밀번호 단방향 해시 + 솔트 bcrypt 또는 PBKDF2 사용 (절대 복호화하지 않음)
민감 데이터 (주민번호 등) 대칭키 (AES) 서버 내 저장 전 암호화, 복호화 필요 시 복원
통신 구간 비대칭키 (RSA) + 대칭키 혼합 HTTPS: RSA로 세션키 교환 → 세션은 AES로 처리
토큰 서명 비대칭 (RSA) 또는 대칭 (HMAC) JWT: 서버에서 생성 시 서명, 클라이언트는 검증

보안 설계 시 유의할 점

  1. 비밀번호에는 절대 복호화 가능한 방식(AES 등)을 사용하지 말 것
  2. 암호화 키는 외부 노출 금지, 환경 변수나 Vault에 보관
  3. 단방향 해시에는 솔트를 반드시 추가해 Rainbow Table 공격 방지
  4. 대칭키는 가능하면 노출 범위를 최소화하고 주기적 변경 고려

 

728x90
반응형
저작자표시 비영리 (새창열림)

'보안' 카테고리의 다른 글

[암호화] 웹 보안은 SSL!  (0) 2025.08.19
[암호화] 대칭키란?  (0) 2025.08.19
UUID(Universally Unique Identifier) 버전과 사용법  (6) 2025.08.10
단방향 암호화(해시 알고리즘)  (1) 2025.07.12
JCE 암호화 트러블 슈팅  (1) 2025.04.29
'보안' 카테고리의 다른 글
  • [암호화] 대칭키란?
  • UUID(Universally Unique Identifier) 버전과 사용법
  • 단방향 암호화(해시 알고리즘)
  • JCE 암호화 트러블 슈팅
크크크크
크크크크
공뷰를 합시다.
    반응형
  • 크크크크
    Tom's Note
    크크크크
  • 전체
    오늘
    어제
    • 분류 전체보기 (130)
      • IT 지식 (6)
      • CS (66)
        • 알고리즘 & 자료구조 (19)
        • 운영체제 (41)
        • 네트워크 (1)
        • 데이터베이스 (5)
      • 보안 (6)
      • SW 공학 & 프로그래밍 언어 (5)
        • Java (28)
        • 디자인 패턴 (1)
        • 형상관리 (2)
        • 톰캣(WAS) (2)
        • SW 방법론 (3)
        • 스프링부트 (5)
      • 시스템 설계 (4)
        • Docker (2)
      • 자격증 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      문제해결
      whereis
      불변
      su
      스프링부트
      분석기법
      /etc/passwd
      whatis
      DI
      man
      usermod
      cifs
      단반향
      암호설정
      Chage
      비트연산
      REST API
      docker
      which
      ADsP
      DTO
      passwd
      자바
      chmod
      알고리즘
      java
      1급
      apropos
      2차
      리눅스
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    크크크크
    암호화(Encryption)에 대해서
    상단으로

    티스토리툴바