◎ 키 전달시 보안에 대한 주의 필요 ◎ 송 / 수신자 간에 동일한 키를 공유해야 하므로 많은 사람들과의 정보 교환 시 많은 키를 관리해야 하는 어려움
사용 예
▷ jwt (Json Web Tokens)
하나의 비밀키를 사용하여 토큰을 서명하고 검증 -> 토큰을 발급한 서버와 검증해야 하는 서버가 같은 비밀키를 공유해야 함 - 이때, HMAC (Hash-based Message Authentication Code) 이용하여 구현된 알고리즘 HS256, HS384, HS512 을 사용.
▷ 세션 쿠키 암호화
웹 애플리케이션에서 사용자가 로그인할 때 서버는 사용자의 세션 ID를 생성하고 이를 대칭키를 사용하여 암호화하여 쿠키에 저장
▷ 이외에도
- 모바일 장치에 액세스 : 비밀번호, 패턴, 지문 인식 등을 사용하여 데이터를 암호화 복호화
- 컴퓨터나 모바일 장치 : 개인 파일이나 중요한 문서를 암호화할 때 대칭키 암호화(비밀번호)
- 온라인거래 / ATM 거래: 사용자의 금융 정보, 개인 정보, 거래 세부정보 를 암호화
비대칭키 (Asymmetric Key) 암호화
암호화 복호화 할때 다른 키( 공개키, 개인키)를 이용하는 방식, 공개키 암호화라고도 함
장점
단점
여러 송신자가 하나의 공개키로 암호화를 수행하기 때문에 사용자가 많더라도 키를 관리하는 데에 유리
복잡한 수학 연산을 사용하기 때문에, 대칭키 암호에 비해 효율성이 떨어질 수 있음
암호화 및 복호화 하는 방식
① 송신자는 수신자의 공개키를 획득
② 송신자는 수신자의 공개키로 데이터를 암호화
③ 송신자는 암호화된 데이터를 수신자에게 전달
④ 수신자는 자신의 비밀키(개인키)로 암호화된 메세지를 해독(복호화)하여 데이터를 확인
사용 예
▷ 전자 서명(Digital Signature)
공개키 암호를 거꾸로 활용하는 방식, 송·수신자의 역할이 반대로 되어, 개인키를 소유한 사람만이 전자 서명 알고리즘을 통해 *평문에 대한 서명 값을 생성가능 생성된 서명 값에 대하여 공개키를 이용하면 평문을 검증할 수 있기 때문에, 누구나 그 서명을 검증할 수 있게 되는 방식
*평문 (plain text) : 암호학에서 평문은 암호 알고리즘의 입력 대상으로 예정이 된 암호화되지 않은 정보를 의미
- 소프트웨어가 변조되지 않았으며 특정 개발자에 의해 생성되었음을 보증할 때도 사용
▷ HTTPS 로 통신시 SSL/TLS 인증서를 사용하는 과정
웹 서버와 클라이언트 간의 안전한 통신을 보장하기 위해 SSL/TLS 인증서가 사용되는 과정에서 비대칭키 암호화 방식을 적용 ①(인증서 제공) 서버가 웹 서버는 SSL/TLS 인증서와 함께 공개 키를 클라이언트에게 제공
② (인증서 검증) 클라이언트가 인증서에서 공개키 획득
③(대칭키 생성) 클라이언트가 무작위로 대칭키를 생성 공개키를 이용하여 암호화
④(대칭키 암호화 및 전송) 공개키를 이용하여 암호화 한 후, 암호화된 대칭키를 서버에 전송
⑤(대칭키 복호화)서버에서 개인키를 이용하여 복호화하여 대칭키 획득
⑥ (세션 쿠키 암호화) 이 키를 사용하여 통신 과정에서 데이터를 안전하게 암호화하고 복호화
- 이 부분은 대칭키 암호화 방식
▷ 메시지 암호화
발신자는 수신자의 공개 키로 메시지를 암호화하고, 수신자는 자신의 개인 키로 이를 복호화하는 방식
메세지가 전송되는 과정에서 읽히거난 변경되는 것을 방지 : 웹 기반 이메일이나 메시징 앱에서 사용
▷ jwt 비대칭키 방식 (RS256, RS384, RS512, ES256)
토큰 발급자는 개인 키를 보유하고 비밀로 유지하며, 수신자는 공개 키를 사용하여 토큰의 서명을 검증가능