231121

한라봉봉·2023년 11월 21일
0

기업연계 BE 교육 TIL

목록 보기
30/58

암호화

수업필기

  1. 단방향(로그인) -> SHA256, SHA512
  • 해시코드 -> 타인이 알 수있음
  • 완전하게 암호화 하려면 salt를 추가함
  1. 양방향(상대방이 있어야 함)
  • 비공개키
  • 공개키(은행)

[암호화] 양방향 vs 단방향 암호화 feat. SHA256
https://study-easy-coding.tistory.com/153

해시코드를 이용한 단방향 암호화

한번 해시코드로 암호화한 비밀번호는 복호화로 되돌릴 수 없다.

서로 대칭된 비공개키를 이용한 양방향 암호화(암호화+복호화)

서로 동일한 키를 비공개로 알고있고, 그걸로 인증

서로 비대칭된 공개키를 이용한 양방향 암호화(암호화+복호화)

단방향 암호화의 문제점

'레인보우 테이블의 존재'

  • 해시함수(MD-5, SHA-256등)를 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 표가 존재한다.

이처럼 이미 레인보우 테이블이란 게 존재해서
DB를 털어버리고, 해시함수로 저장되어 있는 PW 값을 레인보우 테이블과 비교해 버린다면...?

이렇게 되면 결국 단방향 암호화도 안전한 방식은 아니라고 할 수 있다.
그래서 salt라는 것이 나오게 된 것이다.

Salt 란? (단방향 암호화 + Salt)

salt는 소금이라는 뜻으로 양념을 친다고 생각하자
유저가 회원가입 시 입력한 PW + 특정 문자열(salt)을 조합 -> SHA256 알고리즘을 통해 해시함수로 만드는 것이다.

프로시저

https://cafe.naver.com/hamminglab/20345(https://wakestand.tistory.com/518)
https://cafe.naver.com/hamminglab/21561(https://kdg-is.tistory.com/239)

암호화기법 JSP

https://cafe.naver.com/hamminglab/21578

DB 백업과 복원

Mairadb - DB 백업 / 복원하기_2 - 디비버

https://cafe.naver.com/hamminglab/21610(https://jaimemin.tistory.com/2182)

Mairadb - DB 백업 / 복원하기_1 - CLI

https://cafe.naver.com/hamminglab/21609(https://mollangpiu.tistory.com/185)

기타

배가운동? 코드 자기자신을 복사해 다시 삽입하므로 2의 제곱으로 늘어나기때문에 테스트 row를 생성시에 좋다.

INSERT INTO members (memid, passwd)
    SELECT memid, passwd 
        FROM members;

과제

자바 프로젝트에서 회원을 저장한 DB가 암호화 되어 있지 않아 누구나 알 수있었고 그것을 해결 하기 대안을 찾아 보았습니다.

*자료조사
1. MairDB Security - 교재내용
2. 한국인터넷 진흥원에서 개인정보 암호화 관리서
3. sha25 & salt
4. 시프링큐리트 등을 참조

  1. DB에서
    1) 단일암호화 방식

    2) 양방향 방향을

  2. 자바에서 sha256Hash / sha512
    emn178.github.io/online-tools/sha256.html
    1) 암호화

2) 암호화는 가능하나 누구나 추론해서 해독이 가능하다는 문제
샤(Sha256/521) 패스워드는 해독이 가능함. - 레인보우 테이블

  1. 소금 뿌리기 Salt
    https://velog.io/@postlist/JAVA-SHA-256-%EC%95%94%ED%98%B8%ED%99%94-salt-%EC%82%AC%EC%9A%A9
  1. 보다 편리한 암호화 방법 - 차기 Spring Security

232 AWS 풀스택 -> 2차발표 -> 4조
1. sha256Hash : 암호화 및 글자 제한 및 정규화 사용
BCrypPassword 방식은 SpringSecurity
docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoder.html
=> 참조영상 https://www.youtube.com/watch?v=8I5Zk_pFIns - 매번 암호는 달라야 한다.
2. OPenAPI : 주소

  1. MVC2 모델

  2. 부트스트랩과 슬라이드 바 사용

  3. 좌석배치 기법 -> 예약좌석 / 달력등에 응용

profile
백엔드 개발공부 로그를 기록합니다

0개의 댓글