Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...

...

breakoutModewide
languageactionscript3
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.

Image Added

Code Block
breakoutModewide
languageactionscript3
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
breakoutModewide


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
breakoutModewide


1000000 encrypt generation
dbsave: 4011.281ms


100000 encrypt generation
dbsave: 377.208ms


10000 encrypt generation
dbsave: 57.326ms