2017-09-28 4 views
0

AES의 초기 설정에는 흐릿하지만 키의 크기에 따라 2-14 라운드 (subBytes, shiftRows, mixColumns, addRounKey)를 시작하면 알고리즘 자체가 어떻게 작동 하는지를 이해합니다.cryptoJS 또는 노드의 기본 암호를 사용하여 AES에 대한 암호를 선택하는 방법은 무엇입니까?

내가 따르지 않은 것은 초기 암호 및 설정입니다. 우리는 길이에 관계없이 암호를 선택합니까? 아니면 128 비트, 192 비트 또는 256 비트 암호를 만들어 응용 프로그램 전체에서 사용합니까? cryptojs으로 AES를 사용하는 본 예에서는 예를 들면

:

var myString = "attack at dawn"; 
var myPassword = "superSecretPassword"; 
var encrypted = CryptoJS.AES.encrypt(myString, myPassword); 

해시 통해 myPassword 실행 변수가 128, 192 또는 256 비트의 키를 생성하는 것이다? 최고의 보안을 위해 이미 myPassword을 256 비트 만들어야합니까?

답변

1

crypto-js의 API가 잘못되어 혼란이 100 %입니다.

현실 세계에서 암호화는 암호가 아닌 키를 사용하여 수행됩니다. 암호 만 있으면 암호 기반 키 유도 함수 (예 : pbkdf2, scrypt, bcrypt 또는 argon2)를 사용하여 키로 변환해야합니다.

crypto-j에서 암호화는 키 또는 암호 (두 가지 API 호출)로 수행 할 수 있습니다. crypto-is의 암호 기반 암호화는 비표준이며 비보안 암호 기반 키 유도 기능을 사용합니다.

Upshot : crypto-js 암호 기반 암호화 API를 사용하지 마십시오. 대신 키와 IV (128 비트, 192 비트 또는 256 비트)를 사용하는 API를 사용하십시오.

참고 문헌 :

+0

이 게시물을 섹션 감사 참조 Artjom B.에서 답을 볼! 이 함수는 256 비트 키, iv 및 salt를 생성합니다. 'openssl enc -aes-256-cbc -k 비밀 -P -md sha1'. 가능한 경우 IV가 어떻게 작동하는지 조금 설명 할 수 있습니까? 보안 및 암호화가 처음인데이 작업을 확실히하고 싶습니다. 또한 Crypto-JS API에서 256 비트 암호화를 강제하는 방법이나 key + iv를 지정하는 방법을 볼 수 없었지만 지금은 검색을 시작합니다. – VDog