현재 WebSocket연결을 통해 서버가 클라이언트로 퀴즈 데이터를 보내준다.

하지만 동시 렌더링을 위하여 어느정도 여유시간을(현재 5초)를 기다린 후 퀴즈를 보여준다.

이때 5초전에 미리 문제를 받기때문에 사용자는 브라우저의 개발자도구에서 약 5초전에 문제를 미리 볼 수 있다.

그렇기 때문에 공정한 퀴즈를 위해 클라이언트로 보낼때 문제 내용을 인코딩해 보낼 필요가 있다 생각했다.

그리고 클라이언트에서 서버로 보내는 메시지에는 민감한 정보가 담기지 않았고 wss로 통신하고 있으므로 일단 암호화의 필요성을 느끼진 못했다.

그렇기 때문에 일단 간단하게 서버→클라이언트 의 경우에서만 암호화를 진행해보려한다.

WSS 통신의 특징:

  1. 모든 데이터는 TLS 계층에서 암호화
  2. 브라우저의 개발자 도구에서도 복호화된 데이터를 볼 수 있음 (브라우저가 TLS 종단점이기 때문)

[서버] -(암호화된 데이터)-> [네트워크] -(암호화된 데이터)-> [브라우저] -(복호화)-> [개발자 도구]

wss로 통신해도 결국에서는 사용자가 못보게 하려면 암호화 필요

Screenshot 2024-11-14 at 20.23.07.png

서버에서 보낸 문제를 클라이언트에서 복호화 해야하므로 대칭키 암호화가 필요하다.

aes 대칭키 암호화에 대해서는 나중에 깊이 알아보는 것으로 하고 일단 프로젝트에 어떻게 적용할지 생각해보자.

https://devpoong.tistory.com/88

현재 gateway