Compono-Team / I-backend

4 stars 0 forks source link

[BE] DB 암호화 방식 결정 #17

Closed BomLee427 closed 10 months ago

BomLee427 commented 10 months ago

논의사항

DB 암호화 방식 결정

상세

채영님께서 DB 암호화 방식은 어떻게 하는 것이 좋을지 여쭤봐주셔서 스터디 후 결정하기로 했습니다. (참조: https://www.notion.so/231221-e7d5d1b9dde54914a9c0da17546eb070?pvs=4) 논의 자체는 디스코드에서 하면 될 것 같지만, 내용 기록 및 일정관리에 용이할 것 같아 우선 이슈로 작성해 둡니다!

논의 결과 (updateAt. 231228)

chea-young commented 10 months ago

보통 대칭키로 암호화하는 Converter class를 생성하고, @Convert 어노데이션을 이용하여 암호화하고자 하는 데이터에만 붙여주는 식으로 사용하였었습니다 암호화하는데 다양한 방식이 있어서 다른 분들의 의견을 듣고 여러가지 사용 케이스를 확인 후 결정하면 좋을 것 같습니다!

코드 예시 올려놓습니다! Marketplace-Backend-feature-db-converter.zip

참고 URL: https://sungjk.github.io/2020/11/28/data-encryption-entity.html

jifrozen0110 commented 10 months ago

저도 보통 채영님과 같이 작업하였습니다! 어떤 컬럼을 암호화하면 좋을지 결정하는것도 좋을 것 같습니다!.(이메일, 닉네임 <- 할지말지..)

chea-young commented 10 months ago
  1. 암호화 알고리즘 첨부한 이미지는 KISA 한국인터넷 진흥원에서 권고하는 알고리즘 리스트입니다(2018년 기준인데 현재 해당 날짜 이후에 업데이트된 정보가 없는 것을 확인했습니다) @Convert 에 사용할 대칭키 암호 알고리즘 중, 논의를 통해 알고리즘 확정하면 좋을 것 같습니다! (Seed, AES 등) 스크린샷 2023-12-24 오후 5 32 53

암호화 알고리즘 리스트

  1. 암호화 설정 칼럼 현재는 설계한 Entity 중 아래 데이터만 존재하면 우선 설계된 데이터 중, 확정하면 좋을 것 같습니다 우선 연락처, oauthProviderUniqueKey는 암호화는 것이 좋을 것 같다고 생각하는데 다른 분들의 의견이 궁금합니다!!

PreBook

User

soonhankwon commented 10 months ago

저도 연락처, oauthProviderUniqueKey는 암호화하는것이 좋다고 생각합니다. @Convert에 사용할 알고리즘은 리서칭 & 상의후에 결정하면 좋을것 같습니다 :)

chea-young commented 10 months ago

Entity 암호화 설정 방법

@Entity @Table(name = "user") public class User {

@Convert(converter = AES256ToStringConverter.class)
private String email;

}