Base64 인코딩은 바이너리 (binary) 데이터를 ASCII 영역의 문자열로 변환하는 인코딩 방식입니다.
이 방식은 바이너리 데이터를 텍스트 형식으로 저장하거나 전송할 필요가 있을 때 주로 사용됩니다.
Base64는 64개의 ASCII 문자를 사용하는데, 이는 A-Z, a-z, 0-9, +, / 로 구성되며, 결과 데이터의 끝에는 필요에 따라 '=' 문자를 사용하여 패딩을 할 수 있습니다.
Base64 인코딩 과정
입력 바이너리 데이터를 8비트 단위로 나눕니다.
"Hello" 의 ASCII 코드는 72,101, 108, 108, 111 입니다.
이를 이진수로 표현하면 01001000, 01100101, 01101100, 01101100, 01101111
이 데이터를 6비트 단위로 재그룹핑합니다. 이때 필요하다면 끝에 비트를 추가하여 길이를 맞춥니다.
3바이트(24비트)의 입력 데이터를 4개의 6비트 단위로 나눕니다.
8비트를 6비트로 변환을 최적화 할 수 있도록 최소공배수인 24비트씩 처리
6비트 단위로 재그룹핑하면 010010, 000110, 010101, 101100, 011011, 000110, 1111입니다.
각 6비트 값을 Base64 테이블에 정의된 문자로 매핑합니다.
여기에 맞춰 Base64 문자열로 변환하면 "SGVsbG8"입니다.
마지막으로, 인코딩된 데이터의 길이가 4의 배수가 되도록 '=' 문자로 패딩합니다.
4의 배수가 되도록 =로 패딩을 해줍니다. "SGVsbG8="
RSA
Ron Ribest, Adi Shamir, Leonard Adleman 가 개발한 암호 방식
인터넷 보안, 전자상거래에서 널리 사용
2개의 대형 소수의 곱셉은 쉽지만, 그 반대인 소인수분해는 매우 어렵다는 수학적 성질을 기반으로 하고 있습니다.
특징
비대칭성
암호화와 복호화에 사용되는 키가 다르기 때문에 비대칭성을 가진다고 표현
"공개키 암호화" -> "비밀키 복호화"
"비밀키 암호화" -> "공개키 복호화"
안정성
RSA의 안전성은 큰 소수의 곱 분해 문제에 기반을 두고 있습니다. 이론적으로, 공개 키와 비밀 키를 생성하기 위해 사용되는 두 개의 큰 소수를 알지 못하면, 비밀 키를 효율적으로 계산하는 것은 매우 어렵습니다. 이로 인해 RSA는 현재 사용 가능한 컴퓨터로는 실질적으로 깨트리기 어렵다고 여겨집니다.
확장성
RSA 암호화는 키의 크기가 커질수록 보안성이 향상됩니다. 일반적으로 사용되는 키의 길이는 1024비트, 2048비트, 3072비트 등입니다. 키가 길수록 안전하지만, 그만큼 계산에 더 많은 시간이 소요됩니다.
1) "공개키 암호화" -> "비밀키 복호화"
공개 키는 누구에게나 공개될 수 있으며, 데이터를 암호화하는데 사용됩니다.
비밀키는 비밀로 유지되며 암호화된 데이터를 복호화하는데 사용됩니다.
비밀키를 가진 사용자만이 복호화를 할 수 있습니다. (데이터 유출 방지)
예시 >>
A사가 B사에게 민감한 데이터를 보내야 할 경우에
A사는 "B사의 공개키" 로 데이터를 암호화하여 암호화된 데이터를 보내고
B사는 자신이 가진 "B사의 비밀키" 로 복호화하여 데이터를 읽습니다.
비밀로 유지되는 비밀키로 복호화하기에 데이터 유출이 방지될 수 있다고 보는겁니다. (공개키를 알고 있다고 해서 데이터를 알 방법이 없음.)
2) "비밀키 암호화" -> "공개키 복호화"
JWT (Json Web Token), 공인인증체계 와 같은 디지털서명을 만드는데 사용합니다.
디지털서명
발급자 인증 : 간단하게 표현하자면 디지털서명은 "내가 발급한 토큰이다!" 라고 증명하는 것입니다. 말그대로 디지털서명 발급자가 비밀키로 암호화를 하기 때문에 발급자를 인증할 수 있다는겁니다.
데이터 무결성: 데이터가 변조되지 않았고 신뢰할 수 있다는 의미입니다.
공개키를 안다면 누구나 열 수 있기에 보안 위험성 존재하지만, 발급자가 보낸것이 100% 신뢰 가능하다는 점
https://manage.sslforfree.com/dashboard
cname 추가
https://velog.io/@layl__a/SSLFORFREE-%EC%97%90%EC%84%9C-%EB%AC%B4%EB%A3%8C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%EB%B0%9B%EA%B8%B0