대칭키 알고리즘(Symmetric key algorithm)
정의: 동일한 키를 암호화와 복호화에 사용하는 알고리즘
예시: DES(Data Encryption Standard), AES(Advanced Encryption Standard), Blowfish
AES 알고리즘을 구체적으로 이해해보자
- 대칭키 길이(bit)에 따라 사용하면 AES-128, AES-192, AES-256 이렇게 불린다.
- 암호화
- SubBytes: S-박스라고 하는 고정 치환 테이블에서 해당 바이트에 해당하는 바이트로 대체
- ShiftRows: 한 행 안에서 바이트 단위로 자리바꿈이 수행
- MixColumns: 입력 블록의 각 열에 고정 행렬을 곱하여 새 열을 생성
- AddRoundKey: 입력 블록과 키를 XOR 연산. 이 키는 매회 keySchedule에 의해 바뀜
- 복호화
- AddRoundKey 의 역산
- MixColumns 의 역산
- ShiftRows의 역산
- SubBytes의 역산
참고: https://www.appsealing.com/kr/imprortance-of-applying-aes-algorithm/#:~:text=AES%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%80%20%EB%A7%8E%EC%9D%80%20%EB%B3%B4%EC%95%88,%EC%9D%98%20%EB%B3%B4%EC%95%88%EC%9D%84%20%EC%A0%9C%EA%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4.
https://blog.naver.com/PostView.naver?blogId=wnrjsxo&logNo=221711255389
https://velog.io/@dainel/AES256-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%95%94%ED%98%B8%ED%99%94-%EB%B0%8F-%EB%B3%B5%ED%98%B8%ED%99%94
https://camcap.tistory.com/entry/AES-%EC%95%94%ED%98%B8%ED%99%94
비대칭키 알고리즘(Asymmetrc key algorithm)
정의: 암호화에는 공개키를, 복호화에는 개인키를 사용하는 알고리즘
예시: RSA(Rivest, Shamir, Adleman), ECC(Elliptic, Curve Cryptography)
RSA 알고리즘을 구체적으로 이해해보자
- 매우 큰 수의 소인수분해는 힘들다는 점을 이용함
- 오일러 정리를 이용한 알고리즘
- RSA 알고리즘에 사용되는 값들을 이해해보자
- 공개키: (e,N) 비밀키: (d, N)
- p,q: 최소한 1024bit 이상이고 서로소인 p,q를 선택
- N: p와 q를 곱한 값
- l: p-1과 q-1값의 최소공배수인 l
- l=lcm(p−1,q−1)
- M: 평문. 암호화하고자 하는 메시지
- C: 암호화된 메시지
- e: l보다 작으면서 l과 서로소인 값 e
- gcd(e,l)=1gcd(e,l)=1gcd(e, l) = 1 (1<e<l1<e<l1 < e < l)
- d: 아래 식에서 e 곱셈의 역원인 d
- e×d mod l=1 (1<d<l1<d<l1 < d < l)
- exd 모듈로 l 연산
- 암호화
- 복호화
참고: https://gngsn.tistory.com/96
https://richong.tistory.com/67
https://miho273.tistory.com/40
RSA 암호화 - RSA의 작동 원리
RSA 암호화 RSA 암호화 - 개념편 RSA 암호화 - 수학편: RSA와 소수 RSA 암호화 - 수학편: 나머지 계산 RSA 암호화 - RSA의 동작 방식 RSA 암호화 - RSA의 작동 원리 [알림] 이 글은 RSA 암호화 시리즈의 5편입니
miho273.tistory.com
TLS 암호화
- TLS(SSL)은 브라우저와 서버 간 사이 암호화할 때 사용됨
- 대칭키와 비대칭키 방식을 같이 사용함
- 처음에 대칭키를 RSA 알고리즘으로 암호화 하여 공유하고 그 다음부터는 공유한 대칭키를 이용하여 통신함
- 참고: https://babbab2.tistory.com/4
'끝나지 않는 개발스터디' 카테고리의 다른 글
정규표현식(Regular expression/regexp/regex) (0) | 2024.03.06 |
---|---|
파일 구조(File structure) (0) | 2024.03.02 |
압축(손실압축, 비손실 압축) (0) | 2024.02.25 |
Fork 포크 (0) | 2024.02.22 |
socket study-4 (0) | 2024.02.21 |
댓글