[AWS EKS] EKS Security 1 - 기초: 암호화와 인증 실습

주영·2025년 3월 12일
0

AWS EKS Workshop Study 3기

목록 보기
18/31

이 글은 CloudNet@팀의 AWS EKS Workshop Study(AEWS) 3기 스터디 내용을 바탕으로 작성되었습니다.
AEWS는 CloudNet@의 '가시다'님께서 진행하는 스터디로, EKS를 학습하는 과정입니다.
EKS를 깊이 있게 이해할 기회를 주시고, 소중한 지식을 나눠주시는 가시다님께 다시 한번 감사드립니다.
이 글이 EKS를 학습하는 분들께 도움이 되길 바랍니다.

1. 공유 비밀키 암복호화 실습

공유 비밀키 암호화 방식에서는 하나의 비밀키를 사용하여 데이터를 암호화하고 복호화합니다. 여기에서는 DES(Data Encryption Standard) 알고리즘을 사용하여 암복호화 실습을 진행합니다.

1.1 DES 암호화 테스트

  • 암호 알고리즘 테스트 사이트: DES 암호화
  • 암호화 과정
    • Passphrase: aews-study
    • Input: chillguy
    • Output: 53616c7465645f5fe317d30fea59ab95f529fea99cdc914a56ac78aecf911fa8
  • 복호화 과정
    • Input: 위에서 암호화된 Output 값을 입력
    • Passphrase: aews-study 입력
    • Output: 원래 문자열(chillguy)이 복원되는지 확인
  • 암호화 추가 테스트
    • Passphrase: aews-study
    • Input: kubernetes study
    • Output: 53616c7465645f5f5dbf8d9b32b2286e80f8214a364e1130f683fa52df46b7bd020a9ab5e06b15d1
    • 암호화된 문자열 길이를 확인하여 데이터 크기에 따른 차이 확인

2. 단방향 해시 알고리즘 실습

단방향 해시 함수는 입력값을 일정한 길이의 해시값으로 변환하며, 복호화가 불가능합니다. 여기서는 MD5 해시 알고리즘을 실습합니다.

2.1 MD5 해시값 생성

  • 테스트 사이트: MD5 해시 생성
  • 입력값 테스트
    • 1, 11, 111, kubernetes를 입력하고 출력값 비교
    • 메시지의 길이가 달라도 해시값이 일정한 크기인지 확인
    • 동일한 입력값을 가진 다른 사용자와 해시값을 비교
  • 출력값
    • 1의 MD5 해시값: c4ca4238a0b923820dcc509a6f75849b
    • 11의 MD5 해시값: 6512bd43d9caa6e02c990b0a82652dca
    • 111의 MD5 해시값: 698d51a19d8a121ce581499d7b701668
    • kubernetes의 MD5 해시값: b76e98af9aaa680979bf5a65b2d5a105
    • 다른 사용자의 kubernetes의 MD5 해시값: b76e98af9aaa680979bf5a65b2d5a105
      => 동일함

3. 공개키 암호 방식 (RSA)

공개키 암호화 방식은 RSA(Rivest-Shamir-Adleman) 알고리즘을 이용하여 데이터를 암호화하고 복호화하는 방식입니다. 공개키(Public Key)는 암호화에 사용되며, 개인키(Private Key)는 복호화에 사용됩니다.

3.1 RSA 키 생성

  • 테스트 사이트: RSA Key Generator
  • RSA 키 페어 생성
    • Private KeyPublic Key를 생성하여 보관
      -----BEGIN PRIVATE KEY-----
      MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANJ9FjmD+MCBE/EW
      2WESGL5+iHe/wh2TvWIGOS3uhXOdYwuGNcqT1nCBksKnXUlqS9OwuGCV6bIBsvqg
      pmhnKhUgtEghRE2QxFMNsWTBHdYNL7Dkqcqqii2flOySZEfm/2sQ7ib2IUORBM9Q
      jKZTRIqRfrHdskmPp6YciqUTzIwbAgMBAAECgYEAgN/xgZmZ7lOZoB07T0HDQK88
      YwVXlsBkTeY9kC/gKZ+NivrLaJMH0q6i6ueKKG8aqiwjV4+yHDkKGoXOHVI84sGK
      IWtD0QMIg5rJyaXAsB2wrWgQ0s+2VuFaVs2GNdskDLBoXYgz1WiYvoZxrp4F7V5i
      hYLVeNQhpHF1n2QmyeECQQD7qe5SVJ+X6dKazA4SB0yYdxoFUJbwi+JJqdCZAX9F
      LouJLoJ4E4s+1mxwu9v8SpsaCdBw+5q5PjIjiiZQvd6JAkEA1h2JExQYJBl65xpx
      MGGKOBgaLctVOvmRwkrbnVSFr366A3YBjw2/fUHgRSPPykH36WB3LYiVfIDZ0H03
      gztMgwJAdMR716d8BThwh3J2dNb+Kx/X6u9hmWrOK++m4ddX/fmCtLvnvV8UFKvY
      1NXVVFIpdQNou4OCXsEE8oh/DqeKQQJBAM4ZEfeOUQp2iEnptugWC4ChGpnX7gtd
      bQMzIR/Y2vGpLw3jye5UEm1UOrbymLGcPDClDTKEFTgJox+/V+725lcCQEwBqMcN
      qE00QO/YptV1IXee9NWUiAC8ljr+RXWJSz+JCVndZj2v8JEoSt8JlY8pytjK0okb
      lg6Cru57Tt5rOVY=
      -----END PRIVATE KEY-----
      -----BEGIN PUBLIC KEY-----
      MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSfRY5g/jAgRPxFtlhEhi+foh3
      v8Idk71iBjkt7oVznWMLhjXKk9ZwgZLCp11JakvTsLhglemyAbL6oKZoZyoVILRI
      IURNkMRTDbFkwR3WDS+w5KnKqootn5TskmRH5v9rEO4m9iFDkQTPUIymU0SKkX6x
      3bJJj6emHIqlE8yMGwIDAQAB
      -----END PUBLIC KEY-----

3.2 RSA 암호화 및 복호화 실습

  • 암호화 과정
    • Public Key를 입력
    • Input: mypass!
    • Output: 329b94eebe9c81ea81af50ffa654e69092238f0c98d76e91b8afa89182af7e48e1babd7fe9e9980f7dd7de52e7df3b8c0034527aeaa4aff5315fe3710f753dcdc63275c4991f057a040900b7ff0a3ee78145efd4f85a2dab9bd423e24b029e3a18389f5ff786b209fdab67b071afc053645c7458b20029e3473f6b3aa3f49e93
  • 복호화 과정
    • Private Key를 입력
    • Input: 암호화된 Output 값을 입력
    • Outpu: 원래 문자열(mypass!)이 복원되는지 확인

4. RSA 디지털 서명(Sign) 방식 실습

RSA 디지털 서명은 특정 데이터가 위변조되지 않았음을 보장하는 방법으로, 개인키(Private Key)로 서명을 생성하고 공개키(Public Key)로 서명을 검증합니다.

4.1 RSA 서명 생성

  • Sign Message
    • Private Key를 입력
    • Input: mysign!
    • Output (서명 값): 96ab932f12c3c210959d857cf12f83edf08a6bbfc19909c42af9d0bba51cdc47ee8798b87ac7cc667f5c55083cf0684a6af8dbd2b0f9572d937c15517bdf38206bc2521c6b64592f34268654ea6b433a936517ca1bbda91a80f4890b23e73d553fd519559ba8d9e38697e4219f97a96ded84ca80be3e931539722e95b500b56a

4.2 RSA 서명 검증

  • Verify Signature
    • Public Key를 입력
    • Signature-Data: 위에서 생성된 서명 값을 입력
    • Input: mysign!
    • 결과 확인: 검증이 성공하면 데이터가 위변조되지 않았음을 의미

0개의 댓글