In this chapter, the practical and development of templet protection algorithm in MATLAB is explained in a consecutive and logical order where step-by-step attack. The terminal of this chapter will be provided with the flow chart that may assist to explicate the methodological analysis of the work in overall. The methodological analysis will be started with the agreement of the graphical user interfaces before the development of salting algorithm took topographic point in the MATLAB GUI map.
3.2 Development of MATLAB GUI – “ TemplateProtectionSystem ” ( TPS )
A graphical user interface ( GUI ) is a pictural interface to a plan. Before go more profoundly on this GUI development, Lashkar-e-Taiba ‘s hold some prevue about MATLAB GUI. A graphical user interface provides the user with a familiar environment in which to work. It contains pushbuttons, toggle buttons, lists, bill of fares, text boxes, and so forth, all of which are already familiar to the user, so that the developer can concentrate on the intent of the application alternatively of the mechanics involved in making things. A GUI-based plan must be prepared for mouse chinks ( or possible keyboard input ) for any GUI component at any clip. Such inputs are known as events, and a plan that responds to events is said to be event driven.
The three chief elements required to get down making a MATLAB Graphical User Interface are:
Components. Each point on a MATLAB GUI ( for illustrations ; pushbuttons, labels, edit boxes ) is a graphical constituent. The types of constituents include graphical controls ( pushbuttons, toggle buttons, edit boxes, lists, skidders etc ) , inactive elements ( prove boxes ) , menus, toolbars, and axes. Graphical controls and text boxes are created by the map “ uicontrol ” , and bill of fares are created by the maps “ uimenu ” and “ uicontextmenu ” . Toolbars are created by maps uitoolbar. Axes, which are used to expose graphical informations, are created by the map axes. In this undertaking, the use of uicontrol and map axes component was widely used during the cryptography of templet protection system.
Containers. The constituents of a GUI must be arranged within a container, which is a window on the computing machine screen. The most common container is a figure. A figure is a window on the computing machine screen that has a rubric saloon along the top, and that can optionally hold bill of fares attached. In the past, figures have been created automatically whenever the information has been plotted. However, empty figures can be created with the map figure, and it can be used to keep any combination of constituents and other containers. The other types of containers are panels ( created by the map uipanel ) and button groups ( created by the map uibutton – group ) . Panels can incorporate constituents or other containers, but it do non hold a rubric saloon and can non hold bill of fares attached. Button groups are particular panels that can pull off groups of wireless buttons or toggle buttons to guarantee that no more than one button in the group is on at any clip. For this undertaking, one container was created as the chief figure called “ TemplateProtectionSystem.fig ” .
Recalls. There must be some manner to execute an action if a user clicks a mouse on a button or types information on a keyboard. A mouse chink or a cardinal imperativeness is an event, and the MATLAB plan must react to each event if the plan is to execute its map. For illustration, if a user chinks on a button, so that event must do the MATLAB codification that implements the map of the button to be executed. The codification executed in response to an event is known as a recall. There must be a recall to implement the map of each graphical constituent on the GUI. Off class in the templet protection system, there are about eight recalls was used to manage all the events.
Template protection utilizing salting method or TemplateProtectionSystem ( TPS ) was ab initio developed by making a “ TemplateProtectionSystem.fig ” as the chief plan of this undertaking. The figure was created by opening new GUI in MATLAB as shown in figure 3.0. When GUI was selected, MATLAB will inquire the user to choose which types of GUIDE template the user want to utilize, and for this undertaking, the space GUI ( default ) was chose as in figure 3.1. GUIDE is the GUI Development Environment. This tool allows a coder to put out the GUI, choosing and alining the GUI constituents to be placed in it. Once the constituents are in topographic point, it was edited their belongingss such as name, colour, size, fount, text to expose, and so away. When usher saves the GUI, it creates a on the job plan, including skeleton maps where all the cryptography is modified to implement the behaviour of the GUI. The working plan was automatically named as “ TemplateProtectionSystem.m ” as the MATLAB m file. The usher tool and chief on the job plan is as shown in Figure 3.2 and Figure 3.3.
Figure 3.0: Making new MATLAB GUI
Figure 3.1: Choice for GUIDE templet
Tab Order Editor
Drag to Resize Design Area
Figure 3.2: The usher / TemplateProtectionSystem.fig tool window.
Figure 3.3: Main working plan
The GUI for templet protection system was created in two versions. The version A was created for decision maker and coder use and version B was created for the general user. Between these two versions does non hold so much differences, the thing that make it different is on the show of the generated salt-cured hash watchword and some information about the logical informations type comparing. For decision maker and coder use, the generated salted hash was allowed to be show and for normal user, this generated salted hash was concealing for the security ground. In add-on, TPS version A will give information about the logical informations type based on Boolean operators and Matlab built in comparing strings map. The GUI constituents that were used for both versions are approximately about 4 Edit Text, 7 Static Text, 5 Push Button and 5 Axes. Most of the constituents are utilizing recall to manage the events. Figure 3.4A and Figure 3.4B shows the created GUI constituents that will be used to manage each event in templet protection system.
Figure 3.4A: The completed TPS in guide tool window ( Version A )
Figure 3.4B: The completed TPS in guide tool window ( Version B )
The algorithm of TPS was created one time the GUI layout completed as in Figure 3.4 and Figure 3.5. The chief thought on developing this TPS is divided into 3 subdivisions, which are initial designation fiting portion based on templet in database, protection portion and hallmark portion to enable TPS user to see the selected individual informations. The following subchapter will explicate about these three parts briefly.
3.3 Entering Template Protection System ( TPS )
Additional login window was created before the user officially accessing the Template Protection System. This system login window will be the first security proof to do certain merely TPS authorise user and decision maker can entree the system. During login event, staff designation figure is needed as input to come in the system. If the input lucifer with the watchword set in the database, so the Template Protection System will automatically look in the new window. Users are allowed to do test on infixing their staff ID non more than 2 times. If the incorrect input was detected on the 3rd test, the login button will inactive and prohibited to come in TPS. The login window was created as in Figure 3.5:
Figure 3.5: Initial login window
The algorithm for this login event was develop by utilizing ramifying statement where if-else statements was used with others MATLAB map. The inserted staffs ID will be match utilizing comparing threading map called strcmp. If the lucifer was true, so the put to deathing MATLAB map was called. For the put to deathing map, evalin was applied to put to death MATLAB look in specified workspace. This login window was created for both TPS version. Unauthorized individual may non be able to entree the system if they do n’t hold the staff ID.
3.4 Development of TPS Algorithms
3.4.1 Initial Identification Matching Part
As planned, the TPS user should infix the designation figure and watchword of the selected individual that want to be show, pressing ENTER button, than the system will look into either the both peculiar are right and matched to the template database or non. So, to develop that thought, the use of Edit Text constituent was used to let the user infixing those peculiar. The algorithm was created under the pushbutton “ ENTER ” recall which named as map pushbutton1_Callback ( hObject, ~ , ~ ) in MATLAB m files. To implement the fiting procedure between the inserted specific with the templet in TPS database, the comparing twine map called strcmp was used during the if-else statement. Strcmp compares the twine to each component of the cell array. For illustration, to do the lone one designation figure and watchword that can fit to the certain templet, both peculiar should be same as created in the algorithm. The sample of fiting component was shown in Figure 3.6:
Figure 3.6: Initial designation fiting algorithm for TPS
The duplicate procedure took topographic point when strcmp ( ‘860923435255 ‘ , icnumber ) compares threading ‘860923435255 ‘ to the each component of cell array icnumber, where the twine is a character vector ( or a 1-by-1 cell array ) and icnumber is a cell array of strings and act as input. The map returns the template way, a logical array that is the same size as icnumber and contains logical 1 ( true ) for those elements of icnumber that are a lucifer, and logical 0 ( false ) for those elements that are non. This strcmp map is instance sensitive in fiting strings, so if the user inserts as non the same as the original designation figure and watchword, it can non fit with any way of the templet. For the designation figure, the Edit Text box was tag as “ icnumber ” and handles the get ( hObject ) map. Get ( hObject, ‘String ‘ ) method will return the value of the belongings ‘String ‘ of the artworks object identified by hObject. This technique was same traveling with the watchword entry and fiting procedure, the of import is the ticket name to place the artworks objects with a user-specified label. The ticket name for the Edit Text box to infix watchword is “ password ” . Figure 3.7 shows the illustration of get ( hObject ) method that applied to identification figure and watchword for having input from user.
Figure 3.7: Example method to acquire input from user
When the authorized user insert the right designation figure and watchword, and the ENTER pushbutton handle the event, the map axes was used to expose the position of database matching. The user credence icon in 430x414x3 size jpeg format was used to expose when the correct inserted peculiar was detected while the invalid user icon was used to expose at the axes when any one of the specific was incorrect and can non be match with the templet database.
For the security sweetening, the algorithm was created with the count method to do certain user can non infix either designation figure or watchword non more than three times. For farther account about this, subchapter 18.104.22.168 will explicate the restriction of input entree. This initial designation fiting portion was finalize when the position icon show at the underside of the watchword edit text box. The following portion of TPS is the watchword beef uping country where in this portion ; the aim of this thesis took topographic point, which is the development of salting watchword.
3.4.2 Password Strengthening Area
22.214.171.124 Salt cardinal generator
After inserted clear text watchword and designation figure was successfully matched with the templet file name, the clear text watchword was proposed in this undertaking to be beef uping to better the security degree during the hallmark. As the chief aim, salting method was applied in this portion. For reappraisal, salt is a random twine of informations used to modify a watchword hash. Salt can be added to the hash to forestall a hit by unambiguously placing a user ‘s watchword, even if another user in the system has selected the same watchword. Salt can besides be added to do it more hard for an aggressor to interrupt into a system by utilizing password hash-matching schemes because adding salt to a watchword hash prevents an aggressor from proving known dictionary words across the full system.
In developing the algorithm, salt was created in the separate MATLAB m files. The m file was named as random twine. This algorithm was created to bring forth random threading that will stand for as a salt key. Random twine was created as figure 3.8:
Figure 3.8: Random String ( salt key ) Algorithm
The algorithm was developed by utilizing the choice graduated table of ASCII codification. ASCII stands for American Standard Code for Information Interchange. Computers can merely understand Numberss, so an ASCII codification is the numerical representation of a character such as ‘a ‘ or ‘ @ ‘ or an action of some kind. Figure 3.9 shows the completed ASCII tabular array for the mention and better understanding about the character choice on the random threading algorithm.
Figure 3.9: ASCII Table
Mentioning to Figure 3.8, the choice of ASCII character was made at the 5th line of the m files ( line 5 ) where “ LetterStore = char ( 97:122 ) ” coding will make up one’s mind which portion of ASCII tabular array will be selected as a generated twine. For this instance, merely lower instance missive want to be used to bring forth twine, so mentioning to Figure 3.9, the character decimal from figure 97 until 122 was chose where the character is a until omega to concatenate during the first hashing. After the character scope was set, the randomisation took topographic point on line 7 ( Figure 3.8 ) where the twine was picked indiscriminately in the scope of a to omega. The length of random twine was set to 20 character per generate. This random threading algorithm is flexible because the length to bring forth twine can be change easy by altering the ( *rand ( 1, 20 ) ) value on the cryptography. This generator was named as map RS1 and will be call in the chief TPS GUI m file to unite with the clear text watchword and first hashing subsequently. The character decimal from figure 91 until 99 was chose where the character is [ to c to concatenate after the 2nd hashing. The symbol character was picked to be randomising as a salt key to do the concluding salted hash watchword stronger. This 2nd salts was named as map RS2 that will be call in the chief TPS algorithm after the 2nd hashing.
126.96.36.199 Password Hashing
Although the salt cardinal algorithm was ready to be concatenate, the salt was non concatenate straight to the clear text watchword. To do the watchword more protected, the clear text input watchword was converted foremost into a message digest utilizing any of several common hash algorithms. The hashing algorithm was named as “ map H = hash ( inp, Methedrine ) ” in MATLAB m files.
In hash algorithm, the input ( inp ) was set to be supported with char, uint8, logical, dual, individual, int8, int16, uint16, int32, uint32, int64 and uint64. If the input is a twine or uint8 variable, it is hashed as usual for a byte watercourse. Other categories are converted into their byte-stream values. The H is the hash digest end product in hexadecimal notation. To do this algorithm more assortment, the hash algorithm ( Methedrine ) was prepared in many types such as MD2, MD5, SHA-1, SHA-256, SHA-384, or SHA-512. These assortments make the decision maker flexible to take which type of hashing privation to be used. Table 3.0 shows the inside informations and differences between those types of hash map.
Table 3.0: Cryptanalytic hash map
A- Base on ballss
Bitwise operation and displacement rotary motion
Bitwise operation and displacement rotary motion
Bitwise operation and displacement rotary motion
Bitwise operation and displacement rotary motion
Bitwise operation and displacement rotary motion
In the hash map algorithm, TPS decision maker can choose any one of the hash algorithm to be used by altering the “ Methedrine ” to MD2, MD5, SHA1, SHA256, SHA384, or SHA512 types. This flexible choice was created by utilizing java bundle called “ java.securty ” . “ java.security.MessageDigest.getInstance ( String algorithm ) ” was imported to the hash map MATLAB m files where this method will calculate the input into the selected hash algorithm. This MessageDigest category provides applications the functionality of a message digest algorithm, such as MD5 or SHA. Message digests are unafraid one-way hash maps that take random-sized informations and end product a fixed-length hash value. A MessageDigest object starts out initialized. The information is processed through it utilizing the update methods. At any point reset can be called to reset the digest. Once all the informations to be updated has been updated, one of the digest methods should be called to full the hash calculation. The digest method can be called once for a given figure of updates. After digest has been called, the MessageDigest object is reset to its early province.
Once the hash map algorithm was wholly develop, the “ h = hash ( inp, Methedrine ) ” map was called under the pushbutton4_callback at the chief TPS m files algorithm for farther agreement.
188.8.131.52 Salted Hash Password
Salted Hash watchword was developed under the pushbutton4_callback. Pushbutton4_callback is represented as the direction button to bring forth salt-cured hash watchword in the TPS. As planned, one time the button pressed by the user, the earlier inserted clear text watchword will be change overing to salted hash watchword that will be used during the template encoding and hallmark procedure to expose the user private informations on the templet.
To better the security degree and the secretiveness of hashed watchword, salt key was non straight concatenate with the clear text watchword. Template protection system used two degree of hashing along with the salt key. The inserted clear text watchword will be convert to hash foremost by naming the “ h = hash ( watchword, Methedrine ) ” map and so this hashed watchword was concatenated with generated random twine by utilizing “ generatedsaltedpassword = strcat ( RS, H ) ” method. This will bring forth salt with hash watchword or called as salt-cured hash watchword. The salt twine was concatenated at the beginning of hash watchword. The agreement of salt-cured hash watchword non ended at this point merely. The salt-cured hash watchword was hashed once more by utilizing hash map algorithm. For this 2nd degree of hashing, the hash map algorithm was duplicate and rename the 2nd map with “ h2 = hash2 ( inp, Methedrine ) ” . To import the 2nd map to the chief TPS cryptography, it can non be the precisely same name with the first hash map. In 2nd degree hashing, the input is non clear text watchword any longer, but the salt-cured hash watchword will be as the input. Figure 3.10 demonstrate the agreement of the salt-cured hash watchword for both degree of hashing.
1st hashing, clear text watchword + hash algorithm
2nd hashing, salted hash + hash algorithm
Figure 3.10: Agreement of Salted Hash Password
The salt-cured hash watchword was be hashed for 2nd clip to keep the confidentiality of the hash watchword. The overall agreement stairss to bring forth the salt-cured hash watchword are shown in Figure 3.11. The briefly analysis on the differences between utilizing merely one degree of hashing with two degree hashing was made in the chapter four of this thesis.
Figure 3.11: Overall agreement stairss bring forthing salt-cured hash watchword
184.108.40.206 Authentication of Generated Salted Hash Password
After the salt-cured hash watchword was successfully generated, this peculiar will be the demand during the concluding measure to protect the templet. As the symbolic of protection, encoding algorithm was used along with the generated salt-cured hash. Here the “ Protect Template ” button took topographic point where the recall was named as “ map encrypt_button_Callback ( hObject, ~ , handles ) ” in TPS algorithm. Protect Template button can merely work after the user generate salted hash watchword.
Under encrypt button map ; the original templet was encrypted utilizing “ imageProcess ” algorithm. The template encoding or known as “ EncImg ” was link with “ imageProcess ” algorithm and “ keyGen ” algorithm. Keygen algorithm took topographic point in the early of TPS, during the duplicate procedure when the user inserted the designation figure and watchword. Each clip the templet matched with the designation figure and watchword, the row size of image templet will put all to zeros foremost, and so the row will be multiply with column. Then, the key was divided with vector size of 8 to bring forth the concluding key value of first row size. This cardinal size will be used during the encoding and decoding procedure. On the encoding side, the bid used to disrupt the templet is EncImg = imageProcess ( Img, key ) and to decode back the protected templet, DecImg = imageProcess ( EncImg, key ) was used.
The most of import portion in this undertaking is to expose the templet or in other words to decode the templet when the user insert the generated salt-cured hash watchword. All the cryptography and direction was developed under map decryptbutton_Callback ( hObject, ~ , ~ ) . There are some differences in developing comparison strategy this portion between TPS version A and version B. For version A, the inserted generated salt-cured hash watchword is compared by utilizing MATLAB comparing threading map, logical informations types Boolean look, and trial operation map as shown in Figure 3.12. By utilizing these three methods, the truth of fiting procedure is display at the MATLAB bid window and workspace for mentions and system accuracy trial. For version B, the input for leting private templet to be display will be match utilizing MATLAB comparing threading map as shown in Figure 3.13.
Figure 3.12: Authentication Algorithm to expose templet ( for TPS version A )
Figure 3.13: Authentication Algorithm to expose templet ( for TPS version B )
In MATLAB, strings and substrings can be compared accurately in several ways such as two strings or parts of two strings can be compared for equality, two single characters can be compared for equality, and strings can be examined to find whether each character is a missive or whitespace [ 13 ] . There are four Matlab maps to compare to strings as a whole like strcmp, strcmpi, strncmp and strncmpi. A few surveies have been made and for this TPS undertaking, strcmp map was chosen to compare two strings as a whole for equality. strcmp determines if two strings are indistinguishable, including any prima and trailing spaces, and return a true ( 1 ) if the strings are indistinguishable. Otherwise, it returns a false ( 0 ) . The advantages of utilizing strcmp are because it can find the instance of letters, and dainties ‘c ‘ as different to ‘C ‘ , which give more truth for the watchword hallmark. Like the others three MATLAB maps, map strcmpi determines if two strings but it are indistinguishable disregarding instance, while map strncmp and strncmpi determines if the first n characters of two strings are indistinguishable, and disregarding instance. strcmp map were used widely in TPS algorithm for both version. Basically Matlab have a few more map that returns a logical consequence. Table 3.1 shows the remainder of MATLAB operations that return a logical true or false. Most mathematics operations are non supported on logical values.
Table 3.1: MATLAB Function that returns a logical consequence
true, A false
Puting value toA trueA orA false
Numeric to logical transition
& A ; ( and ) , | ( or ) , ~ ( non ) , A xor, A any, A all
& A ; & A ; , A ||
Short-circuit AND and OR
==A ( combining weight ) , A ~=A ( Ne ) , A & lt ; A ( lt ) , A & gt ; A ( gt ) , A & lt ; =A ( lupus erythematosus ) , A & gt ; =A ( Ge )
AllA is* maps, A cellfun
strcmp, A strncmp, A strcmpi, A strncmpi
In TPS version A, besides the use of strcmp map, Boolean or logical look besides has been used for extra analysis and hallmark truth trial as shown in Figure 3.12. Boolean or known as relational operators in MATLAB are operators with two numerical or threading operands that yield logical consequence, depending on the relationship between the two operands [ 13 ] . Table 3.2 shows the list of relational operators that able to compare the arithmetic looks, variables, or strings in MATLAB.
Table 3.2: Relational Operators
Not equal to
& gt ;
& gt ; =
Greater than or equal to
& lt ;
& gt ; =
Less than or equal to
The equality operator was widely used in TPS to do certain user infixing the precisely same as the generated salt-cured hash watchword. Equality operator ( == ) returns a true value ( 1 ) when the two values being compared are equal, and false ( 0 ) when the two values being compared are different [ 13 ] . Similarly, non-equivalence operator ( ~= ) returns a false ( 0 ) when the two values being compared are equal, and a true ( 1 ) when the two values being compared are different. This Boolean operators have a failings compare to comparing biting map in MATLAB. Since strings are truly arrays of characters, relational operators can merely compare two strings if they are of equal length. If they are of unequal lengths, the comparing operation will bring forth an mistake [ 13 ] .
As extra prove to demo a logical consequence between generated salt-cured hash watchword with the inserted salt-cured hash watchword during hallmark, MATLAB trial operations map ( mention to Table 3.1 ) besides have been used. The trial operation maps have many types, and for this TPS, “ isstrprop ” was chose. Function “ isstrprop ” is to find whether twine is of specified class. isstrprop ( ‘str ‘ , ‘category ‘ ) returns a logical array the same size as str incorporating logical 1 ( true ) where the elements of str belong to the specified class, and logical 0 ( false ) where they do non. The str input can be a character array, cell array, or any MATLAB numeral type. If str is a cell array, so the return value is a cell array of the same form as str. Alpha was picked as a class for this instance to compare the character form between alphabetical and alphameric character. This trial operation map will put true for those elements of str that is alphabetic.
The twine comparing, relational operation, and test operations map was used along with the ramification statements method. Branchs are MATLAB statements that permit the algorithm to choose and put to death specific subdivisions of codification while jumping other subdivisions of codification [ 13 ] . The if concept has the signifier where the control looks are logical looks that control the operation of the if concept. Mention to Figure 3.13, if isempty ( saltedhash ) is true ( non-zero ) , so the plan executes the statements in Block 1, and skips to the first feasible statement following the terminal. Otherwise, the plan cheques for the position of strcmp ( saltedhash, saltedhashpassword ) . If the comparing twine map is equal or true ( non-zero ) , so the plan executes the statements in Block 2, and skips to the first feasible statement following the terminal. If all control look are zero, so the plan executes the statements in the block associated with else clause.
220.127.116.11 Input Access Limitation
In order to beef up the security of templet protection system ( TPS ) , input entree restriction was created on each input demand in the system. The restriction is made to restrict the figure of test to infix the designation figure, watchword, and generated salted watchword. User merely can seek infixing those peculiar non more than three times if they inserted the incorrect input. To do this process enable, relentless variable was included in most of button recall map in TPS algorithm.
A relentless variable will used to number the figure of chinks that have occurred. When a chink occurs on the pushbutton, Matlab will name the map TemplateProtectionSystem with pushbutton1_Callback as the first statement. Then map TemplateProtectionSystem will name subfunction pushbutton1_Callback. “ handles.count ” was used as a counter each clip the user click the ENTER push button as shown in Figure 3.14. The count was set to “ 1 ” in the initial gap GUI map, and each clip user chink the push button under the pushbutton recall, the count value will increasing and be display at the MATLAB bid window for mention. For this TPS, the maximal count value was set into “ 2 ” . When the 3rd times the peculiar inserted, if it is still incorrect, the system will sound the doorbell and the mistake duologue box will look. The mistake duologue box was created by using “ errordlg ” map in the algorithm and the doorbell warning sound was created by utilizing “ wavread ” and “ sound ( y, Fs ) ” method. The button chink counter besides has been created under decryptbutton_Callback to restrict the test of infixing generated salt-cured watchword to expose the protected templet.
Figure 3.14: Count the figure of click method in TPS
The development of templet protection system started by formalizing the designation figure and clear text watchword of the individual those want to be display in image templet form. Both TPS version was wholly developed as planned, and the salt-cured hash agreement has produced a strong watchword form. As developed, the inserted designation figure and clear text watchword will be formalizing, looking for fiting in the database. Then the user has to change over the clear text watchword by bring forthing salted hash watchword. Once the templet is protected, merely the user that knows the correct generated salt-cured hash watchword able entree the information templet by infixing the generated salt-cured hash watchword and pressing the “ Show User Data ” button to see the information on the templet. The flow chart to stand for general TPS development and the overall operations for the templet protection system are shows in Figure 3.15 and Figure 3.16
Design physical layout for Template Protection System in MATLAB GUIDE
Development of Template Protection System GUI operation and templet matching agreement
Random twine algorithm
Hashing watchword algorithm
Template Encryption Algorithm
Salted hash watchword and hallmark agreement in chief GUI plan
Puting input entree restriction under event managing button
TPS VERSION A
Develop extra map for system truth test – logical informations type method
MATLAB threading comparing map
Relational operators / Boolean look
MATLAB Test operational map
TPS VERSION B
Hiding generated salt-cured hash watchword
Figure 3.15: General Template Protection System Development
Figure 3.16: TPS operational flow chart