티스토리 뷰
1. 해싱은 Checksum, Fingerprint, Hash, CRC 같은 용어로도 불린다.
1-1 해싱은 메시지를 특정한 방식으로 계산하여 만든 메시지 정보를 저장하지 않는 결과 값이다.
1-2 원본의 정보를 저장하지 않기 때문에 해싱값으로는 원본을 복구할 수 없다.
2. 해싱 알고리즘 요구사항
2-1 특정한 해싱 결과를 임의로 계산하여 만들 수 없다.
2-2 해시 값으로 원 메시지를 추출할 수 없다. 단 방향이다.
2-3 작은 변화가 전체 값을 바꿔야 한다.
2-4 정해진 길이의 값을 반환해야 한다.
3. Collision - 필연적인 현상
3-1 두 다른 메시지가 같은 동일한 결과를 가질 때
3-2 길이가 지정되어 있기 때문에 어떻게든 중복이 일어날 수 밖에 없다.
3-3 따라서 길이가 길수록 안전하다.
3-4 MD5 128bits, SHA1 160bits, SHA2 -> 224, 256, 384, 512 bits
4. Data Integrity 보장
4-1 데이터가 조금이라도 변할 경우 해시가 맞지 않는다. (Integrity)
4-2 데이터 통신 시에 데이터와 해싱을 같이 보낸다.
4-3 문제는 중간에 가로채서 새로운 메시지를 해싱해서 보낼 수도 있다는 점이다. 이러면 메시지와 해싱 값이 일치한다.
4-3-0 이 문제를 해결하기 위한 결과물이 HMAC이다.
4-3-1 대칭키를 공유하여 대칭키와 메시지를 같이 해싱한 결과(해시값)를 메시지와 보낸다.
4-3-1-1 MAC (Message Authentiation Code) - 메시지 + 대칭키 -> 해싱 -> 해시 값
4-3-1-2 메시지, 키를 결합하는 순서도 중요하다. 순서가 바뀌면 해시값도 바뀐다.
4-3-1-3 => RFC 2014 HMAC (Hash Based Message Authentication Code)
4-3-1-3-1 국제 표준으로 지정된 메시지, 키 결합 및 순서를 지정한 규약
4-3-2 받는 측에서 대칭키와 메시지로 해싱하여 Integrity를 확인할 수 있다.
4-3-3 문제는 어떻게 대칭키를 공유할지다. (Authentication)
'기록' 카테고리의 다른 글
1 warning(s): 1285 mysql is started in --skip-name-resolve mode; (0) | 2023.03.12 |
---|---|
Encryption - 암호화, 복호화 (0) | 2023.02.11 |
Linux : Destop GUI가 실행되지 않을 때 (1) | 2023.02.05 |
AWS : private subnet 서버 접근 2 - Session Manager 사용 (0) | 2023.01.29 |
Vagrant : Ubuntu 22.10 Vagrant libvirt로 nfs mount문제 (0) | 2023.01.05 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 스프링부트
- RestTemplate
- mapping
- form
- 스프링
- MYSQL
- Rest
- WebMvc
- 하이버네이트
- 설정하기
- 자바
- Spring
- Spring Security
- spring boot
- 매핑
- jsp
- Many-To-Many
- Security
- Validation
- Angular
- 상속
- 로그인
- 설정
- XML
- 외부파일
- one-to-one
- crud
- login
- one-to-many
- hibernate