...
Any Responses on Question Set can be persisted separately to ensure the keyset can be used for administrative purposes.
Response Evaluation:
...
QuestionResponseValidateAPI (Async API Behaviour):
API accepts the request payload similar to content state update API. Along with responseKeys in the assessment.
...
Question Set Response Processing flow
...
...
breakoutMode | wide |
---|---|
language | actionscript3 |
Question Set Response Processing Hardening
In Order to minimise the possiblity of Exam Response replays or any other kind of malpractices. Following design enhancement is proposed.
Usage of QuestionSetDigest:
A Hash value of “user-id+questionsetid+timestamp“ is generated as questionSetDigest and sent to client as part of Question Hierarchy.
Same Digest is used in QuestionValidation API request payload to validate the userID and questionSetID tampering.
QuestionList Validation
In order to check for validity of Question inside a QuestionSet. Design proposes the value to be encrypted based on QuestionID List in hierarchy and persist this information against QuestionSetDigest in Redis.
Code Block | ||||
---|---|---|---|---|
| ||||
console.time("dbsave"); var crypto = require('crypto'); var encryptList = []; var string = "sdgxsoksgdaodjqwdhuwdh"; var count = 0; var salt = "salty"; for(var i=0;i<1000000;i++) { var encrypt = crypto.pbkdf2('secret'+i, salt, 10, 64, 'sha512', (err, derivedKey) => { if (err) throw err; }); encryptList.push(encrypt); if(string === encrypt) { if (err) throw err; count++; } } console.log(count); consoleencryptList.logpush(encryptList.lengthencrypt); console.timeEnd("dbsave"); |
Response Times for Benchmarking
Code Block | ||
---|---|---|
| ||
1000000 encrypt generation
dbsave: 4011.281ms
100000 encrypt generation
dbsave: 377.208ms
10000 encrypt generation
dbsave: 57.326ms |
API Impact
...
API
...
Impact
...
QuestionCreate API
...
To create Schema changes to include evaluable as Question Level, to ensure responseKey is generated against solution.
...
QuestionSetCreate API
...
To create Schema changes to include evaluable as Question Level.
...
QuestionHierarchy API
...
Question Hierarchy to generate the questionSetDigest, which is a combination of QuestionSetID and UserID accessing the questionSet.
...
QuestionSetValidateAPI
...
A New API to be introduced details are shared above.
...
ContentStateUpdate API
...
if(string === encrypt) {
count++;
}
}
console.log(count);
console.log(encryptList.length);
console.timeEnd("dbsave"); |
Response Times for Benchmarking
Code Block | ||
---|---|---|
| ||
1000000 encrypt generation
dbsave: 4011.281ms
100000 encrypt generation
dbsave: 377.208ms
10000 encrypt generation
dbsave: 57.326ms |