SEED암호화 ANSI X923 패딩 알고리즘 버그
- 작성자 :
- 김*호
- 작성일 :
- 2018-06-15 19:33:43
- 조회수 :
- 1,346
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
AnsiX923Padding.java 에 구현된 패딩 알고리즘에 버그가 있습니다
source의 길이가 blockSize의 배수일 경우 패딩으로 추가되는 길이는
0이 아니라 blockSize가 되어야 하는데 0으로 처리하게 되어있습니다
일반적인 상황에서 문제가 생기지 않을 수 있으나
예를 들어 blockSize가 16, source 의 길이가 16의 배수, source의 마지막 값이 10 (줄넘김 문자) 인 경우
마지막 10이 패딩으로 추가된 사이즈로 인식되어 10byte가 잘린 채로 복원되는 문제가 생깁니다
이 경우 패딩 결과는 source에서 16바이트 추가되고 0 0 ... 16 의 값이 들어가야합니다
source의 길이가 blockSize의 배수일 경우 패딩으로 추가되는 길이는
0이 아니라 blockSize가 되어야 하는데 0으로 처리하게 되어있습니다
일반적인 상황에서 문제가 생기지 않을 수 있으나
예를 들어 blockSize가 16, source 의 길이가 16의 배수, source의 마지막 값이 10 (줄넘김 문자) 인 경우
마지막 10이 패딩으로 추가된 사이즈로 인식되어 10byte가 잘린 채로 복원되는 문제가 생깁니다
이 경우 패딩 결과는 source에서 16바이트 추가되고 0 0 ... 16 의 값이 들어가야합니다
A
안녕하세요.
표준프레임워크센터 입니다.
일반적으로 암호화 블럭 사이즈는
암호화 소스 사이즈를 기반으로 넉넉하게 설정합니다.
blockSize가 16 경우 UTF-8 > 3바이트 5자를 암호화 문자열로 지정 할 수 있습니다.
blockSize가 16, source 의 길이가 16의 배수면,
일반적이고 정상적인 암호화 테스트 환경이 아닌거 같습니다.
source의 마지막 값이 10 (줄넘김 문자)
blockSize 1024 테스트환경에서 carriage return(CR), line feed(LF) 문자열에 대해 정상 동작을 확인 하였습니다.
다시한번 확인을 부탁드립니다.
감사합니다.
표준프레임워크센터 입니다.
일반적으로 암호화 블럭 사이즈는
암호화 소스 사이즈를 기반으로 넉넉하게 설정합니다.
blockSize가 16 경우 UTF-8 > 3바이트 5자를 암호화 문자열로 지정 할 수 있습니다.
blockSize가 16, source 의 길이가 16의 배수면,
일반적이고 정상적인 암호화 테스트 환경이 아닌거 같습니다.
source의 마지막 값이 10 (줄넘김 문자)
blockSize 1024 테스트환경에서 carriage return(CR), line feed(LF) 문자열에 대해 정상 동작을 확인 하였습니다.
다시한번 확인을 부탁드립니다.
감사합니다.