SEED암호화 ANSI X923 패딩 알고리즘 버그
- 작성자 :
- 김*호
- 작성일 :
- 2018-06-19 11:16:38
- 조회수 :
- 1,621
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
blockSize가 16이고 source 의 길이가 16의 배수인게 정상적이지 않은 환경입니까?
SEED암호화의 블럭 사이즈가 16바이트입니다. 이것이 비정상인가요?
아니면 암호화 데이터가 16바이트의 배수인게 비정상인가요?
말씀하신 UTF8 3byte문자라고 해도 16글자 입력하면 48바이트로 16의 배수입니다
무엇이 정상적이지 않다는건지요?
제가 확인한 소스와 버전이 다른것 같아 최신소스를 받아서 다시 확인했습니다
다른 예를 들어볼게요
blockSize를 1024로 하고 source를 1023 바이트로 임의의 데이터를 넣은 다음
단순히 addPadding, removePadding만 호출해보세요
결과의 길이가 1023 인지 1024 인지 확인해보세요
SEED암호화의 블럭 사이즈가 16바이트입니다. 이것이 비정상인가요?
아니면 암호화 데이터가 16바이트의 배수인게 비정상인가요?
말씀하신 UTF8 3byte문자라고 해도 16글자 입력하면 48바이트로 16의 배수입니다
무엇이 정상적이지 않다는건지요?
제가 확인한 소스와 버전이 다른것 같아 최신소스를 받아서 다시 확인했습니다
다른 예를 들어볼게요
blockSize를 1024로 하고 source를 1023 바이트로 임의의 데이터를 넣은 다음
단순히 addPadding, removePadding만 호출해보세요
결과의 길이가 1023 인지 1024 인지 확인해보세요
A
안녕하세요.
표준프레임워크 센터 입니다.
blockSize는 파일 암호화 처리시 사용되는 Buffer 값입니다.
이전 답변에서는 Buffer처리시 UTF8 > byte를 안내 드리려던 것입니다.
기본값으로 1024로 가이드 하고 있습니다.
위키가이드)
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:encryption_decryption
ARIA 알고리즘 수행시
일부 문자열 대해 한글 + 종료 문자가 carriage return(CR) + line feed(LF)
문자로 끝날때 암호화/복호화 처리시 문제가 있는것 같습니다.
아리아 알고리즘은 현재 kisa에서 보급하고 배포하고 있습니다.
https://seed.kisa.or.kr/iwt/ko/sup/EgovAriaInfo.do
ARIA 알고리즘 문제에 대해서는 kisa에 문의를 하여야 될것 같습니다.
센터에서 가이드 하는 해결 방안은
URLEncoder.encode, URLDecoder.decode를 사용해서 암호화/복호화 처리시
정상 동작 여부를 확인 하였습니다.
예시)
cryptoService.encrypt(URLEncoder.encode(str).getBytes("UTF-8"), password)
URLDecoder.decode(new String(decrypted, "UTF-8")))
감사합니다.
표준프레임워크 센터 입니다.
blockSize는 파일 암호화 처리시 사용되는 Buffer 값입니다.
이전 답변에서는 Buffer처리시 UTF8 > byte를 안내 드리려던 것입니다.
기본값으로 1024로 가이드 하고 있습니다.
위키가이드)
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:encryption_decryption
ARIA 알고리즘 수행시
일부 문자열 대해 한글 + 종료 문자가 carriage return(CR) + line feed(LF)
문자로 끝날때 암호화/복호화 처리시 문제가 있는것 같습니다.
아리아 알고리즘은 현재 kisa에서 보급하고 배포하고 있습니다.
https://seed.kisa.or.kr/iwt/ko/sup/EgovAriaInfo.do
ARIA 알고리즘 문제에 대해서는 kisa에 문의를 하여야 될것 같습니다.
센터에서 가이드 하는 해결 방안은
URLEncoder.encode, URLDecoder.decode를 사용해서 암호화/복호화 처리시
정상 동작 여부를 확인 하였습니다.
예시)
cryptoService.encrypt(URLEncoder.encode(str).getBytes("UTF-8"), password)
URLDecoder.decode(new String(decrypted, "UTF-8")))
감사합니다.