서버단 암호화는 어떻게 하나요?

조회수 4106회

안녕하세요. 인터넷 패킷 암호화는 여러 분들이 도움을 주셔서 구현을 해보았습니다. 감사합니다.

근데 서버단 암호화는 어떻게 하는지 궁금합니다. 공개키-비공개키 암호화를 진행한다고 치면 DB 내용을 키값을 주기적으로 바꿔가며 암호화 하여 갱신해야 하는 건지 ㅡㅡ; 고견 부탁드립니다. 그리고 제가 KT 서버를 임대해서 쓰고 있는데 그냥 서버용 백신 하나 깔면 만사 오케이 인지 그것도 궁금합니다. 감사합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

3 답변

  • 다른분들이 말씀해주신대로 data in transit 보호를 잘 해주셨다면, 그 다음은 해당 정보를 가지고 있는 서버의 보안을 신경쓰셔야겠죠.

    서버의 데이터는 암호화하는 의미가 없다고 말씀해주셨는데, 꼭 그렇지만은 않습니다. 단방향 해시가 아니라도 PBKDF2 같은 방법으로 클라이언트만이 알고 있는 정보를 기반으로 암호화키를 생성하여 암호화하는 경우에는 서버가 털리더라도 암호화된 정보를 풀 수 있는 키를 구하기는 쉽지 않습니다.

    물론 서버를 해킹당해 공격자가 들어오는 네트워크를 감시하고 있다면 중간에 키생성에 필요한 패스워드 등의 정보를 훔칠 수 있지만, 이는 그 기간동안 네트워크 감시를 통해 노출된 클라이언트들의 데이터만 복호화 할 수 있죠. 그냥 보호없이 방치한 데이터보다는 훨씬 안전하다는 뜻입니다.

    요즘엔 컴퓨팅 파워가 많이 좋아져서, 굳이 퍼포먼스가 정말 큰 이슈가 아닌이상 해시는 MD5는 쓰지 마시고 SHA1이상을 (개인적으로는 SHA256 추천) 사용하시기 바랍니다. 그리고 암/복호화 알고리즘은 언급해주신 DES나 3DES는 실질적으로 보안성이 바닥이 난 관계로 사용을 비추천드리고, AES를 쓰시면 됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 데이터의 속성에 따라 단방향, 쌍방향 암호화로 분류를 해보면

    패스워드같이 복호화가 필요없는경우는 MD5, SHA1같은 단방향 암호화를 사용하시고 주민번호, 채팅내용같이 복호화가 필요한 경우는 DES, DES3, ENC, COMPRESS 같은 방법을 사용하시면 됩니다.

    보통은 키가 노출되는 게 아니라서 주기적으로 키갱신 까지는 안 하셔도 될 것 같고, 백신이 데이터 유출시 데이터를 보호해 주지는 못 하니 민감한 정보들은 암호화를 잘 적용 하셔야 할 듯합니다.

  • 패킷 암호화를 잘 하셨다면 서버단은 서버에 자장된 데이터를 암호화 하는게 아니라 서버의 문단속을 잘하셔야 하는겁니다.

    집으로 비유하자면 집에 있는 모든 서랍을 꽁꽁 잠궈두고 열쇠 뭉치를 책장속에 넣어두었다 하여도 도둑이 들어와서 책장의 열쇠를 찾기만 하면 모든 서랍은 다 열리게 되는겁니다. 암호화도 같은겁니다. 데이터를 아무리 암호화를 잘해두어도 결국 그 키는 서버내의 conf나 코드상에 적혀있을 수 밖에 없습니다. 결국 해커가 들어와서 그 키를 찾기만 하면 암호화라는것 자체가 의미가 없어집니다. 그래서 보통은 서버내의 데이터는 암호화를 하지 않습니다. 서버 관리자도 보면 안될 개인의 패스워드 같은 정보는 일방향 암호화(hash)를 해서 저장해두는것이구요.

    요약) 해커가 서버에 침투하지 못하게 문단속을 해야하는거지 서버내의 데이터들을 통째로 암호화하지는 않아요~

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)