ECB 암호화 시 plainText 보다 더 긴 cipher text 반환 오류
seed 128 ecb 암호화 시 마지막 블럭이 128비트로 떨어짐에도 불구하고 128비트의 블록을 추가로 붙이는 코드가 존재했고, 일부로 패딩을 추가해 블록의 크기를 맞춰서 plainText를 암호화 시켜도 원래의 크기의 128 비트가 추가 되었다.
이로 인해 전문에서 설정한 암호화의 크기와 실제 request로 보내는 파라미터의 크기가 달라 에러가 발생하였고 LG전자에 문의할 예정이다.
암호화 샘플코드를 본 결과 16비트가 붙는 경우에 대해서 subString을 해주고 있었다. ECB의 경우 블록을 그대로 붙이기 때문에 추가된 비트만 제거해 주면 된다.
즉, 비트가 맞지 않는 경우 강제로 맞추기 위해 의미없는 패딩값을 붙여 암호화를 하는데, 암호화 모듈에서 비트가 128비트의 배수 일 경우 128비트를 또 생성해서 만들고 있었다.
이를 해결하기 위해 생성화 cipher text에서 뒤에서 128비트를 제거하고 있었고, 우리도 그런식으로 해결하였다.
(정확하게 말하자면, 128bit가 아닌 256bit이다. 왜냐하면 그냥 암호화된 값을 HexString으로 보내고 있었기 때문에 2배가 되기 때문이다.)
댓글남기기