묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

RSA 암호화 알고리즘이란?
개발 etc

RSA 암호화 알고리즘이란?

2022. 3. 18. 20:02

🚀 RSA 암호화 알고리즘이란?

  • 공개키 암호 시스템 중 하나
  • 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘
  • 전자상거래에서 가장 흔히 쓰이는 공개키 알고리즘
  • 암호화 알고리즘의 핵심은 큰 정수의 소인수 분해가 어렵다는 점을 이용하여 암호화

 

암호화할 때는 마음대로지만 해독할 때는 아니다.

 

🚀 그렇다면 공개키(public key)는 무엇일까?

  • 대칭키 암호화와 달리 암호화와 복호화에 서로 다른 키를 사용하는 암호화 방식
  • 공개키 암호화는 공개키와 비밀키(private key)를 사용하여 암호화 및 복호화하는 기술

 

공개키를 더 알아보기전에 대칭키를 간단하게 알아보자

 

1. 대칭키 기법

  • 비밀키 하나만 사용
  • 암호화 및 복호화에 같은 키(대칭)를 사용하는 암호화 알고리즘
  • 키를 안전하게 교환하는 것이 가장 중요한 부분이며, 대칭키 탈취 시 쉽게 암호화된 데이터 알 수 있음

 

2. 공개키 기법

  • 공개키와 비밀키 두 개를 사용하여 암호화 및 복호화
  • 공개키(Public Key) : 누구나 알아도 되는 키
  • 비밀키(Private Key) : 소유자만 아는 키

공개키 암호를 구성하는 알고리즘을 대칭키 암호 방식과 비교하여 비대칭 암호라고도 불린다.

암호화와 복호화에 사용하는 키가 서로 다르다.(비대칭)

 

  • 공개키 암호화 → 비밀키 복호화
  • 비밀키 암호화 → 공개키 복호화

 

2-1. 공개키 암호화

공개키 암호화

  • 공개키는 누구나 아는 키이므로, A가 B에게 보낼 때 B의 공개키로 암호화하여 전송
  • 이 때, B의 공개키로 암호화했기에 B의 비밀키로 복호화 가능
  • 해커가 탈취해도 정보를 알 수 없음 (대칭키의 키값 교환 문제 해결)
  • 해커가 파일 탈취하여 B의 공개키로 이상한 파일을 암호화하여 보낼 위험성 존재

 

2-2. 개인키(비밀키) 암호화

개인키 암호화

  • A의 비밀키로 암호화하여 B에게 전송할 경우, A의 공개키로 복호화 가능
  • 이 때, 모든 이가 A의 공개키를 알기에 해커가 탈취해서 열어볼 수 있음
  • 누구나 열 수 있기에 보안 위험성 존재하지만, A가 보낸것이 100% 신뢰 가능하다는 점
    • 즉, 누가 보냈는지에 대한 인증에 관한 문제 해결
    • A의 비밀키는 A만 가지고 있으므로 A만 비밀키로 암호화 가능
  • 이 기술은 전자서명 등의 공인인증체계의 기본이 되기도 함

 

2-3. 공개키 암호화와 비밀키 암호화 둘 다 문제점이 있는데 위험한 것 아닌가?

결론은 두 번 암호화를 하면 된다.

RSA 암호화 기법

  • A의 공개키로 안열리면 A가 보낸 것 X
  • A의 공개키로 열어도 B의 비밀키로 정보를 열어야 확인 가능
    • B의 비밀키는 B만 가지고 있기에 아무나 정보를 알 수 없음
  • 즉, A가 보내는 정보는 안전하게 B에게 전송 가능하며 아무나 정보를 알 수 없음

 

 

 

 

 

 

 

 

저작자표시 비영리 (새창열림)

'개발 etc' 카테고리의 다른 글

[CSS] 구글에서 제공하는 폰트 사용하기  (0) 2022.07.14
로그인, 로그아웃에는 무슨 HTTP 메소드를 써야할까?  (0) 2022.04.06
OSI 7계층 예시  (0) 2022.03.18
로그인 세션 과정과 세션에 대한 문제점  (0) 2022.03.18
Nginx란?  (7) 2022.02.21
    '개발 etc' 카테고리의 다른 글
    • [CSS] 구글에서 제공하는 폰트 사용하기
    • 로그인, 로그아웃에는 무슨 HTTP 메소드를 써야할까?
    • OSI 7계층 예시
    • 로그인 세션 과정과 세션에 대한 문제점
    묠니르묘묘
    묠니르묘묘

    티스토리툴바