Spring

Spring Security / CIA와 RSA

Carlos._. 2023. 3. 18.
반응형

 

CIA

 

CIA ( Confidentiality Integrity Availability )

  • Confidentiality  - 기밀성
    • 개인정보, 민감한 정보 등을 인가된 사용자에게만 허가해 줍니다.
  • Integrity - 무결성
    • 내용의 변경이나, 훼손 없이 정확하게 보존합니다.
  • Availability  - 가용성
    • 항상 정상적으로 신뢰성 있는 서비스를 할 수 있는 상태

 

 

예를 들어 A, B, C 세 나라가 있다고 가정해 봅시다.

  • A나라가 B나라에게 문서를 전달하는데, 중간에서 C 나라가 문서를 탈취했습니다. 기밀성깨짐

 

  • A나라가 B나라에게 문서를 전달하는데, 이번에는 C나라가 위조된 문서를 전달시켰습니다. → 무결성깨짐

 

  • B나라는 A나라가 보내준 문서를 잘 받았습니다. ( 사실 C나라가 위조시킨 문서 ) → 가용성깨짐

 

 

가용성을 지키는 방법

  • 문서를 보낼 때, 문서를 지킬 전사를 함께 보내는 겁니다.
    • BUT, C나라에 더 강한 전사가 있다면 → 똑같이 탈취

 

 

기밀성을 지키는 방법

 

  • 문서를 A라는 열쇠로 잠그고(암호화) 보냅니다. → 기밀성을 지킴
    • 하지만, C나라가 문서를 열지 못할지 몰라도 그건 B나라도 마찬가지입니다. 열쇠 전달 문제가 발생하게 됩니다.

 

 

누가 보낸 거지?

  • A가 B에게 내일 10시에 보자고 보냈다.
  • 그러자 B에게 알았다고 응답이 왔다. 하지만 다음날 B는 나오지 않았다.
  • ???? 왜?????

 

B가 보낸 게 맞을 까?

 

 

A가 보낸게 맞을 까?

 

누가 보냈는지에 대한 문제가 발생합니다.

 

 

 


앞에 두 가지 문제가 있었습니다.

  1. 열쇠 전달 문제
  2. 누가 보냈는가에 대한 문제, 인증문제를 어떻게 할 것 인가

 

RSA( 암호화 )

  • Public Key : 공개 키
    • 자신의 블로그나 오픈된 공간에 공개해도 문제 되지 않는 키
  • Private Key : 개인 키
    • 오직 자신만 알고 있어야 하는 키

 

공개키로 암호화를 했다면, 개인키로만 열 수 있습니다.

만약 개인키로 암호화를 했다면, 공개키로만 열 수 있습니다.

 

이전 문제에 RSA를 적용하여 해결해 봅시다.

  • A가 비밀번호를 보낼 때, B의 공개키로 암호화를 한 뒤 보냈다.
  • 하지만, 중간에 C가 문서를 가로챘다. BUT C는 내용을 볼 수가 없다. WHY? B의 공개키는 반드시 B의 개인키로만 열 수 있기 때문!

 

< 열쇠 전달 문제 해결 >

 

 

 

그렇다면 누가 보냈는지는 어떻게 인증할 수 있을까?

  • 위에서 B의 공개키는 반드시 B의 개인키로만 열 수 있다고 했다.
  • 이를 반대로 적용하면
  • A가 보냈다는 의미로 자신의 개인키로 한번 더 잠그는 것이다. ( 이중 잠금 )
  • 만약 A가 보낸 게 맞다면 무조건 A의 공개키로 열려야만 한다는 것이다!

 

 

B는 이제 문서를 받았을 때, 아래와 같이 처리를 합니다.

인증
  • A의 공개키로 문서를 열어본다.
    • 열림 → A가 보낸 것이 확실하다. ( 인증 완료 )
    • 안 열림 → A가 보낸 것이 아니므로 열지 않는다.
암호화
  • B의 개인키로 열어본다.
    • 열림 → 암호화가 잘 되었다. ( 암호화 완료 )
    • 안열림 → 암호화가 되지 않았다.

 

 

공개키 → 개인키 ( 암호화에 주로 사용 )
개인키 → 공개키 ( 전자 서명에 주로 사용 )

 

 

[ 참고자료 ]

728x90
반응형

댓글