kookmin-sw / timebank-2023-docs

시간은행 문서화
GNU General Public License v3.0
1 stars 0 forks source link

FNB 팀 개발 현황 #43

Open why-arong opened 11 months ago

why-arong commented 11 months ago

api 별 데이터 플로우에 맞는 코드 작성

API별 data flow

API 보안을 위한 HMAC 적용

  1. Pay 앱에서 FNB 으로의 요청
    • 요청 생성: pay 앱은 송금 요청 데이터를 생성.
    • HMAC 생성: pay 앱은 이 데이터와 공유된 비밀키를 사용하여 HMAC을 생성.
    • 요청 전송: pay 앱은 송금 요청 데이터와 함께 HMAC을 FNB에게 전송.
    • HMAC 검증: FNB는 받은 데이터로부터 HMAC을 재계산하고, 전송된 HMAC과 비교하여 요청의 무결성과 출처를 확인.
  2. FNB에서 Pay앱으로의 요청
    • 요청 변환: FNB는 pay 앱으로부터 받은 송금 요청을 bank 앱이 이해할 수 있는 형태로 변환.
    • HMAC 생성: FNB는 변환된 데이터와 FNB와 bank 앱 간에 공유된 비밀키를 사용하여 새로운 HMAC을 생성.
    • 요청 전송: FNB 변환된 데이터와 함께 HMAC을 bank에게 전송.
    • HMAC 검증: bank 앱은 받은 데이터로부터 HMAC을 재계산하고, 전송된 HMAC과 비교하여 요청의 무결성과 출처를 확인.

      보안 고려 사항

    • 비밀키 관리:각 앱은 서로 다른 비밀키를 공유하고 있어야 함. 즉, FNB와 Pay 간의 키는 FNB와 Bank 간의 키와 다르게 설정되어야 함.
    • 키 보안: 비밀키는 안전하게 보관되어야 하며, 무단 접근이나 유출을 방지하기 위한 조치가 필요.
    • 키 갱신: 정기적으로 비밀키를 갱신하여 보안을 유지하는 것이 좋음. → 나중에 고려

그러면 HMAC 비밀키는 어떻게 만듦?

logging 남기기

Schema({ timestamps: true })
export class Log {
  @Prop({ required: true })
  op: string;

  @Prop({ required: true })
  from?: string;

  @Prop({ required: true })
  to?: string;

  @Prop({ required: true })
  amount?: string;
}

현재는 간단하게 이러한 스키마로 저장 logging 스키마는 논의 후 조정 필요